我试图在完成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