購入が完了するときには、ストアのリスナーにある ProcessPurchase
が呼び出されます。アプリではユーザーが購入したすべてのものは役割を果たす必要があります。例えば、ローカルコンテンツをアンロックや、レシートをサーバーに送ってサーバー側のゲームモデルを更新する場合です。
戻り値は、課金処理が終了したかどうかを返します。
値 | 説明 |
---|---|
PurchaseProcessingResult.Complete | 購入処理が終了し、再度通知する必要はありません。 |
PurchaseProcessingResult.Pending | まだ購入処理中で、IStoreController の ConfirmPendingPurchase メソッドが呼び出されない限り、次にアプリを起動したときに ProcessPurchase が再度呼び出されます。 |
この明示的な承認は、ネットワークの接続が切れたりアプリがクラッシュしても確実に購入できるようにするためです。このようにアプリがオフラインである間は、次の初期化タイミングで購入を完了させようとします。
さらに、消費型プロダクトの購入処理中にユーザーがアプリを再インストールしても、Unity IAP は購入する消費型プロダクトを失わずに処理が確認されるまでストア内部で開かれているトランザクションを維持します。
このメソッドは非同期なため、初期化が成功した後のどこかのタイミングで呼び出されます。ProcessPurchase
の処理中にアプリがクラッシュしたときに Unity IAP の初期化が次のタイミングで再度実行される場合は、重複する情報を削除する実装を行うこともできます。