Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

IStore

interface in UnityEngine.Purchasing.Extension

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える

説明

基本となるストアシステム(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) { } }

Public 関数

FinishTransactionトランザクションが記録されているときに Unity IAP によって呼び出されます。
Initializeストアの初期化を行います。
Purchaseユーザーからの購入リクエストを処理します。
RetrieveProducts非同期による IStoreCallback の結果として購入レシートを含む最新のプロダクト メタデータを取得します。