我試圖在完成IAP設置後刪除AdMob橫幅。據我所知,IAP的設置是正確的,但出於某種原因,我遇到的問題是當用戶完成交易後嘗試隱藏廣告時,廣告不會隱藏。 NSLog顯示,但廣告不隱藏。不過,我可以從我的程序中的不同方法發送相同的消息,它會將廣告完全隱藏起來。將消息發送給AppDelegate,不適用於應用內購買
希望我能有這個代碼更容易解釋:
我試圖掩蓋它是這樣的:
當交易購買:
case SKPaymentTransactionStatePurchased:
[self provideContent:transaction.payment.productIdentifier];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
NSLog(@"Transaction state -> Purchased");
break;
provideContent方法:
-(void)provideContent:(NSString *)productIdentifer
{
if ([productIdentifer isEqualToString:@"product id here"]) {
AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
[app hideBannerApp];
}
}
and now in appdelegate:
-(void)hideBannerApp
{
NSLog(@"Hidden banner");
[topBanner removeFromSuperview];
[[NSUserDefaults standardUserDefaults]setBool:areAdsRemoved forKey:@"areAdsRemoved"];
}
由於某種原因,這不會隱藏廣告。 NSLog在xcode中顯示,但廣告沒有被刪除。
但是,當我從不同的方法調用[app hideBannerApp]
時,它工作得很好。
例子:
-(void)tapButton
{
if ([productIdentifer isEqualToString:@"product id here"]) {
AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
[app hideBannerApp];
}
所以如果我有一個鏈接到這個方法的按鈕,它會刪除的廣告和它的作品。那麼,爲什麼當我做完全相同的事情時卻不能工作,但是在應用程序購買中呢?
我會做的第一件事就是設置一個斷點,並驗證'topBanner'不是零 – Paulw11 2014-09-21 21:55:20
我設置一個斷點在'[topBanner removeFromSuperView]';這不是零。它打印了這個描述。 '>' –
SaleenS7
2014-09-21 22:02:23
您的應用內購買是否在後臺線程上完成?嘗試'dispatch_async(dispatch_get_main_queue(),^ {[app hiderBannerApp];});' – Paulw11 2014-09-21 22:06:30