自作したストアでは、クロスプラットフォームに対応した課金フローとして組み込めない追加の機能を提供することがあります。例えば、Apple ストアのレシートをリフレッシュする機能などです。
機能を拡張して定義するには、IStoreExtension
インターフェースを継承したインターフェースを作成する必要があります。
/// <summary>
/// 自身のストアだけの機能
/// </summary>
public interface IMyExtensions : IStoreExtension
{
// User ID を提供するストアのための仮定的なメソッド
String GetUserStoreId();
}
アプリは IExtensionProvider
で拡張された機能をリクエストします。リクエストを行うと、Unity IAP は最初に有効なストアの実装をリクエストされたタイプにキャストしようとします。
キャストに失敗した場合、Unity IAP はストアのモジュールが持つ RegisterExtension
を呼び出すことで用意したインスタンスを登録、インスタンスがない場合は null を登録します。
アプリ開発者にプラットフォームの従属コンパイルを使用を強制することを回避できるように、モジュールはサポートしていないプラットフォームに対しても拡張インターフェースを提供する必要があります。