按照苹果的指南,自动更新的订阅是可恢复的,->设备可以将restoreCompletedTransactions发送到苹果服务器,苹果将以所有已完成的交易列表作为响应。
我的问题是,苹果是否向发送了所有已完成的交易()?(只与购买非耗材产品及自动更新订阅( ofc)有关)
例如:我的应用程序中有每月自动更新的订阅。用户在2012年1月安装我的应用程序。2012年5月,他禁止订阅自动续订。一年后,2013年1月,他再次订阅。2013年3月,他又一次禁止订阅自动续订。最后,在2013年6月,他再次签约。2013年7月,他试图使用“恢复购买”功能,苹果会发送哪些信息?
苹果公司将向该设备发送哪些信息?苹果会发送有关所有订阅的信息,甚至那些过期订阅的信息吗?
问题的意义在于获得使用自动可再生订阅的实际经验,并恢复有关它们的信息。沙箱中的测试有时会得到非常奇怪的结果。
编辑:好吧,所以我已经有了足够的测试来说,是,苹果发送所有完成的事务,包括事务,连接到过期的订阅,即使之后还有其他的订阅。
发布于 2013-07-30 17:08:04
"Store提供内置功能,用于恢复非消耗性产品、自动可再生订阅和免费订阅的事务。要还原事务,应用程序调用支付队列的restoreCompletedTransactions方法。支付队列向App发送请求以恢复事务。作为回报,App为以前完成的每个事务生成一个新的恢复事务。还原事务对象的originalTransaction属性保存原始事务的副本。应用程序通过检索原始事务并使用它解锁购买的内容来处理还原事务。在Store恢复所有以前的事务后,它通过调用他们的paymentQueueRestoreCompletedTransactionsFinished:方法通知支付队列观察者“- Apple
发布于 2015-02-03 22:48:00
嗯,是的,你会得到所有的购买与苹果id (包括过期的)。您可以在委托回调中筛选出它们,并且只向服务器发送最新的回调。
- (void)handleRestoredTransaction:(SKPaymentTransaction *)transaction
{
NSLog(@"Somehow a transaction was restored.");
NSDate* receiptPurchaseDate = transaction.transactionDate;
NSDate* currentDate = [NSDate date];
NSTimeInterval daysPassedSincePurchase = [currentDate timeIntervalSinceDate: receiptPurchaseDate] / SECONDS_PER_DAY;
if ([transaction.originalTransaction.payment.productIdentifier isEqualToString: monthlySubscriptionProductIdentifier])
{
if (daysPassedSincePurchase <= DAYS_PER_MONTH)
{
// send the transaction receipt to your servers.
[self handlePurchasedTransaction: transaction];
}
}
else if ([transaction.originalTransaction.payment.productIdentifier isEqualToString: yearlySubscriptionProductIdentifier])
{
if (daysPassedSincePurchase <= DAYS_PER_YEAR)
{
[self handlePurchasedTransaction: transaction];
}
}
}https://stackoverflow.com/questions/17943308
复制相似问题