【问题标题】:How to get the Ad Unit ID in Rewarded Video AdMob callbacks in Objective-C如何在 Objective-C 的激励视频 AdMob 回调中获取广告单元 ID
【发布时间】:2019-09-04 15:53:22
【问题描述】:

我们正在使用 Objective-C 开发 iOS 应用,我们决定在我们的应用中添加 Firebase。我们还决定添加它附带的 GoogleMobileAds 框架,以便拥有激励视频广告。

我已按照官方指南中的详细说明实施 AdMob,但我不知道如何在每个回调中获取广告单元 ID。 我唯一的参数是 GADRewardBasedVideoAd 类型,它似乎没有任何可访问的数据来提供广告 ID。

这是其中一个回调:

- (void)rewardBasedVideoAdDidOpen:(GADRewardBasedVideoAd *)rewardBasedVideoAd
{
    NSLog(@"Opened reward based video ad.");
}

我需要广告 ID,因为我们在应用中使用了多个广告,我需要知道哪个广告已准备好/打开/完成/失败/等等。

我尝试使用rewardBasedVideoAd.adMetadata[@"AdId"],但它返回nil。

任何帮助将不胜感激。 谢谢

【问题讨论】:

    标签: objective-c firebase admob-rewardedvideoad


    【解决方案1】:

    这里:

    @implementation GameViewController{
        GADRewardedAd *gameOverRewardedAd, *extraCoinsRewardedAd;
    }
    
    -(void)viewDidLoad{
        gameOverRewardedAd = [self createAndLoadRewardedAdForAdUnit:@"ca-app-pub-YOURID"];
        extraCoinsRewardedAd = [self createAndLoadRewardedAdForAdUnit:@"ca-app-pub-YOURID"];
    }
    
    
    -(GADRewardedAd *)createAndLoadRewardedAdForAdUnit:(NSString *) adUnitId {
        GADRewardedAd *rewardedAd = [[GADRewardedAd alloc] initWithAdUnitID:adUnitId];
        GADRequest *request = [GADRequest request];
        [rewardedAd loadRequest:request completionHandler:^(GADRequestError * _Nullable error) {
            if (error) {
                // Handle ad failed to load case.
    
            } else {
                // Ad successfully loaded.
    
            }
        }];
        return rewardedAd;
    }
    

    然后:

    #pragma mark admob reward Ad delegate
    - (void)rewardedAdDidDismiss:(GADRewardedAd *)rewardedAd {
        //NSLog(@"rewardedAdDidDismiss:");
    
        if (rewardedAd == gameOverRewardedAd) {
            //do your things here
        }else if (rewardedAd == extraCoinsRewardedAd){
    
        }
    }
    

    希望这会有所帮助。

    【讨论】:

    • 您展示的示例看起来与官方文档中使用的库不同。而您遗漏了重要的一点:createAndLoadRewardedAdForUnitId 返回什么?你如何获得实例?官方文档使用这行代码:[[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request] withAdUnitID:@"ca-app-pub-..."];并返回 void 所以我没有对广告的任何引用。
    • 更新了 createAndLoadRewardedAdForUnitId() 函数,这些示例基于谷歌新的奖励广告 API,链接如下:developers.google.com/admob/ios/rewarded-ads
    • 这看起来很有希望。它支持多个广告并为每个广告返​​回一个实例,因此可以跟踪它们。这个 API 仍然是 beta 版本,所以我不确定它有多可靠。不过我会接受答案:)
    • 谢谢,我一个月前使用这个 beta API 表单 Admob 发布了我的应用程序,apps.apple.com/ca/app/room-escape-world-challenge/id1475441218 它运行良好。除此之外,正如谷歌文档所述,如果使用以前版本的 API,我们只能同时拥有一个奖励广告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    相关资源
    最近更新 更多