簡體   English   中英

將canDisplayBannerAds更改為NO不會更新視圖以刪除廣告橫幅

[英]Changing canDisplayBannerAds to NO does not update the view to remove ad banner

奇怪的問題,我一直在這個牆上吊着頭幾個小時,但一直無法解決。

我有一個使用故事板的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中調用時,或者甚至在我創建的專用方法中,一旦完成購買就調用它,它就不起作用。

我在想,也許橫幅視圖在某個地方設置了緩存而且它沒有被淘汰,但我不知道如何強迫它。 我也在想,如果我可以強制根視圖控制器基本上轉到nil並從頭開始,那可能會這樣做,但我不知道如何強迫它。

有人有什么想法?

我遇到了同樣的問題,並找到了適用於我的解決方法:

self.canDisplayBannerAds = NO;
for (id aView in self.view.subviews) {
  if ([aView isKindOfClass:[ADBannerView class]]) {
     [(ADBannerView *)aView setHidden:YES];
  }
}

我不認為這是一個干凈的解決方案,但由於它最終工作,我將保持它,直到我找到一個更好的解決方案。

我將在實現文件(.m)中創建一個控制廣告的方法,也包括方法標題到.h“ - (void)viewWillAppear;”

- (void)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");
}

一旦確認購買,請從其他班級調用該方法,

例;

AppDelegate *Appdel = [[AppDelegate alloc] init];
[Appdel viewWillAppear];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM