FBNativeAdsManagerDelegate
in Facebook Native Anzeigen gut funktionierten in UIViewController
Klasse genannt, aber wenn sie in benutzerdefinierte NSObject-Klasse verwendet seine nicht funktioniert das heißt seine Delegatmethoden nativeAdsLoaded
und nativeAdsFailedToLoadWithError
nicht aufgerufen haben.Facebook Native Anzeigen FBNativeAdsManagerDelegate Implementierungsmethoden nicht
CustomFBAd.h Datei
@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 Datei
#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
die oben angegebenen Code I FBNativeAdsManager ‚s Delegierten in requestNativeAd
Methode als
Und auch als FBNativeAdsManagerDelegate, FBNativeAdDelegate
@interface CustomFBAd()<FBNativeAdsManagerDelegate,FBNativeAdDelegate>
Und nennen Sie diesen Code als
CustomFBAd *objFBAd = [[CustomFBAd alloc]init];
objFBAd.delegate = self;
[objFBAd requestNativeAd:@"my_FB_placement_Id"];
jede Spur (Hinweis: gleiche Code funktioniert, wenn ich es in UIViewController
verwenden) verwendet? Dank
Nach zwei Tagen gibt es noch jemanden von Facebook, der antworten kann? –
Wenn Ihre Delegatmethoden in uiviewcontroller aufgerufen werden, liegt ein Problem mit dem Code vor. Ich denke, Sie müssen eine starke Referenz von CustomFBAd in Ihrem Controller haben. Weil keine anderen Referenzen Ihre CustomFBAd-Datei erfassen. hoffe es hilft :) –