使用 Objective C 在 Cocos2d 中展示 AdMob 奖励广告和插页式广告
Display AdMob Reward ads and interstitial Ads in Cocos2d by using Objective C
我一直在尝试在 cocos2d 中展示奖励广告或插页式广告,但没有成功。
对于插页式广告,我使用以下代码
- (void)createAndLoadInterstitial {
_interstitial = [[GADInterstitial alloc] initWithAdUnitID:@"ID"];
_interstitial.delegate = self;
[_interstitial loadRequest:[GADRequest request]];
}
/// Tells the delegate an ad request succeeded.
- (void)interstitialDidReceiveAd:(GADInterstitial *)ad {
NSLog(@"interstitialDidReceiveAd");
if (_interstitial.isReady) {
//[_interstitial presentFromRootViewController:[CCDirector sharedDirector]];
[_interstitial presentFromRootViewController:self];
} else {
NSLog(@"Ad wasn't ready");
}
}
/// Tells the delegate an ad request failed.
- (void)interstitial:(GADInterstitial *)addidFailToReceiveAdWithError:(GADRequestError *)error {
NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription]);
[self displayBannerAd];
}
/// Tells the delegate that an interstitial will be presented.
- (void)interstitialWillPresentScreen:(GADInterstitial *)ad {
NSLog(@"interstitialWillPresentScreen");
}
/// Tells the delegate the interstitial is to be animated off the screen.
- (void)interstitialWillDismissScreen:(GADInterstitial *)ad {
NSLog(@"interstitialWillDismissScreen");
}
/// Tells the delegate the interstitial had been animated off the screen.
- (void)interstitialDidDismissScreen:(GADInterstitial *)ad {
NSLog(@"interstitialDidDismissScreen");
}
/// Tells the delegate that a user click will open another app
/// (such as the App Store), backgrounding the current app.
- (void)interstitialWillLeaveApplication:(GADInterstitial *)ad {
NSLog(@"interstitialWillLeaveApplication");
}
对于奖励广告,我使用以下代码
- (void)display_reward_ad{
[GADRewardBasedVideoAd sharedInstance].delegate = self;
[[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request] withAdUnitID:@"ID"];
}
- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd didRewardUserWithReward:(GADAdReward *)reward {
NSString *rewardMessage = [NSString stringWithFormat:@"Reward received with currency %@ , amount %lf", reward.type, [reward.amount doubleValue]];
NSLog(@"%@,",rewardMessage);
}
- (void)rewardBasedVideoAdDidReceiveAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Reward based video ad is received.");
if ([[GADRewardBasedVideoAd sharedInstance] isReady]) {
//[[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:[CCDirector sharedDirector]];
UIView *myView = [[UIView alloc] init];
[[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:myView];
[[[CCDirector sharedDirector] openGLView] addSubview:[GADRewardBasedVideoAd sharedInstance]];
}
}
- (void)rewardBasedVideoAdDidOpen:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Opened reward based video ad.");
}
- (void)rewardBasedVideoAdDidStartPlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Reward based video ad started playing.");
}
- (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Reward based video ad is closed.");
}
- (void)rewardBasedVideoAdWillLeaveApplication:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Reward based video ad will leave application.");
}
- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd didFailToLoadWithError:(NSError *)error {
NSLog(@"Reward based video ad failed to load.");
}
我做错了什么?我已经在应用程序中尝试了上面的代码并且它可以工作但它在 Cocos2d 中不起作用。我显示横幅广告没有任何问题。
UIViewController* rootViewController = [[UIApplication sharedApplication]delegate] window] rootViewController]];
[[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:rootViewController];
我一直在尝试在 cocos2d 中展示奖励广告或插页式广告,但没有成功。 对于插页式广告,我使用以下代码
- (void)createAndLoadInterstitial {
_interstitial = [[GADInterstitial alloc] initWithAdUnitID:@"ID"];
_interstitial.delegate = self;
[_interstitial loadRequest:[GADRequest request]];
}
/// Tells the delegate an ad request succeeded.
- (void)interstitialDidReceiveAd:(GADInterstitial *)ad {
NSLog(@"interstitialDidReceiveAd");
if (_interstitial.isReady) {
//[_interstitial presentFromRootViewController:[CCDirector sharedDirector]];
[_interstitial presentFromRootViewController:self];
} else {
NSLog(@"Ad wasn't ready");
}
}
/// Tells the delegate an ad request failed.
- (void)interstitial:(GADInterstitial *)addidFailToReceiveAdWithError:(GADRequestError *)error {
NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription]);
[self displayBannerAd];
}
/// Tells the delegate that an interstitial will be presented.
- (void)interstitialWillPresentScreen:(GADInterstitial *)ad {
NSLog(@"interstitialWillPresentScreen");
}
/// Tells the delegate the interstitial is to be animated off the screen.
- (void)interstitialWillDismissScreen:(GADInterstitial *)ad {
NSLog(@"interstitialWillDismissScreen");
}
/// Tells the delegate the interstitial had been animated off the screen.
- (void)interstitialDidDismissScreen:(GADInterstitial *)ad {
NSLog(@"interstitialDidDismissScreen");
}
/// Tells the delegate that a user click will open another app
/// (such as the App Store), backgrounding the current app.
- (void)interstitialWillLeaveApplication:(GADInterstitial *)ad {
NSLog(@"interstitialWillLeaveApplication");
}
对于奖励广告,我使用以下代码
- (void)display_reward_ad{
[GADRewardBasedVideoAd sharedInstance].delegate = self;
[[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request] withAdUnitID:@"ID"];
}
- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd didRewardUserWithReward:(GADAdReward *)reward {
NSString *rewardMessage = [NSString stringWithFormat:@"Reward received with currency %@ , amount %lf", reward.type, [reward.amount doubleValue]];
NSLog(@"%@,",rewardMessage);
}
- (void)rewardBasedVideoAdDidReceiveAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Reward based video ad is received.");
if ([[GADRewardBasedVideoAd sharedInstance] isReady]) {
//[[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:[CCDirector sharedDirector]];
UIView *myView = [[UIView alloc] init];
[[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:myView];
[[[CCDirector sharedDirector] openGLView] addSubview:[GADRewardBasedVideoAd sharedInstance]];
}
}
- (void)rewardBasedVideoAdDidOpen:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Opened reward based video ad.");
}
- (void)rewardBasedVideoAdDidStartPlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Reward based video ad started playing.");
}
- (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Reward based video ad is closed.");
}
- (void)rewardBasedVideoAdWillLeaveApplication:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Reward based video ad will leave application.");
}
- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd didFailToLoadWithError:(NSError *)error {
NSLog(@"Reward based video ad failed to load.");
}
我做错了什么?我已经在应用程序中尝试了上面的代码并且它可以工作但它在 Cocos2d 中不起作用。我显示横幅广告没有任何问题。
UIViewController* rootViewController = [[UIApplication sharedApplication]delegate] window] rootViewController]];
[[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:rootViewController];