【问题标题】:How do I remove ads with In-App Purchase?如何使用应用内购买移除广告?
【发布时间】:2015-09-30 22:08:40
【问题描述】:

我无法找出购买后我的 iAd 没有被删除的原因。

这是我在包含 iAd 的文件中尝试的内容:

#define kInAppPurchaseUpgradeProductId @"kInAppPurchaseUpgradeProductId"

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
BOOL adsAreOff = [defaults boolForKey:kInAppPurchaseUpgradeProductId];

if (!adsAreOff)
{
    adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
    adView.frame = CGRectOffset(adView.frame, 0, -50);
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
    CGRect adFrame = adView.frame;
    adFrame.origin.y = self.view.frame.size.height-adView.frame.size.height;
    adView.frame = adFrame;
    adView.backgroundColor = [UIColor clearColor];
    [self.view addSubview:adView];
    adView.delegate=self;
    self.bannerIsVisible=NO;
}
else 
{
    [adView removeFromSuperview];
}

这是我在应用内购买代码中尝试的内容:

-(void)purchaseUpgrade
{
    SKPayment * payment = [SKPayment paymentWithProductIdentifier:kInAppPurchaseUpgradeProductId];
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}

-(IBAction)purchaseButtonTapped
{
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:adView forKey:kInAppPurchaseUpgradeProductId];

    // I tried this first, didn't work
    //[defaults setBool:TRUE forKey:kInAppPurchaseUpgradeProductId];

    [defaults synchronize];

    [self purchaseUpgrade];
}

这是在正确的地方处理,还是应该在paymentQueue 方法中处理?

【问题讨论】:

    标签: objective-c in-app-purchase iad


    【解决方案1】:

    确保在购买应用程序后设置密钥时同步您的NSUserDefaults

    // After a purchase is made:
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:SOMETHING forKey:kInAppPurchaseUpgradeProductId]
    [defaults synchronize];
    

    【讨论】:

    • 我已经根据您的建议修改了我的代码(非常感谢)。现在在测试中,我得到“无法连接到 iTunes Store”。我在沙盒 verifyReceipt 站点上看到:{"status":21000}。你或任何人以前见过这个吗?
    • 我不确定;尝试针对新问题提出一个新的 SO 问题。
    • @suhas NSUserDefaults 在应用程序的整个生命周期中都将保持不变,但会随着卸载而丢失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2017-08-20
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多