我已成功通过应用内购买从应用中移除广告。如何在应用关闭后保留应用购买中的移除广告
问题是,如果我关闭了应用程序并重新打开。广告再次启动。
我有2个主要场景。 GameOverScene和GameScene。 In App Purchase发生在GameOverScene中。
GameOverScene.m:
- (void)OnRemoveADS {
[self showPurchaseAlert: IAP_Q_RemoveADS :0];
g_bRemoveADS = [[NSUserDefaults standardUserDefaults] boolForKey: @"REMOVEADS"];
// For HZInterstitialAd, HZVideoAd, and HZIncentivizedAd, just check the BOOL to see if an ad should be shown
if (!g_bRemoveADS) {
[HZInterstitialAd show];
[self removeBannerAds];
[self disableAds];
NSLog(@"Disable ads is called");
}
}
- (void)removeBannerAds {
HZBannerAdOptions *options = [[HZBannerAdOptions alloc] init];
[HZBannerAd placeBannerInView:self.view
position:HZBannerPositionBottom
options:options
success:^(HZBannerAd *banner) {
if (g_bRemoveADS) { // case (2)
// Just discard the banner
[banner setHidden: YES];
[banner removeFromSuperview];
banner = nil;
//_currentBannerAd = banner;
NSLog(@"Banner ad removed!GameOverScene");
} else {
// Keep a reference to the current banner ad, so we can remove it from screen later if we want to disable ads.
_currentBannerAd = banner;
}
NSLog(@"Ad Shown! GameOverScene");
}
failure:^(NSError *error) {
NSLog(@"Error = %@",error);
}];
}
- (void)disableAds {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"REMOVEADS"];
[_currentBannerAd removeFromSuperview]; // case (3)
}
GameScene.m:
-(id) init {
if (self = [super init]) {
if (!g_bRemoveADS) {
g_bRemoveADS=FALSE;
[[NSUserDefaults standardUserDefaults] setBool:g_bRemoveADS forKey:@"REMOVEADS"];
[[NSUserDefaults standardUserDefaults] synchronize];
} else {
g_bRemoveADS=TRUE;
[[NSUserDefaults standardUserDefaults] setBool:g_bRemoveADS forKey:@"REMOVEADS"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
}
我试图解决它是使用相同的代码从AppDelegate中的GameOverScene.m的方式。当应用程序启动时,它将删除广告。
AppDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
g_bRemoveADS = [[NSUserDefaults standardUserDefaults] boolForKey: @"REMOVEADS"];
if (!g_bRemoveADS) {
[HZInterstitialAd show];
[self disableAds];
NSLog(@"Disable ads is called");
}
}
init中的if else是不必要的。看起来你有两种不同类型的广告。 iap完成后你更新了NSUserDefault吗? – user523234
是的,你说得对。我评论说。当应用程序再次启动时,我想要在App Delegate中发生什么? – Paul
我做了一个'[[NSUserDefaults standardUserDefaults] synchronize];'就像在下面的答案中,但那并没有阻止广告的来临。即使在In App Purchase之后。当我评论这条线并进行测试时,广告停止了。但是,问题仍然是,当我再次启动应用程序时,它不记得广告已被删除。 – Paul