Obtener Facebook demanda de nativo en iOS
En este documento se describe el proceso para recuperar recursos de anuncios nativos que se mostrarán en el SDK de Audience Network de Facebook.
Nota:
Este SDK requiere Xcode versión 15.0 o posterior y la aplicación debe tener como destino la versión 12.0 o posterior de iOS.
Asegúrese de que están instalados los SDK adecuados.
El SDK de Xandr y el paquete Xandr-FAN-Demand tendrán que instalarse. Use CocoaPods.
Una vez que tenga CocoaPods instalado.
Use Terminal o el editor de línea de comandos que prefiera, vaya al directorio del proyecto y cree un podfile.
pod init
Con un editor de texto, abra el podfile recién creado. Establezca la plataforma en 12.0 (AppNexus siempre admite dos versiones de iOS desde la versión actual) y agregue el pod "AppNexusSDX" al destino.
# iOS: Podfile config to include our SDK platform :ios, '12.0' project 'SampleApp' target 'SampleApp' do pod 'AppNexusSDK' pod 'AppNexusSDK/FacebookCSRAdapter' end
Guarde los cambios y vuelva a Terminal y escriba:
pod install
Cocoapods descargará el SDK de AppNexus y FacebookCRSAdapter y también creará un área de trabajo en el directorio del proyecto. Si el proyecto está abierto actualmente, ciérrelo y abra el área de trabajo.
Inicializar el SDK de Audience Network de Facebook
Al principio del ciclo de vida de la aplicación, inicialice el SDK de Audience Network de Facebook (FBAudienceNetworkAds
) como se muestra en el bloque de código siguiente.
[FBAudienceNetworkAds
initializeWithSettings:fbAdSettingObject
completionHandler:^(FBAdInitResults *results) {
if (results.success) {
[ANFBSettings setFBAudienceNetworkInitialize:YES];
complete(nil);
} else {
[ANFBSettings setFBAudienceNetworkInitialize:NO];
complete(error);
}
}];
En la inicialización correcta de FBAudienceNetworkAds
, setFBAudienceNetworkInitialize
se establece en YES
, de lo contrario, se establece como NO
. Si el valor se establece como YES
se inicializa el SDK de Audience Network, getBidderToken
el método del SDK de Audience Network devolvería el Facebook token del licitador para continuar. Para los valores establecidos como NO
, el getBidderToken
método devolverá nil.
A partir de iOS 14, la aplicación publisher debe establecer un nuevo conjunto de APIAdvertiserTrackingEnabled para cumplir las obligaciones de directiva de iOS para usar el SDK de Audience Network. Se agregó una nueva API setAdvertiserTrackingEnabled a FBAdSettings que solo funciona en iOS 14 (y versiones posteriores) con el SDK de FacebookAd 6.0.0.
// 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];
Create solicitud de anuncio nativa y carga de anuncios
Nota:
Conserve una referencia a la solicitud hasta que se devuelva una respuesta.
self.nativeAdRequest= [[ANNativeAdRequest alloc] init];
self.nativeAdRequest.placementId = @"18793423";
self.nativeAdRequest.delegate = self;
[self.nativeAdRequest loadAd];
Controlar la respuesta de FBNativeBanner
Create un diseño para FBNativeBanner. Puede seguir el ejemplo proporcionado por Facebook.
Si se devuelve una respuesta correcta:
- (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
}
}
En un error de respuesta:
- (void)adRequest:(ANNativeAdRequest *)request didFailToLoadWithError:(NSError *)error withAdResponseInfo:(ANAdResponseInfo *)adResponseInfo{
NSLog(@"didFailToLoadWithError");
}
Registro de la vista para el seguimiento
Llame al método registerViewForTracking del objeto ANAdAdapterCSRNativeBannerFacebook.
Para MediaView con clickableViews
/*registerViewForTracking using MediaView with Click Tracker */
[fbNativeBanner registerViewForTracking:self.adUIView
withRootViewController:self
iconView:self.adIconView
clickableViews:@[self.adUIView]];
Para MediaView sin vistas en las que no se puede hacer clic
/*registerViewForTracking using MediaView without Click Tracker */
[fbNativeBanner registerViewForTracking:self.adUIView
withRootViewController:self
iconView:self.adIconView];
Para ImageView con vistas en las que se puede hacer clic (sin MediaView)
/* registerViewForTracking using Image View with Click Tracker */
[fbNativeBanner registerViewForTracking:self.adUIView
withRootViewController:self
iconImageView:self.imageView
clickableViews:@[self.adUIView]];
Para ImageView sin vistas en las que no se puede hacer clic (sin MediaView)
/*registerViewForTracking using Image View without Click Tracker */
[fbNativeBanner registerViewForTracking:self.adUIView
withRootViewController:self
iconImageView:self.imageView];
Anular el registro de la vista
Cuando finalice la visualización del anuncio, la vista debe anular el registro.
self.nativeAdResponse = nil; // It will handle ad unregister views