web-dev-qa-db-ja.com

アラートをスキップする方法「これはすでに購入しましたが、ダウンロードされていません」

アプリ内購入アプリケーションをテストしています。サンドボックス環境でユーザーアカウントを使用して消耗品を2回購入すると、「これは既に購入しましたが、ダウンロードされていません。[OK]をタップして今すぐダウンロードしてください」というアラートが常に表示されます。アラートをスキップする方法はありますか?

助けてくれてありがとう。

20
user297047

すでに購入した後で消耗品を購入している場合は、このアラートは表示されません。そうである場合は、トランザクションをキューから削除したことはありません。ストアで再度購入できるようになる前に、削除する必要があります。

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
15
Brandon

さて、数時間ウェブを検索した後の私の解決策! IAPマネージャーにトランザクションオブザーバーを追加することを忘れないでください!!

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

アプリケーションは、アプリケーションの初期化中にオブザーバーを支払いキューに追加する必要があります。キューにオブザーバーが接続されていない場合、更新されたトランザクションに応答するオブザーバーがないため、支払いキューは保留中のトランザクションのリストをApple AppStoreと同期しません。

トランザクションがまだ処理されているときにアプリケーションが終了しても、それらのトランザクションは失われません。次回アプリケーションが起動すると、支払いキューはトランザクションの処理を再開します。アプリケーションは、完了したトランザクションが常に通知されることを期待する必要があります。

10
Kjuly

これは実際にはかなり複雑です。 Appleには、このメッセージがトランザクションプロセスに組み込まれているため、ユーザーが既に所有している製品を買い戻そうとしているところに到達すると、このメッセージが表示されます。

使用できます

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

購入画面が表示される前に、以前に購入したトランザクションを復元するため。ストアGUIがロードされる前にrestoreCompletedTransactionsを実行し、トランザクションが正常に完了したときにロック解除されたコンテンツの購入ボタンをロックアウトします。

6
Smorpheus

これは、サンドボックス以外のID、またはアプリが署名された証明書とは異なる開発プログラムからのIDのように、間違ったサンドボックスIDでログインしている場合、アドホックビルドの完全に有効なコードでも発生する可能性があります。たとえば、個人と企業のように。

2
smasher

すべてのリクエストを処理するコントローラーにこのコードを追加したことを確認してください。

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
2
yunas

トランザクションオブザーバーを追加し、トランザクションをキューから削除したにもかかわらず、同じ問題が発生しました。プロビジョニングプロファイルをクリーンアップすることで修正できました。

  1. プロビジョニングポータルに移動し、ディストリビューション/開発者のプロビジョニングプロファイルがまだ有効かどうかを確認します。必要に応じて更新するか、少なくともデバイスを削除して再度追加することで更新します。

  2. XCodeでオーガナイザーに移動し、更新を押すよりも、すべてのプロビジョニングプロファイルを削除します。

  3. アプリを削除しますおよびテストデバイスからのすべてのアプリプロビジョニングプロファイル

  4. アプリストアから現在のテストユーザーでサインアウトし、後でアプリ内購入に関するものからそうするように求められたときに再度サインインします。

  5. アプリでアイテムを購入するときに、テストユーザーでクリーンアップ、ビルド、サインインします

  6. それがあなたにも役立つことを祈ります!

2
Chris Conway

使用する新しいアカウントを作成した後、問題を修正しました。 Appleのシステムはバックアップされて、しばらくの間アカウントを台無しにしたと思います。

幸運を!

1
flashsnake