基本となるストアシステム(Google Play や Apple App Store)の公開インターフェースは、すでに Unity IAP を拡張してアプリ内で購入できるようにサポートしています。
Unity IAP は 拡張可能で、IPurchasingModule
実装を通してストアシステムのと登録をサポートしていて、初期化中に ConfigurationBuilder
によって共有されます。
サンプルの Store クラス
#pragma strict // Purchases always succeed at the sample store internal class SampleStore implements IStore { public const var Name: String = "samplestore"; private var m_Biller: IStoreCallback; private var m_PurchasedProducts: List.<String> = new List.<String>(); public function Initialize(biller: IStoreCallback) { m_Biller = biller; } public function RetrieveProducts(productDefinitions: ReadOnlyCollection.<ProductDefinition>) { var products = new List.<ProductDescription>(); for (var product in productDefinitions) { var metadata = new ProductMetadata("$123.45", "Fake title for " + product.id, "Fake description", "USD", 123.45m); products.Add(new ProductDescription(product.storeSpecificId, metadata)); } m_Biller.OnProductsRetrieved(products); } public function Purchase(product: ProductDefinition, developerPayload: String) { // Keep track of non consumables. if (product.type != ProductType.Consumable) { m_PurchasedProducts.Add(product.storeSpecificId); } m_Biller.OnPurchaseSucceeded(product.storeSpecificId, "{ \"this\" : \"is a fake receipt\" }", Guid.NewGuid().ToString()); } public function FinishTransaction(product: ProductDefinition, transactionId: String) { } }
using System; using System.Collections.ObjectModel; using System.Collections.Generic; using UnityEngine.Purchasing; using UnityEngine.Purchasing.Extension;
// Purchases always succeed at the sample store internal class SampleStore : IStore { public const string Name = "samplestore"; private IStoreCallback m_Biller; private List<string> m_PurchasedProducts = new List<string>();
public void Initialize(IStoreCallback biller) { m_Biller = biller; }
public void RetrieveProducts(ReadOnlyCollection<ProductDefinition> productDefinitions) { var products = new List<ProductDescription>(); foreach (var product in productDefinitions) { var metadata = new ProductMetadata("$123.45", "Fake title for " + product.id, "Fake description", "USD", 123.45m); products.Add(new ProductDescription(product.storeSpecificId, metadata)); } m_Biller.OnProductsRetrieved(products); }
public void Purchase(ProductDefinition product, string developerPayload) { // Keep track of non consumables. if (product.type != ProductType.Consumable) { m_PurchasedProducts.Add(product.storeSpecificId); } m_Biller.OnPurchaseSucceeded(product.storeSpecificId, "{ \"this\" : \"is a fake receipt\" }", Guid.NewGuid().ToString()); }
public void FinishTransaction(ProductDefinition product, string transactionId) { } }
FinishTransaction | トランザクションが記録されているときに Unity IAP によって呼び出されます。 |
Initialize | ストアの初期化を行います。 |
Purchase | ユーザーからの購入リクエストを処理します。 |
RetrieveProducts | 非同期による IStoreCallback の結果として購入レシートを含む最新のプロダクト メタデータを取得します。 |