ios – Facebook原生广告没有调用FBNativeAdsManagerDelegate实现方法

前端之家收集整理的这篇文章主要介绍了ios – Facebook原生广告没有调用FBNativeAdsManagerDelegate实现方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Facebook Native Ads中的FBNativeAdsManagerDelegate在UIViewController类中正常工作,但在自定义NSObject类中使用时,它无法正常工作,即其委托方法nativeAdsLoaded和nativeAdsFailedToLoadWithError未被调用.

CustomFBAd.h文件

@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文件

#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

如上面的代码所述,我在requestNativeAd方法中设置了FBNativeAdsManager的委托

manager.delegate = self;

并且还用作FBNativeAdsManagerDelegate,FBNativeAdDelegate

@interface CustomFBAd ()<FBNativeAdsManagerDelegate,FBNativeAdDelegate>

并将此代码称为

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

任何线索(注意:如果我在UIViewController中使用它,相同的代码可以工作)?谢谢

解决方法

如果你的委托方法是在uiviewcontroller中调用的,那么代码就会出现问题.我想你必须在你的控制器中有一个强大的CustomFBAd参考.因为其他参考文献都没有抓住您的CustomFBAd.希望能帮助到你
原文链接:https://www.f2er.com/iOS/334399.html

猜你在找的iOS相关文章