您好,登錄后才能下訂單哦!
在剛開始做內購的時候,就聽我們老大說要處理好購買中斷問題,就是用戶已經支付過錢但是你們的服務器沒有向蘋果服務器發送驗證,這個要是不處理好就可能上不了線的。
當時也是對這個很頭疼,于是就問同學要了個教程,是himi的http://www.himigame.com/iphone-cocos2d/550.html,里面講得很清楚,但是里面還是沒有講到對消耗品的中斷處理問題,后來在測這個的時候,自己模擬中斷的情況,就老是顯示的是您已經購買了此程序內購買(In App Purchase)項目,但尚未下載問題,有的時候點擊過后還購買了兩次,后來在自己打斷點調試后發現了一個很重要的問題就是監聽是何時執行的。
添加監聽就是這行代碼SKPaymentQueue defaultQueue] addTransactionObserver:self,這行代碼很關鍵,我當時是在點擊購買的按鈕時進行執行的這行代碼,點擊購買后從蘋果服務器將產品接收過來直接發送購買請求,如果這次購買中斷了,下一次再次點擊購買的時候會,再次發送購買請求,這個時候通常會顯示 “您已經購買了此程序內購買(In App Purchase)項目,但尚未下載” 這個錯誤。當我購買中斷后蘋果能檢測到這個未完成交易,但是他只返回了個錯誤然后什么也不做嗎?最后發現,蘋果果然進行了處理,就是在添加監聽后,蘋果發現如果有未完成的交易自己會馬上執行paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions然后 transaction.transactionState = SKPaymentTransactionStatePurchased;
是一個交易完成時返回的結果,然后我又發起了一個購買請求,也就是為什么我模擬中斷后點擊購買會買了兩次的原因了。所以這個SKPaymentQueue defaultQueue] addTransactionObserver:self添加監聽的代碼要在只要進入購買界面或者是剛進入應用程序的時候就要寫了。
我是在點擊購買后又發起了一個購買請求是完全錯誤的。這個只要知道監聽是何時進行的和蘋果對中斷所做的處理內購是很簡單的,但是我找了很長時間也沒有個教程很明白的,所以就自己研究的。以上都是我自己對蘋果iap內購機制的理解,不知道是不是正確的,望大神們多指教。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。