In App Purchase user cancels tx while app in background: tx state stays on purchasing

瘦欲@ 提交于 2019-12-18 16:54:31

问题


I have some odd behavior with User canceling in App Purchase (Sandbox Environment) while the app is in background and the user is not yet logged in to the store:

The process is as follows:

  • User is not logged in/App Id is not set in Settings > Store
  • User clicks buy button. This calls [[SKPaymentQueue defaultQueue] addPayment:payment];
  • User immediatly preses home button (app goes to background)
  • Storekit popup appears asking to confirm purchase. User cancels
  • App is activated again and would expect to recieve - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions, but does not. The TX is still in state purchasing.

This process is different, if the testuser is logged in to the store already. In that case the above process works as expected.

Another remark: After the above steps, I actually buy another in-App item (inlcuding logging in to the appstore). After this I sent the app to backgrounding and reactivate it and it will process the fomerly missing cancel transaction.

Conclusion: A user canceling a payment tx while the app is in background and not being logged in to the store results in late delivery of the storekit callback. Delivery is done after the user actually logged in to the appstore and the PaymentQueue process gets triggered by reactivating the app.

This behavior seems to be wrong and if it is actually like that in real environment, I might consider this a Storekit bug. Has someone experienced the same behavior or can indicate something to prevent a tx "hanging" in purchasing state?

Thanks, Marcus


回答1:


I don't believe you can count on ANYTHING when it comes to Store Kit. Rather than "waiting expectantly" for the transaction to be queued after the "Buy" button is pressed, just go on about your business. When you are notified that there are transactions (which could be tomorrow) process them. I believe there's a comment to this effect in the documentation -- that your app should register for SK notifications when it's launched and it should expect to get them at any time. So don't build any awareness of "state" into your app when it comes to Store Kit. Just process the transactions as they arrive.



来源:https://stackoverflow.com/questions/6311116/in-app-purchase-user-cancels-tx-while-app-in-background-tx-state-stays-on-purch

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!