トランザクションの復元
ユーザーがアプリケーションを再インストールする際、ユーザーがすでに所有している非消費型と更新可能なサブスクリプションのプロダクトを付与する必要があります。アプリストアは、各ユーザーの非消費型および更新可能なサブスクリプションのプロダクトの記録を永久的に保持しており、Unity IAP でこれを取得できます。Apple プラットフォームの更新不可のサブスクリプションは復元できません。Apple プラットフォームで更新不可のサブスクリプションプロダクトを使用している場合は、ユーザー自身がアクティブなサブスクリプションの記録を保持し、デバイス間でサブスクリプションを同期する必要があります。
サポートされているプラットフォーム (例: Google Play やユニバーサル Windows アプリケーション) では、Unity IAP は再インストール後の最初の初期化中に、ユーザーが所有しているすべてのプロダクトを自動的に復元します。所有しているアイテムごとに、IStoreListener の ProcessPurchase メソッドが呼び出されます。
Apple のプラットフォームでは、ユーザーが以前のトランザクションを復元するにはパスワードを入力する必要があります。そのため、これを行うためのボタンをアプリケーションに用意する必要があります。復元プロセス中に、ユーザーがすでに所有しているアイテムに対して IStoreListener の ProcessPurchase メソッドが呼び出されます。
/// <summary>
/// OnInitialized の IStoreListener 実装
/// </summary>
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
extensions.GetExtension<IAppleExtensions> ().RestoreTransactions (result => {
if (result) {
// これは、何かが復元されたということではなく、
// 単に復元プロセスが成功したことを示しています。
} else {
// 復元が失敗しました。
}
});
}