如何在 Objective-C 的激励视频 AdMob 回调中获取广告单元 ID

How to get the Ad Unit ID in Rewarded Video AdMob callbacks in Objective-C

我们正在 objective-C 开发一个 iOS 应用程序,我们决定在我们的应用程序中添加 Firebase。我们还决定添加它附带的 GoogleMobileAds 框架,以便获得奖励视频广告。

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

这是回调之一:

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

我需要广告 ID,因为我们在应用中使用了多个广告,我需要知道哪个是 ready/opened/completed/failed/etc。

我尝试使用 rewardBasedVideoAd.adMetadata[@"AdId"] 但它 returns 没有。

如有任何帮助,我们将不胜感激。 谢谢

此处:

@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){

    }
}

希望对您有所帮助。