2015-12-21 7 views
13

aşağıdaki kod satırı benim UI yığını ben arka plan iş parçacığı zaman uyumsuz bunu gerçekleştirirken koyarak denedim ama yardımcı olmadıFBAudienceNetwork: FBMediaView içine FBNativeAd ayarı UI

adMediaView.nativeAd = nativeAd 
// adMediaView - FBMediaView 
// nativeAd - FBNativeAd 

yapar dizer. Düzeltmenin bir yolu var mı?

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),{ 
    adMediaView.nativeAd = nativeAd 
}); 
  • Ben bakla aracılığıyla FBAudienceNetwork yüklenmiş ve bunu şimdi güncelledik. Ben son sürüm 4.7.0

    pod 'FBAudienceNetwork' 
    

cevap

-1

NativeAdView bir reklam oluşturmak için FBMediaView kullanır. FBNativeAd başlatır ve bir istemek için Görünüm Kontrolörünün uygulama dosyasındaki bir yöntemi ekleyin,

@import FBAudienceNetwork; // import Audience Network module 

@interface MyViewController : UIViewController <FBNativeAdDelegate> 
    // Other code might go here... 
    @property (weak, nonatomic) IBOutlet UIImageView *adIconImageView; 
    @property (weak, nonatomic) IBOutlet UILabel *adTitleLabel; 
    @property (weak, nonatomic) IBOutlet UILabel *adBodyLabel; 
    @property (weak, nonatomic) IBOutlet UIButton *adCallToActionButton; 
    @property (weak, nonatomic) IBOutlet UILabel *adSocialContextLabel; 
    @property (weak, nonatomic) IBOutlet UILabel *sponsoredLabel; 

    @property (weak, nonatomic) FBMediaView *adCoverMediaView; 

    @property (weak, nonatomic) IBOutlet UIView *adView; 
@end 

Ardından: Şimdi, View Controller başlık dosyasına bir açıklamadan yanı sıra FBNativeAdDelegate protokolünü beyan ve UI .XIB için örnek değişkenleri bağlamak reklam yüklemek için:

FBNativeAd *nativeAd; 
FBAdchoicesView *adChoicesView; 

- (void)showNativeAd 
{ 
    nativeAd = [[FBNativeAd alloc] initWithPlacementID:@"YOUR_PLACEMENT_ID"]; 
    nativeAd.delegate = self; 
    [nativeAd loadAd]; 
} 

Şimdi kodunu ekledikten o reklamı yüklemek için, yükleme hatalarını işlemek için aşağıdaki işlevleri ekleyin ve reklamı oluşturmak için bu yüklendikten sonra:

- (void)nativeAdDidLoad:(FBNativeAd *)nativeAd 
{ 
    [self.adTitleLabel setText:nativeAd.title]; 
    [self.adBodyLabel setText:nativeAd.body]; 
    [self.SocialContextLabel setText:nativeAd.socialContext]; 
    [self.sponsoredLabel setText:@”Sponsored”]; 
    [self.adCallToActionButton setTitle:nativeAd.callToAction]; 

    [nativeAd.icon loadImageAsyncWithBlock:^(UIImage *image) { 
    [self.adIconImageView setImage:image];  
    }]; 

    // Allocate a FBMediaView to contain the cover image or native video asset 
    adCoverMediaView = [[FBMediaView alloc] initWithFrame:coverFrame]]; 
    [adCoverMediaView setNativeAd:nativeAd]; 

    // Add adChoicesView 
    adChoicesView = [[FBAdChoicesView alloc] initWithNativeAd:nativeAd]; 
    [adView addSubview:adChoicesView]; 
    [adChoicesView updateFrameFromSuperview]; 

    // Register the native ad view and its view controller with the native ad instance 
    [nativeAd registerViewForInteraction:adView withViewController:self]; 
} 

- (void)nativeAd:(FBNativeAd *)nativeAd didFailWithError:(NSError *)error 
{ 
    NSLog(@"Ad failed to load with error: %@", error); 
} 

Yerel reklam kapağı görüntüsünü görüntülemek için, hem görüntü hem de video varlıklarını görüntüleyebilen Facebook İzleyici Ağı MediaView kullanmanız önerilir.

Referans: https://developers.facebook.com/docs/audience-network/ios/native-api

+0

Bu soru nasıl yanıtlanır? Şimdiye kadar uygulamıştım. UI takılı kalmayı nasıl düzeltebilirim? – Luda

+0

Eğer siz de dispatch_async 'gibi yapabilirsin sağlanan Bilginiz göre olan mesele ne söz etmedi (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^(boşluk) { // Arkaplan çalışması dispatch_async (dispatch_get_main_queue(),^(void) // Ana iş parçacığı çalışması (genellikle UI) adMediaView.nativeAd = nativeAd }); }); ' –

+0

Bunu denedim. Çalışmadı. Kodunu bir cihazda mı çalıştırdın? UI'niz gecikmedi mi? – Luda