在我的應用程序中應用程序內購買正常。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