我试图在完成设置后的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];
}
因此,如果我有一个链接到此方法的按钮,它将删除广告并起作用。那么,当我做完全相同的事情但在应用程序内购买时,为什么它不起作用?
最佳答案
横幅视图是通过应用程序委托方法didBecomeActive
添加的-在应用程序的生命周期中可能多次执行此方法,从而导致多个横幅视图相互叠加。仅最顶层的视图被删除。
标语添加代码已移至didFinishLaunching
,从而解决了该问题
关于ios - 向AppDelegate发送消息不适用于应用内购买,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25964087/