iOS 앱에 전면 광고 추가

Audience Network를 사용하면 Facebook 광고를 통해 iOS 앱에서 수익을 창출할 수 있습니다. 전면 광고는 앱에 표시할 수 있는 전체 화면 광고입니다. 이 가이드에 따라 이 광고 유닛의 유형을 표시하세요. 또는 다른 종류의 광고 유닛에 관심이 있으면 사용 가능한 유형의 리스트를 확인하세요.

다음 전면 광고 노출 위치를 구현해 보겠습니다.



1단계: 전면 광고 보기 읽어들이기 및 표시

2단계: 노출 및 클릭 로깅 확인하기

3단계: 광고가 표시되지 않을 때 디버깅하는 방법

4단계: 광고 통합 테스트

1단계: 전면 광고 보기 읽어들이기 및 표시

계속하기 전에 Audience Network 시작하기iOS 시작하기 가이드를 완료했는지 확인하세요.

  1. iOS 시작하기 가이드에서 새로운 프로젝트를 만들고 FBAudienceNetwork를 가져와서 ViewControllerFBInterstitialAdDelegate 프로토콜을 구현하도록 선언한 다음, 전면 광고 유닛에 대한 인스턴스 변수를 추가합니다.
    import UIKit
    import FBAudienceNetwork
    
    class ViewController: UIViewController, FBInterstitialAdDelegate {
      private var interstitialAd: FBInterstitialAd?
    }
    #import <UIKit/UIKit.h>
    @import FBAudienceNetwork;
    
    @interface ViewController : UIViewController <FBInterstitialAdDelegate>
    @property (nonatomic, strong) FBInterstitialAd *interstitialAd;
    @end

  2. 다음으로 View Controller의 viewDidLoad 메서드에서 광고 개체를 인스턴스화하고 interstitialAdDidLoad를 구현합니다.
    override func viewDidLoad() {
      super.viewDidLoad()
    
      // Instantiate an InterstitialAd object.
      // NOTE: the placement ID will eventually identify this as your app. You can ignore it while you are testing
      // and replace it later when you have signed up.
      // While you are using this temporary code you will only get test ads and if you release
      // your code like this to the App Store your users will not receive ads (you will get a 'No Fill' error).
      let interstitialAd = FBInterstitialAd(placementID: "YOUR_PLACEMENT_ID")
      interstitialAd.delegate = self
    
      // For auto play video ads, it's recommended to load the ad at least 30 seconds before it is shown
      interstitialAd.load()
      
      self.interstitialAd = interstitialAd
    }
    
    func interstitialAdDidLoad(_ interstitialAd: FBInterstitialAd) {
      guard interstitialAd.isAdValid else {
        return
      }
      print("Ad is loaded and ready to be displayed")
      interstitialAd.show(fromRootViewController: self)
    }
    - (void)viewDidLoad 
    {
      [super viewDidLoad];
    
      // Instantiate an InterstitialAd object. 
      // NOTE: the placement ID will eventually identify this as your app. You can ignore it while you are testing 
      // and replace it later when you have signed up.
      // While you are using this temporary code you will only get test ads and if you release
      // your code like this to the App Store your users will not receive ads (you will get a 'No Fill' error).
      self.interstitialAd = [[FBInterstitialAd alloc] initWithPlacementID:@"YOUR_PLACEMENT_ID"];
    
      self.interstitialAd.delegate = self;
    
      // For auto play video ads, it's recommended to load the ad at least 30 seconds before it is shown
      [self.interstitialAd loadAd];
    }
    
    - (void)interstitialAdDidLoad:(FBInterstitialAd *)interstitialAd
    {
      NSLog(@"Ad is loaded and ready to be displayed");
    
      if (interstitialAd && interstitialAd.isAdValid) {
        // You can now display the full screen ad using this code:
        [interstitialAd showAdFromRootViewController:self];
      }
    }

  3. YOUR_PLACEMENT_ID에 표시되는 ID는 테스트 목적으로만 사용하는 임시 ID입니다.

    라이브 코드에서 이 임시 ID를 사용할 경우 사용자가 광고를 수신하지 않습니다(No Fill 오류 발생). 테스트 완료 후 여기로 다시 돌아와 이 임시 ID를 라이브 노출 위치 ID로 바꾸어야 합니다.

    라이브 노출 위치 ID를 생성하는 방법은 Audience Network 설정을 참조하세요.

    빌드 타겟으로 기기를 선택한 후 위의 코드를 실행하면 다음과 같이 표시됩니다.

