2012-09-11 40 views

回答

3

我總是發現我後來在某個時候出現了奇怪的行爲,如果沒有調用FinishTransaction

最好的選擇是在StandardUserDefaults等設置一個表示「我買了這個但失敗了」的設置,並且撥打FinishTransaction。然後,當他們重新啓動應用程序(或前臺應用程序)時,您可以檢查並將其發送到您的服務器。此外,如果您的購買不是消費品(即不購買硬幣或金錢),您可以致電FinishTransaction,並告訴用戶從設置菜單中的按鈕激活RestoreTransaction。無論如何,蘋果都需要此按鈕進行非消費品購買。

+2

非常有技巧,先生。 – jonathanpeppers

2

以下是蘋果要求你做的事情:當你得到一個應用程序內購買成功的通知時,有兩種可能性:用戶向你的銀行賬戶支付了錢,或者黑客僞造了通知。

因此,您將收據發送到您的服務器,該服務器會檢查收據。百分百確保它不拒絕任何正確的收據。當它告訴您的應用程序收據有效且已處理完畢時,您的應用程序會調用finishTransaction。如果它告訴您的應用程序收據無效,則沒有人確切知道該做什麼,但調用finishTransaction不會傷害。如果還有其他問題(服務器崩潰,網絡故障等),你可以通過而不是調用finishTransaction,因爲如果你這樣做,客戶就會失去他們的錢而不會得到任何東西,而且會很生氣。在這種情況下,您將在稍後再次被告知該交易。可能在不同的電話上,如果用戶有兩個或更多的設備。因此,即使您的應用在該設備上沒有看到任何購買,也應該準備好交易時間可以到達任意

這就是爲什麼用戶默認存儲任何東西是錯誤的。用戶按下「購買」按鈕的設備不一定是購買結束的設備。 (即使在簡單的情況下,用戶也可以在他們的iPhone和iPad之間切換),所以有許多人使用許多 iOS設備。

+1

所以我在2012年回答了這個問題,但仍然存在一個問題:如果對服務器的請求失敗,我的應用會以何種方式再次收到通知以重新向我的服務器發送請求?有沒有關於這方面的任何文件?任何鏈接? – jonathanpeppers

0

如果對服務器的請求失敗,我的應用將以何種方式再次收到通知以重新向我的服務器發送請求?

如果您沒有完成一筆交易,那麼它將保留在SKPaymentQueue中。當您的應用連接到SKPaymentQueue時,它會收到與之相關的所有交易。

因此,您的應用將需要完成所有未完成的交易。

相關問題