将应用内购买链接到用户apple帐户

时间:2015-09-11 10:37:59

标签: ios iphone in-app-purchase

我正在寻找一种方法将应用内购买(不可续订的订阅)与用户苹果帐户相关联,因为我的应用没有帐户系统,显然我希望用户保留他的订阅。

我读到我们无法获得Apple ID,但我认为有一种方法可以实现,因为大多数iOS应用都可以使用您的Apple帐户保存数据。

感谢您的回答。

3 个答案:

答案 0 :(得分:1)

如果您没有自己的帐户系统(用户可以登录等),您可以从购买收据中查看用户对您应用的购买情况:

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Introduction.html

无法从SDK获取AppleID等个人信息。

答案 1 :(得分:0)

您应该自己在应用中跟踪已购买的产品。我通常会使用[[NSUserDefaults standardUserDefaults] setBool:YES forKey:productIdentifier]

当您的用户重新安装您的应用或购买新设备时,就会出现问题。在这种情况下,您必须实施一种方法来恢复购买的产品。

In-App Purchase Programmering Guide表示实现此目的的一种方法是调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]。这会向App Store发送请求,以恢复所有应用已完成的交易。

然后将调用您的事务观察者paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions,并transactions保存已还原的产品。我的功能通常看起来像这样:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for (SKPaymentTransaction * transaction in transactions) {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                [self failedTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
            default:
                break;
        }
    };
}`

完成NSUserDefaults中的恢复过程(提供内容,更新restoreTransaction等)。

答案 2 :(得分:0)

对于非续订订阅,您必须在某处手动存储到期日期,因为Apple不对其进行非续订管理。

我在我的一个应用程序中实现了此功能,在订阅之后,我曾经在服务器上存储过期日期,应用程序将在访问付费功能时检查过期日期。

如果发现过期,应用会再次要求购买订阅。

参考链接: https://developer.apple.com/library/mac/documentation/LanguagesUtilities/Conceptual/iTunesConnectInAppPurchase_Guide/Chapters/CreatingInAppPurchaseProducts.html#//apple_ref/doc/uid/TP40013727-CH3-SW1

https://www.progressconcepts.com/blog/non-renewing-subscription-app-purchases-ios/

希望这会有所帮助。