ユーザーがアプリケーションを再インストールするときは、すでに所有している非消費型とサブスクリプションのプロダクトを復元する必要があります。アプリストアは、Unity IAP が取得できる各ユーザーの非消費型および更新可能なサブスクリプションのプロダクトを永続的に記録します。Apple プラットフォームの更新不可のサブスクリプションは復元できません。Apple プラットフォームで更新不可のサブスクリプション製品を使用する場合は、アクティブなサブスクリプションの記録を保持し、デバイス間のサブスクリプションの同期はユーザー自身の判断で行ってください。
サポートしているプラットフォーム (Google Play と Universal Windows アプリ) では、Unity IAP は初期化の際に自動的にリストア (復元) を行い、初回の初期化時、所有しているアイテムごとに IStoreListener の ProcessPurchase メソッドが呼び出されます。
Apple のプラットフォーム上では、前回のトランザクションを取得するには、リストアするかどうかのボタンを表示して、ユーザーからパスワードを入力してもらわなくてはなりません。トランザクションの復元中、IStoreListener の ProcessPurchase メソッドは、ユーザーがすでに所有しているアイテムすべてに実行されます。
/// <summary>
/// Your IStoreListener implementation of OnInitialized.
/// </summary>
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
extensions.GetExtension<IAppleExtensions> ().RestoreTransactions (result => {
if (result) {
// This does not mean anything was restored,
// merely that the restoration process succeeded.
} else {
// Restoration failed.
}
});
}