我正在寻找一种方法将应用内购买(不可续订的订阅)与用户苹果帐户相关联,因为我的应用没有帐户系统,显然我希望用户保留他的订阅。
我读到我们无法获得Apple ID,但我认为有一种方法可以实现,因为大多数iOS应用都可以使用您的Apple帐户保存数据。
感谢您的回答。
答案 0 :(得分:1)
如果您没有自己的帐户系统(用户可以登录等),您可以从购买收据中查看用户对您应用的购买情况:
无法从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://www.progressconcepts.com/blog/non-renewing-subscription-app-purchases-ios/
希望这会有所帮助。