Sponsor Link
環境&対象
- macOS Monterery beta 5
- Xcode 13 beta5
- iOS 15 beta
In-App Purchase できるアイテム
In-App Purchase には、以下のような種類が定義できます。
- Consumables
- Non-consumables
- Auto-renewable subscriptions
- Non-renewing subscriptions
Consumables
例えば、ゲーム内通貨のような 消費することでなくなってしまうタイプのアイテム
Non-consumables
ゲーム内で新しいアイテムが使用できるようになる というような消費されないタイプのアイテム
Auto-renewable subscriptions
ニュース購読契約 のような期間を決めてサービスが提供されるようなタイプのアイテム
このタイプのアイテムは、ユーザーがキャンセルするまで一定期間ごとに更新され 自動的に課金されます。
Non-renewing subscriptions
Auto-renewable subscriptions と似ていますが、自動的に更新されない点が異なるアイテム
restore
ユーザーが、端末を買い替えたり、何らかの事情で アンインストール後に再インストールを行うと、それまでの購入情報がデバイス上からは消去されている状態になります。
ユーザーが以前に In-App Purchase で購入しているならば、アプリ内の復元(Restore) 機能を使用して、それらの機能を再度有効にすることができるようにする必要があります。
In-App Purchase できるアイテムのうち、StoreKit を使った Restore の対象となるアイテムは、以下のタイプです。
- Non-consumables
- Auto-renewable subscriptions
Apple は、ユーザーが Auto-renewable subscriptions と Non-renewing subscriptions を購入しているならば、ユーザーのデバイスでそれらが有効になるようにすることと、Restore によって、再度利用可能にすることは、アプリ の責務としています。
つまり、Non-consumables と Auto-renewable subscriptions は、StoreKit の情報を使用して restore できますが、Non-renewing subscriptions は、アプリ(デベロッパ)側で restore できるようにしないといけないということです。
restore 対応
Non-consumables
SKReceiptRefreshRequest を使用して、ローカルの Receipt を更新し、Receipt に含まれる購入記録を確認して restore します。
Auto-renewable subscriptions
restoreCompletedTransactions を使用して、transaction を再度処理し、restore します。
Non-renewing subscriptions
StoreKit は特にサポートしないので、iCloud を使って記録しておくか、自前サーバーで管理することになります。
まとめ:In-App purchase の restore
- In-App purchase で restore 対応が必要なのは、Non-consumables, Auto-renewable subscriptions, Non-renewing subscriptions
- StoreKit は、Non-consumables と Auto-renewable subscriptions の restore をサポートする
- Non-renewing subscriptions は、アプリが独自に restore する必要がある
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
Sponsor Link