なりすましされた Apple サーバーからのなりすましの領収書のために人々が支払いをせずにアプリ内購入を購入できるようにした最近の「ハック」が公開されたため、アプリ内購入を検証するために、Apple が推奨するトランザクション VerificationController コードを使用して iOS アプリを更新しています。
すべてが統合され、現在テスト中です。アプリを数回実行しましたが、検証も数回実行されました。
新しいアプリと AppleID から始めて、購入に関するすべてをテストしたいと考えています。そのため、テスト デバイスからアプリを完全に削除しました。iTunes Connect で新しい「テスト ユーザー」AppleID を作成しました。テストデバイスの設定アプリに移動し、ストアに移動して、デバイスのデフォルトの AppleID をこの新しく作成された AppleID に変更しました。
デバッガーを使用して Xcode からアプリを再実行すると、アプリがテスト デバイスに再インストールされ、新しく実行されます。
問題は、起動直後に、テスト用デバイスが AppleID パスワードの警告タイプのビューを表示し、元のアプリ内購入とその検証を含むすべてをテストするために最初に使用した古い AppleID のパスワードを要求することです。ストアの下の設定アプリで設定されているように、新しいデバイスの AppleID のパスワードは要求されません。
新しいアプリとして実行すると、検証コードは実行されず、Apple StoreKit で何かを行うルーチンのコードは実行されません。
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
(オブザーバーは、StoreKit のデリゲート オブジェクトであり、作成されますが、init 以外のルーチンは実行されず、init はそれ自体に静的変数を設定してシングルトン型クラスを作成する以外は何もしません)
確認のために、私も追加しました
NSLog(@"in App Delegate, payment queue transactions are %@", [[SKPaymentQueue defaultQueue] transactions]);
これは、古いトランザクションがぶら下がっていないことを示しています。
アプリが新しくインストールされたときに、元のテスト ユーザーの AppleID を要求し始めた理由がわかりません。デバイスのストアの AppleID は異なります。また、StoreKit にアクセスするコードが実行されていないことを確認できます (上記以外)。
これについての洞察をいただければ幸いです。
ETA: パスワード ダイアログで [キャンセル] をタップしても、アプリで余分なコードが実行されることはなく、アプリの実行が妨げられることもありません。
その後、アプリ内購入画面 (アプリが利用可能なアプリ内購入をストアに照会する場所) に移動すると、古い AppleID で同じ方法でパスワードを再度要求されます。キャンセルできますが、何も起こらないようです。アプリで実際に「購入の復元」ボタンをタッチすると、ストア設定で設定されている新しい AppleID のパスワードを要求されます。何が起こっているのかを理解したいので、新しい AppleID で復元または購入を完了または試行することによって物事を台無しにしたくないので、私はこの時点を過ぎていません。
ありがとう