2016-03-02 6 views
8

FBNativeAdsManagerDelegate denilen ama vermedi.Facebook Yerel Reklamlar FBNativeAdsManagerDelegate uygulama yöntemleri <code>UIViewController</code> sınıfında düzgün çalışıyor Facebook Yerleşik Reklamlar

CustomFBAd.h dosya

@import FBAudienceNetwork; 

#import <Foundation/Foundation.h> 

@protocol OnFBNativeAdLoadedDelegate<NSObject> 

- (void)onFBNativeAdLoaded:(UIView *)adView; 

@end 

@interface CustomFBAd : NSObject 

@property (nonatomic,weak) id <OnFBNativeAdLoadedDelegate>delegate; 

-(void)requestNativeAd:(NSString *)FaceBookPlacementID; 
@end 

CustomFBAd.m dosya

#import "CustomFBAd.h" 

@interface CustomFBAd()<FBNativeAdsManagerDelegate,FBNativeAdDelegate> 

@property (nonatomic, strong) FBNativeAdsManager *manager; 
@property (nonatomic, weak) FBNativeAdScrollView *scrollView; 

@end 
@implementation CustomFBAd 

-(void)requestNativeAd:(NSString *)FaceBookPlacementID{ 
    if(FaceBookPlacementID.length != 0){ 
     FBNativeAdsManager *manager = [[FBNativeAdsManager alloc] initWithPlacementID:FaceBookPlacementID forNumAdsRequested:5]; 
     manager.delegate = self; 
     [FBAdSettings addTestDevice:@"cf1bb93becbe6e31f26fdf7d80d19b4ae225afaa"]; 
     [manager loadAds]; 
     self.manager = manager; 
    } 
} 

#pragma mark - FBNativeAdDelegate implementation 

- (void)nativeAdDidClick:(FBNativeAd *)nativeAd 
{ 
    // NSLog(@"Native ad was clicked."); 
} 

- (void)nativeAdDidFinishHandlingClick:(FBNativeAd *)nativeAd 
{ 
    // NSLog(@"Native ad did finish click handling."); 
} 

- (void)nativeAdWillLogImpression:(FBNativeAd *)nativeAd 
{ 
    // NSLog(@"Native ad impression is being captured."); 
} 

#pragma mark FBNativeAdsManagerDelegate 

-(void)nativeAdDidLoad:(FBNativeAd *)nativeAd 
{ 

} 

- (void)nativeAdsLoaded 
{ 
    NSLog(@"Native ads loaded, constructing native UI..."); 

    if (self.scrollView) { 
     [self.scrollView removeFromSuperview]; 
     self.scrollView = nil; 
    } 

    FBNativeAdScrollView *scrollView = [[FBNativeAdScrollView alloc] initWithNativeAdsManager:self.manager withType:FBNativeAdViewTypeGenericHeight120]; 
    scrollView.xInset = 0; 
    scrollView.delegate = self; 
    self.scrollView = scrollView; 

    [self.delegate onFBNativeAdLoaded:self.scrollView]; 
} 

- (void)nativeAdsFailedToLoadWithError:(NSError *)error 
{ 
    NSLog(@"Native ads failed to load with error: %@", error); 
} 

@end 

I

olarak requestNativeAd yöntemde FBNativeAdsManager 'in temsilci set mi Yukarıdaki kod belirtildiği gibi

Ve ayrıca FBNativeAdsManagerDelegate olarak kullanılan 0,

@interface CustomFBAd()<FBNativeAdsManagerDelegate,FBNativeAdDelegate> 

Ve diyoruz FBNativeAdDelegate

CustomFBAd *objFBAd = [[CustomFBAd alloc]init]; 
    objFBAd.delegate = self; 
    [objFBAd requestNativeAd:@"my_FB_placement_Id"]; 

(Not: Ben UIViewController kullanmak eğer aynı kod çalışır) bir ipucu olarak bu kod? Teşekkür

+0

hala cevap verebilir Facebook'tan kimse var mı yardımcı olur umarım? –

+1

Temsilci yöntemleriniz uiviewcontroller'da çağrılırsa, kodla ilgili bir sorun var demektir. Denetleyicinizde güçlü bir CustomFBAd referansına sahip olmanız gerektiğini düşünüyorum. Diğer referansların hiçbiri CustomFBAd'inizi tuttuğundan dolayı. o yardımcı olur umarım :) –

cevap

0

uiviewcontroller denilen e, kod ile ilgili bir sorun var. Denetleyicinizde güçlü bir CustomFBAd referansına sahip olmanız gerektiğini düşünüyorum. Diğer referansların hiçbiri CustomFBAd'inizi tuttuğundan dolayı. İki gün sonra

+1

Ve tam cevap http://stackoverflow.com/a/35935144/991085 olduğunu –

+0

sonunda beni kurtardı. Teşekkür ederim :) –

3

Nihayet bir cazibe gibi çalışır CustomFBAd güçlü referansı yaptıktan sonra çalışır (@MuhammadZohaibEhsan sayesinde) .Yani

@property(nonatomic, strong) CustomFBAd * objFBAd; 

olarak CustomFBAd init Ve

için

CustomFBAd *objFBAd = [[CustomFBAd alloc]init]; 
    objFBAd.delegate = self; 
    [objFBAd requestNativeAd:@"my_FB_placement_Id"]; 

değiştirmek Temsilci yöntemleriniz

self.objFBAd = [[CustomFBAd alloc]init]; 
    self.objFBAd.delegate = self; 
    [self.objFBAd requestNativeAd:@"my_FB_placement_Id"]; 
+0

i ..... neden bir cevap :) –

+0

olarak bu gönderebilir miyim;) –

+0

sonunda beni kurtardı. Teşekkür :) –