我正在尝试在完成IAP设置后删除AdMob横幅。据我所知,IAP设置正确,我出于某种原因遇到的问题是,当我尝试在用户完成交易后隐藏广告时,广告不会隐藏。 NSLog显示,但广告不隐藏。但是,我可以从我的程序中的不同方法发送相同的消息,它将完全隐藏广告。
希望我能用这段代码更容易解释:
我试图隐藏它:
购买交易时:
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];
}
}
现在在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];
}
因此,如果我有一个与此方法相关联的按钮,则会删除该广告并且它可以正常工作。那么,当我做同样的事情时,为什么它不起作用,但是在应用程序中购买?
答案 0 :(得分:1)
横幅视图是从应用委托方法didBecomeActive
添加的 - 此方法可能会在应用程序的生命周期内执行多次,从而导致多个横幅视图相互叠加。只删除了最顶层的视图。
横幅广告代码已移至didFinishLaunching
,解决了问题