[英]Link an in-app purchase to user apple account
我正在寻找一种方法将应用内购买(不可更新的订阅)链接到用户苹果帐户,因为我的应用程序没有帐户系统,显然我希望用户保留他的订阅。
我读到我们无法获得Apple ID,但我认为有一种方法可以实现,因为大多数iOS应用都可以使用您的Apple帐户保存数据。
谢谢你的回答。
如果您没有自己的帐户系统(用户可以登录等),您可以从购买收据中检查用户购买的应用程序:
从SDK获取AppleID等个人信息是不可能的。
您应该自己在应用中跟踪已购买的产品。 我通常使用[[NSUserDefaults standardUserDefaults] setBool:YES forKey:productIdentifier]
。
当您的用户重新安装您的应用或购买新设备时,就会出现问题。 在这种情况下,您必须实施一种方法来恢复购买的产品。
应用程序内购买程序指南指出,实现此目的的一种方法是调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
。 这会向App Store发送请求以恢复所有应用已完成的交易。
然后paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
将调用您的事务观察者的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
等)。
对于非续订订阅,您必须在某处手动存储到期日期,因为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/
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.