ストアでは、クロスプラットフォームに対応した通常の課金フローに組み込めない追加(独自)機能を提供することがあります。Unity IAP の初期化に成功すると、引数として得られる IExtensionProvider
を介して拡張機能にアクセスすることができます。
拡張機能を使用するときは、プラットフォームに依存したコンパイルを行う必要はなく、各拡張機能の内部でどのプラットフォームでも動作するようにフェイクのノーオペレーション実装が行われています。
例えば、Apple が提供している Apple サーバーからアプリレシートをリフレッシュする RefreshReceipt
には以下のコードでアクセスします。これはさまざまな Unity IAP プラットフォームでコンパイルすることができ、Android のような Apple のプラットフォーム以外では、Lambdaで書かれたコードは実行されないことを意味します。
/// <summary>
/// Unity IAP が購入可能なときに呼び出されます
/// </summary>
public void OnInitialized (IStoreController controller, IExtensionProvider extensions)
{
extensions.GetExtension<IAppleExtensions> ().RefreshAppReceipt (result => {
if (result) {
// Refresh が問題なく終了しました。
} else {
// Refresh が失敗しました。
}
});
}