我试图在完成设置后的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/

10-14 22:30
查看更多