【问题标题】:ios Facebook add FBNativeAdView as Subviewios Facebook 添加 FBNativeAdView 作为子视图
【发布时间】:2015-09-04 06:34:46
【问题描述】:

我想使用来自FBNativeAdView 的预构建视图(不想自定义 FBNative 广告)。如link 中所述

FBNativeAdView 创建预构建的原生广告模板视图和 管理原生广告。

我确实更改了 Facebook SDK 中给出的 NativeAdSample 示例。并将 FBNativeAdView 添加为 mainView(adUIView) 的子视图。

-(void) nativeAdDidLoad: (FBNativeAd * ) nativeAd 
{
        NSLog(@"Native ad was loaded, constructing native UI...");

        if (self._nativeAd) 
        {
            [self._nativeAd unregisterView];
        }

        self._nativeAd = nativeAd;

        // Here I did add
        FBNativeAdViewAttributes * attributes = [[FBNativeAdViewAttributes alloc] init];
        attributes.backgroundColor = [UIColor whiteColor];
        attributes.titleColor = [UIColor blackColor];

        FBNativeAdView * fbNativeAdView = [FBNativeAdView nativeAdViewWithNativeAd: self._nativeAd withType: FBNativeAdViewTypeGenericHeight300 withAttributes: attributes];
}

所以问题是如何将fbNativeAdView 添加为 ParentView 的子视图,以便它应该在父视图中查看。我做到了

[self.adUIView addSubview:fbNativeAdView];

没有成功。

Native Ad Template 提供了如何从FBNativeAd 获取FBNativeAdView 的信息。但没有告诉如何在uiview 中使用FBNativeAdView

【问题讨论】:

  • "没有成功" --> 发生了什么?有任何错误/通知吗?
  • 只有白色背景视图。
  • 对我来说也一样...只是背景(我可以为其设置颜色),但没有其他内容。这些示例甚至没有使用 FBNativeAdView
  • 我不知道,但是你不必设置 fbadview 的框架吗?您看到的背景颜色是 fbadview 还是内容视图?
  • @Roemer 你检查了吗,因为我没有找到合适的答案,直到现在我使用FBNativeAdScrollView 处理一个广告请求,它工作正常,但我想通过FBNativeAdView 获得成功.

标签: ios facebook facebook-audience-network


【解决方案1】:

现在它可以在FBNativeAdView 中使用添加框架作为

fbNativeAdView.frame = CGRectMake(0, 0, 320, 120);

现在Native Ad Template 还提供了有关如何在 uiview 中使用 FBNativeAdView 的信息。

可以通过更改其值来自定义广告模板 元素:

- (void)nativeAdDidLoad:(FBNativeAd *)nativeAd 
{
  FBNativeAdViewAttributes *attributes = [[FBNativeAdViewAttributes alloc] init];

  attributes.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:0.9 alpha:1];
  attributes.buttonColor = [UIColor colorWithRed:0.4 green:0.9 blue:0.8 alpha:1];
  attributes.buttonTitleColor = [UIColor whiteColor];

  FBNativeAdView *adView = [FBNativeAdView nativeAdViewWithNativeAd:nativeAd 
      withType:FBNativeAdViewTypeGenericHeight300 withAttributes:attributes];

  [self.view addSubview:adView];

  CGSize size = self.view.bounds.size;
  CGFloat xOffset = size.width / 2 - 160;
  CGFloat yOffset = (size.height > size.width) ? 100 : 20;
  adView.frame = CGRectMake(xOffset, yOffset, 320, 300);

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

【讨论】:

    【解决方案2】:

    NativeAdView 使用 FBMediaView 创建广告。您的 nativeAdView 300 高度太低,无法加载任何类型的 FBMediaView。

    如果您想使用 300 百的高度,请创建一个原生视图 (iOS) 并使用 fbNativeAd 返回的属性。例如在您的 nativeAdDidLoad 中执行此操作:

    customView.titleLabel = nativeAd.title;
    FFBAdImage *icon = nativeAd.icon;
    [icon loadImageAsyncWithBlock:^(UIImage * _Nullable image) 
    {
        [customView.imageView setImage:image]; //image returned by fb is 128x128
    }];
    customView.fbAdBtn.titleLabel.text = nativeAd.callToAction;
    
    [self.view addSubView:customView];
    

    如果你想让你的整个自定义视图都可以点击,那么就到这里

    [nativeAd registerViewForInteraction:customView withViewController:self]; 
    

    如果您希望仅通过自定义视图中的按钮执行操作,请执行此操作。

    NSArray *clikAble = [NSArray alloc] initWithObjects:customView.fbAdBtn];
    [nativeAd registerViewForInteraction:customView withViewController:self withClickableViews:clikAble];
    

    您可以根据需要使用许多其他属性。

    别忘了遵守以下准则:https://developers.facebook.com/docs/audience-network/guidelines/native-ads

    并尝试制作全屏尺寸的 FBNativeAdView,我认为这肯定会加载视图。

    【讨论】:

    • 这就是解决方案老兄 - 你的 nativeAdView 300 的高度太低,任何类型的 FBMediaView 都无法加载。
    • 等一下,您是说 Facebook 提供的默认值太低而无用,例如FBNativeAdViewTypeGenericHeight100, FBNativeAdViewTypeGenericHeight300
    • @XCodeWarrier 它们对于 FBMediaView 来说太低了。
    • @ibnetariq:这没有意义。如果它太低,则 FBMediaView 不应该出现,但标题、按钮等应该在那里。就像 Facebook 指南中的截图一样:developers.facebook.com/docs/audience-network/ios/…
    • @ibnetariq 您说“NativeAdView 使用 FBMediaView 创建广告。您的 nativeAdView 300 的高度太低,无法加载任何类型的 FBMediaView。”那么为什么FB使用高度FBNativeAdViewTypeGenericHeight300?无论如何这是错误的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    相关资源
    最近更新 更多