iOS でネイティブFacebook需要を得る
このドキュメントでは、Facebookの Audience Network SDK に表示するネイティブ広告アセットを取得するプロセスについて説明します。
注意
この SDK には Xcode バージョン 15.0 以上が必要であり、アプリは iOS バージョン 12.0 以降をターゲットにする必要があります。
Xandr SDK と Xandr-FAN-Demand パッケージをインストールする必要があります。 CocoaPods を使用します。
CocoaPods がインストールされたら。
ターミナルまたは任意のコマンド ライン エディターを使用し、プロジェクト ディレクトリに移動し、ポッドファイルを作成します。
pod init
テキスト エディターを使用して、新しく作成した podfile を開きます。 プラットフォームを 12.0 に設定し (AppNexus は常に現在のリリースから 2 つの iOS リリースをサポートしています)、ポッド 'AppNexusSDX' をターゲットに追加します。
# iOS: Podfile config to include our SDK platform :ios, '12.0' project 'SampleApp' target 'SampleApp' do pod 'AppNexusSDK' pod 'AppNexusSDK/FacebookCSRAdapter' end
変更を保存し、ターミナルに戻り、次のように入力します。
pod install
Cocoapods は AppNexus SDK と FacebookCRSAdapter の両方をダウンロードし、プロジェクト ディレクトリにワークスペースも作成します。 プロジェクトが現在開いている場合は、プロジェクトを閉じてワークスペースを開きます。
アプリのライフサイクルの早い段階で、以下のコード ブロックに示すように、Facebookの Audience Network SDK (FBAudienceNetworkAds
) を初期化します。
[FBAudienceNetworkAds
initializeWithSettings:fbAdSettingObject
completionHandler:^(FBAdInitResults *results) {
if (results.success) {
[ANFBSettings setFBAudienceNetworkInitialize:YES];
complete(nil);
} else {
[ANFBSettings setFBAudienceNetworkInitialize:NO];
complete(error);
}
}];
のFBAudienceNetworkAds
setFBAudienceNetworkInitialize
初期化が成功すると、 が にYES
設定されます。それ以外の場合は としてNO
設定されます。 値がとしてYES
設定されている場合、つまり Audience Network SDK が初期化されている場合、 getBidderToken
Audience Network SDK のメソッドは、さらに進むには、Facebook Bidder トークンを返します。 としてNO
getBidderToken
設定された値の場合、メソッドは nil を返します。
iOS 14 以降、Publisher App では、Audience Network SDK を使用するための iOS ポリシーの義務を果たすために、新しい API setAdvertiserTrackingEnabled を設定する必要があります。 FacebookAd SDK 6.0.0 で iOS 14 以降でのみ機能する FBAdSettings に、新しい API setAdvertiserTrackingEnabled が追加されました。
// Set the flag as true if a user provides consent
[FBAdSettings setAdvertiserTrackingEnabled:YES];
// Set the flag as false if a user disallows tracking
[FBAdSettings setAdvertiserTrackingEnabled:NO];
注意
応答が返されるまで、要求への参照を保持します。
self.nativeAdRequest= [[ANNativeAdRequest alloc] init];
self.nativeAdRequest.placementId = @"18793423";
self.nativeAdRequest.delegate = self;
[self.nativeAdRequest loadAd];
FBNativeBanner のレイアウトを作成します。 Facebookによって提供される例に従うことができます。
成功した応答が返された場合:
- (void)adRequest:(ANNativeAdRequest *)request didReceiveResponse:(ANNativeAdResponse *)response {
// (code which loads the view)
self.nativeAdResponse = response;
self.adTitleLabel.text = self.nativeAdResponse.title;
self.bodyLabel.text = self.nativeAdResponse.body;
self.adSponsoredLabel.text = self.nativeAdResponse.sponsoredBy;
if(self.nativeAdResponse.customElements[kANNativeCSRObject] && self.nativeAdResponse.customElements[kANNativeCSRObject] isKindOfClass:[ANAdAdapterCSRNativeBannerFacebook class]) {
ANAdAdapterCSRNativeBannerFacebook *fbNativeBanner = (ANAdAdapterCSRNativeBannerFacebook *)response.customElements[kANNativeCSRObject];
// CSR registerViewForTracking (see example below)
}else {
// Non CSR registerViewForTracking
// See native ad examples here: show-native-ads-on-ios.md
}
}
応答エラーの場合:
- (void)adRequest:(ANNativeAdRequest *)request didFailToLoadWithError:(NSError *)error withAdResponseInfo:(ANAdResponseInfo *)adResponseInfo{
NSLog(@"didFailToLoadWithError");
}
ANAdAdapterCSRNativeBannerFacebook オブジェクトの registerViewForTracking メソッドを呼び出します。
/*registerViewForTracking using MediaView with Click Tracker */
[fbNativeBanner registerViewForTracking:self.adUIView
withRootViewController:self
iconView:self.adIconView
clickableViews:@[self.adUIView]];
/*registerViewForTracking using MediaView without Click Tracker */
[fbNativeBanner registerViewForTracking:self.adUIView
withRootViewController:self
iconView:self.adIconView];
/* registerViewForTracking using Image View with Click Tracker */
[fbNativeBanner registerViewForTracking:self.adUIView
withRootViewController:self
iconImageView:self.imageView
clickableViews:@[self.adUIView]];
/*registerViewForTracking using Image View without Click Tracker */
[fbNativeBanner registerViewForTracking:self.adUIView
withRootViewController:self
iconImageView:self.imageView];
広告の表示が完了したら、ビューの登録を解除する必要があります。
self.nativeAdResponse = nil; // It will handle ad unregister views