アプリ内購入アプリケーションをテストしています。サンドボックス環境でユーザーアカウントを使用して消耗品を2回購入すると、「これは既に購入しましたが、ダウンロードされていません。[OK]をタップして今すぐダウンロードしてください」というアラートが常に表示されます。アラートをスキップする方法はありますか?
助けてくれてありがとう。
アプリ内購入アプリケーションをテストしています。サンドボックス環境でユーザーアカウントを使用して消耗品を2回購入すると、「これは既に購入しましたが、ダウンロードされていません。[OK]をタップして今すぐダウンロードしてください」というアラートが常に表示されます。アラートをスキップする方法はありますか?
助けてくれてありがとう。
消耗品を購入した後に購入する場合、このアラートは表示されません。そうであれば、トランザクションをキューから削除したことはありません。ストアで再度購入できるようにするには、削除する必要があります。
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
さて、数時間ウェブを検索した後の私の解決策です!IAP マネージャーにトランザクション オブザーバーを追加することを忘れないでください!!
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
アプリケーションは、アプリケーションの初期化中に支払いキューにオブザーバーを追加する必要があります。キューに接続されたオブザーバーがない場合、更新されたトランザクションに応答するオブザーバーがないため、支払いキューは保留中のトランザクションのリストを Apple App Store と同期しません。
トランザクションがまだ処理されているときにアプリケーションが終了しても、それらのトランザクションは失われません。次にアプリケーションを起動すると、支払いキューはトランザクションの処理を再開します。アプリケーションは、完了したトランザクションの通知を常に期待する必要があります。
これは実際にはかなり複雑です。Apple はこのメッセージを取引プロセスに組み込んでいるため、ユーザーがすでに所有している製品を再購入しようとしているところまで行けば、このメッセージが表示されます。
使用できます
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
購入画面に到達する前に、以前に購入した取引を復元するため。ストア GUI が読み込まれる前に restoreCompletedTransactions を実行し、トランザクションが正常に完了したときにロック解除されたコンテンツの購入ボタンをロックアウトします。
これは、サンドボックスID以外のID、またはアプリが署名された証明書とは異なる開発プログラムからのもののような間違ったサンドボックスIDでログインしている場合、アドホックビルドの完全に有効なコードでも発生する可能性があります。たとえば、個人と企業のように。
トランザクションオブザーバーを追加し、トランザクションをキューから削除しても、同じ問題が発生しました。プロビジョニングプロファイルをクリーンアップすることで修正できました:
プロビジョニング ポータルに移動し、ディストリビューション/開発者プロビジョニング プロファイルがまだ有効かどうかを確認します。必要に応じて更新するか、少なくともデバイスを削除して再度追加して更新します。
XCode でオーガナイザーに移動し、すべてのプロビジョニング プロファイルを削除してから、更新を押します。
テスト デバイスからアプリとすべてのアプリ プロビジョニング プロファイルを削除します
アプリストアから現在のテスト ユーザーでサインアウトし、後でアプリ内購入のアイテムからサインインを求められたら、再度サインインします。
アプリでアイテムを購入するときに、テスト ユーザーでクリーニング、ビルド、およびサインインします。
あなたにも効果があることを祈って!
すべてのリクエストを処理するコントローラーにこのコードを追加したことを確認してください。
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
使用する新しいアカウントを作成した後、問題を修正しました。Apple のシステムがバックアップされて、しばらくの間、アカウントが台無しになるだけだと思います。
幸運を!