시뮬레이터에서 광고를 게재할 때 테스트 광고를 보려면 설정을 테스트 모드로 변경하세요, 자세한 내용은 테스트 모드 사용 방법을 참조하세요.

광고가 화면에 표시되는 중에는 FBInterstitialAd에서 loadAd를 호출하지 마세요. 나중에 사용하기 위해 다른 FBInterstitialAd를 읽어들어야 하는 경우 사용자가 현재의 광고를 닫은 후에 가능합니다(예: interstitialAdDidClose 콜백에서 가능).

2단계: 노출 및 클릭 로깅 확인하기

또는 사용자에게 광고가 표시되거나 사용자가 광고를 클릭하거나 닫은 경우를 처리하기 위해 다음과 같은 함수를 추가할 수 있습니다.

func interstitialAdWillLogImpression(_ interstitialAd: FBInterstitialAd) {
  print("The user sees the ad")
  // Use this function as indication for a user's impression on the ad.
}

func interstitialAdDidClick(_ interstitialAd: FBInterstitialAd) {
  print("The user clicked on the ad and will be taken to its destination")
  // Use this function as indication for a user's click on the ad.
}

func interstitialAdWillClose(_ interstitialAd: FBInterstitialAd) {
  print("The user clicked on the close button, the ad is just about to close")
  // Consider to add code here to resume your app's flow
}

func interstitialAdDidClose(_ interstitialAd: FBInterstitialAd) {
  print("The user clicked on the close button, the ad is just about to close")
  // Consider to add code here to resume your app's flow
}
- (void)interstitialAdWillLogImpression:(FBInterstitialAd *)interstitialAd 
{
  NSLog(@"The user sees the ad");
  // Use this function as indication for a user's impression on the ad.
}

- (void)interstitialAdDidClick:(FBInterstitialAd *)interstitialAd
{
  NSLog(@"The user clicked on the ad and will be taken to its destination");
  // Use this function as indication for a user's click on the ad.
}

- (void)interstitialAdWillClose:(FBInterstitialAd *)interstitialAd
{
  NSLog(@"The user clicked on the close button, the ad is just about to close");
  // Consider to add code here to resume your app's flow
}

- (void)interstitialAdDidClose:(FBInterstitialAd *)interstitialAd
{
  NSLog(@"Interstitial had been closed");
  // Consider to add code here to resume your app's flow
}

3단계: 광고가 표시되지 않을 때 디버깅하는 방법

View Controller 구현 파일에 광고 읽어들이기 실패를 처리하기 위한 다음 함수를 추가하고 구현합니다.

func interstitialAd(_ interstitialAd: FBInterstitialAd, didFailWithError error: Error) {
  print("Interstitial ad failed to load with error: \(error.localizedDescription)")
}
- (void)interstitialAd:(FBInterstitialAd *)interstitialAd didFailWithError:(NSError *)error
{
  NSLog(@"Interstitial ad failed to load with error: %@", error);
}

표시할 광고가 없을 경우 error.code1001로 설정되어 interstitialAd:didFailWithError:가 호출됩니다. 자체 맞춤 설정 보고 또는 미디에이션 레이어를 사용할 경우, 코드 값을 검사하고 이 사례를 탐지하는 것이 좋습니다. 이 경우에는 다른 광고 네트워크로 폴백해도 되지만 그 직후에 광고를 다시 요청하지 마세요.

다음 단계

  • 네이티브 광고 사용 방법을 보여주는 코드 샘플을 확인하세요. NativeAdSample은 SDK의 일부로 사용할 수 있으며, FBAudienceNetwork/samples 폴더에서 찾을 수 있습니다. Xcode를 사용하여 프로젝트를 열고 기기나 시뮬레이터에서 실행하세요.