在我的应用程序中应用程序内购买正常。iOS应用程序内购买应用程序转到后台时处理(未完成的中断事务)
我面临的问题是:
- 如果我启动订阅过程并通过按iPhone上的Home按钮将应用程序发送到后台。
然后在应用内购买API坚持工作,并提示用户的iTunes的凭证,而应用程序是在后台和用户成功完成购买订阅的过程。
现在用户已经通过应用程序内API购买了订阅,而应用程序在后台,但我没有得到如何处理这种情况,因为如果用户杀死应用程序而不将其带回前台,则订阅购买信息将会永远不会被转发到我们的服务器,我们将无法更新我们的服务器中的用户帐户,用户将无法使用应用程序的特殊功能。
要发送的最新收据和In-App Purchase的信息到服务器,我得到如下方式通知通过:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
NSLog(@"updated transaction");
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
NSLog(@"transationStatePurchased");
// here I send data to server, but it never runs if app is in background.
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
NSLog(@"transationStateFailed");
[self failedTransaction:transaction];
break;
default:
break;
}
}
}
但是,当应用程序在前台所以问题是上述方法总是工作即使上述方法没有执行,我如何得到关于完整事务的通知。
当你启动应用商店套件将检查您的付款队列中等待交易,并提供给您的队列观察员。在购买过程完成并且您保留了交易之前,您不应将交易标记为完成,因此即使用户杀死应用程序,交易仍将在队列中处于未决状态。 – Paulw11