ユーザーがアプリケーションを再インストールするときは、すでに所有している非消費型とサブスクリプションのプロダクトを復元する必要があります。アプリストアは、Unity IAP が取得できる各ユーザの非消費型および更新可能なサブスクリプションのプロダクトの永続的に記録します。Apple プラットフォームの更新不可のサブスクリプションは復元できません。Apple プラットフォームで更新不可のサブスクリプション製品を使用する場合は、アクティブなサブスクリプションの記録を保持し、デバイス間のサブスクリプションを同期することはユーザー自身の判断で行ってください。
サポートしているプラットフォーム (Google Play と Universal 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 {
// リストアが失敗しました
}
});
}