奇怪的问题,我已经把头撞在墙上好几个小时了,一直没能解决。
我有一个使用情节提要的仅限 iOS 7 的应用程序。在我的主根视图控制器上,我使用 self.canDisplayBannerAds = YES 在视图底部显示 iAd 横幅。这完美地工作。
我有一个设置视图控制器,我的用户可以从那里进行应用内购买以永久删除广告。该功能也有效。我在 NSUserDefaults standardUserDefaults 中存储了一个 BOOL 值,以跟踪他们是否进行了购买。
让我难过的是,如果用户在横幅中接收广告,进入设置视图控制器,然后进入我的购买视图控制器,成功购买,然后返回主根视图,横幅广告仍然可见。如果用户完全退出应用程序,然后重新启动,它不会再次显示,因为这是我在 viewWillAppear 中显示横幅的方式:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
bool saved = [defaults boolForKey:t_Save];
if (saved == NO) {
self.canDisplayBannerAds = YES;
} else if (saved == YES) {
self.canDisplayBannerAds = NO;
}
NSLog(self.canDisplayBannerAds ? @"YES" : @"NO");
因此,当他们在完成或恢复购买后重新启动应用程序时,此逻辑可以正常工作。但是,我希望在他们购买后立即更新视图。但是,当他们第一次启动它时,我不能让那个愚蠢的横幅广告在应用程序中消失。
如果我创建一个只设置 self.canDisplayBannerAds = NO 的按钮,那么这会导致横幅广告消失,这很奇怪。但是,当在 viewWillAppear、viewDidAppear 中调用时,甚至在我创建的专用方法中调用时,它都不起作用,一旦购买,它就会被调用。
我在想也许横幅视图设置在某处的缓存中,它只是没有被取消,但我不知道如何强制这样做。我也在想,如果我可以强制根视图控制器基本上为零并从头开始,那可能会做到,但我也不知道如何强制。
有人有什么想法吗?