My app is using in-app purchases, and most of my users can purchase just fine without any problems. For these folks, my app downloads the content after the purchase succeeds and they are happy.
However, for a growing number of my users, once they complete a successful in-app purchase they are being asked for their App Store password every time the app starts up after that. I believe this is happening on the call to:
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
which I am calling on startup in accordance with step 6 in Apple's in-app purchase guide:
- archived guide: https://web.archive.org/web/20130515222703/https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/AddingaStoretoYourApplication/AddingaStoretoYourApplication.html
- 実際のガイド: https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/DeliverProduct.html#//apple_ref/doc/uid/TP40008267-CH5-SW4
私の推測では、何らかの理由で、Apple のアプリ内購入サーバーが、トランザクションが正常に終了したことを登録していないということです。
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
トランザクションが完了し、コンテンツが正常にダウンロードされたとき。
2 つの質問:
他の誰かがこれを見ていますか?
誰かが提案された修正を持っていますか?
報奨金編集:
別のApple-IDで行われた取引です。そのため、ダイアログに正しい資格情報を入力しない限り、完了できません。質問は次のいずれかである必要があります。
- このような無効なトランザクションを防ぐにはどうすればよいですか (トランザクションが終了していない、ユーザーがネットワークを持っていない、その間に App-ID を変更する)。
- どのように剪定できます
SkPaymentQueue
か?