应用内购买是否适用于拥有 iOS 测试版的用户?

Should in-app purchases work for users that have an iOS beta?

我在应用商店中有一个应用,并且已确认我的应用内购买适用于最新的官方版本。然而,我的一些应用程序用户很狡猾,他们拥有 iOS 的未发布版本。我的应用程序的应用程序内购买是否仍适用于 Beta iOS 版本?因为至少有一个或两个用户报告说他们的应用内购买没有被正确标记为已购买。

如果您想了解具体情况,当我的应用程序将商品标记为已购买时,不会下载太多内容。它只是在 docs 目录中写入一个文件,并让他们无限播放。

更新:

我在 Apple 开发者论坛上看到

The “store kit flow”, is a process taken at the time of an attempt to purchase an "in app purchase" item such that the store kit determines that there is a problem with the user’s storekit account - for example, when the credit card information has expired. When this issue is detected, the user is given the option to be taken to the App Store app to update their account information. It used to be that the StoreKit would alert the user and ask them to fix the issue in the App Store app, when the issue was detected. Beginning with iOS 7, this check won’t bother the user until an actual charge is attempted - either when an app is requested for download or when a user attempts an in app purchase.

因此我认为我的代码可能提前完成了交易。这是我认为是我的相关代码,并标记了我的怀疑。有人可以仔细检查或澄清吗?

- (void)failedTransaction:(SKPaymentTransaction *)transaction  //Working
{
    //NSLog(@"failedTransaction.");
    if (transaction.error.code != SKErrorPaymentCancelled)
    {
        // error!
        NSLog(@"Transaction error: %@", transaction.error.localizedDescription);
        [self finishTransaction:transaction wasSuccessful:NO]; //TODO: Remove this, it may be causing the bug with transaction errors in Multi Path Audio 1.1.4
    }
    else
    {
        //NSLog(@"failedTransaction, user just cancelled.");
        // this is fine, the user just cancelled
        [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    }
}

您绝对必须仅在将货物交付给用户后才调用 finishTransaction。动作顺序是:苹果拿走用户的钱。您发货。你调用 finishTransaction。如果你不发货,没关系,Apple 会记住并再次询问你,直到你调用 finishTransaction。如果你在没有交付的情况下调用 finishTransaction,你就是在欺骗客户。

如果用户与商店的互动在用户没有交钱的情况下结束,您将永远不会被告知购买。