1

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

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

这是回调之一:

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

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

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

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

4

1 回答 1

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

    }
}

希望这可以帮助。

于 2019-09-05T22:35:12.780 回答