我正在測試我在沙盒環境中的應用程序購買過程。當我開始「restoreCompletedTransactions」的過程時,我得到了要求我輸入測試用戶密碼的對話框。如果在那個階段,我只是按取消,我沒有得到任何反饋,該進程已被取消。取消在iOS中的應用程序購買
任何建議
禮
我正在測試我在沙盒環境中的應用程序購買過程。當我開始「restoreCompletedTransactions」的過程時,我得到了要求我輸入測試用戶密碼的對話框。如果在那個階段,我只是按取消,我沒有得到任何反饋,該進程已被取消。取消在iOS中的應用程序購買
任何建議
禮
如果您取消購買恢復方法paymentQueue:restoreCompletedTransactionsFailedWithError:
應該得到所謂的在你的支付交易的觀察者。
如果用戶點擊取消按鈕,然後請求將失敗 - 使用店內的觀察者是這樣的...
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
和處理這樣的....
- (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;
}
}
}
對不起,看起來我並沒有仔細閱讀你要找的東西。 – miho
當用戶按取消按鈕這個方法被調用,所以放置適當的消息。
- (void)failedTransaction:(SKPaymentTransaction *)transaction {
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
if (transaction.error.code != SKErrorPaymentCancelled)
{
NSLog(@"Transaction error: %@", transaction.error.localizedDescription);
}
- (void)paymentQueue:(SKPaymentQueue *)queuerestoreCompletedTransactionsFailedWithError:(NSError *)error {
NSLog(@"%s","User Cancel.");
}
這似乎工作,謝謝。我期待着回覆到**「paymentQueue:updatedTransactions:」**,但事實並非如此。 – reza23
@ reza23,從docs看起來像「正常」交易和「恢復」交易有自己不同的委託方法集合 – Vladimir
謝謝。這工作。 – GeneCode