我已成功通過應用內購買從應用中移除廣告。如何在應用關閉後保留應用購買中的移除廣告
問題是,如果我關閉了應用程序並重新打開。廣告再次啓動。
我有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