我看到我们不能获得Apple ID,但我认为有一种方法可以做到这一点,因为大多数iOS应用程序都可以使用您的Apple账户保存数据。
感谢您的答复。
对于非续订订阅,您必须手动将到期日期存储在某个地方,因为苹果不会为非续订管理它。
我曾在我的一个应用程序中实现了这个功能,在订阅后,我会将到期日期存储在服务器上,应用程序在访问付费功能时会检查到期日期。
如果发现已过期,应用程序将要求重新购买订阅。
https://www.progressconcepts.com/blog/non-renewing-subscription-app-purchases-ios/
希望这能有所帮助。你应该自己在应用程序中跟踪已购买的产品。我通常使用[[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;
}
};
}`
在restoreTransaction
中完成恢复过程(提供内容,更新NSUserDefaults
等)。