IAP の変更点


[[API Reference]] > [[extension.iap]] > IAP
* IAP [#l96e0abd]
アプリ内課金(Android / iOS)のための便利なメソッドとプロパティを提供します。 
メソッドとプロパティはstaticであるため、インスタンス化する必要はありません、
しかし使用するにはあらかじめ初期化が必要となります。 
すべてのメソッドは、非同期(非ブロッキング)です。イベントを発生後はコールバックにより、操作が成功したか失敗したを判定します。

最初のステップは extension を初期化することです。
これは IAP.initialize() により行います。
結果は、IAPEvent.PURCHASE_INIT または IAPEvent.PURCHASE_INIT_FAILED により判定を行います。
また、IAP.available プロパティにより、extension を利用可能かどうか、いつでも判定することができます。

IAPはすべてのプラットフォームで統一されたAPIを提供することを目指していますが、
プレットフォーム固有のプロパティ・メソッドのため、いくつかの違いがあります。
以下にそのワークフローを記述します。

** Androidのワークフロー [#lc30da73]
初期化が完了したら、たいていは所持しているアイテムやアプリ内通過の一覧を要求することとなります。
IAP.queryInventory() により要求を行います。
この方法は、アイテムの詳細なリストを取得するために使用することができます。

次に、IAP.purchase() でアイテムを購入することができ、
消耗アイテムであれば IAP.consume() を購入後に呼び出す必要があります。

** iOSのワークフロー [#z84ef9ff]
初期化が完了したら、通常はプロダクトの詳細を要求します。
IAP.requestProductData() により販売アイテムを得られます。
そして、IAP.restore() により以前にユーザが購入した非消耗アイテムを復元します。

その後、IAP.purchase() でアイテムを購入することができます。
iOSの場合は IAP.consume() を呼び出す必要はありません。消耗アイテムはローカルでイベントリから購入を消去することができます。

----

※[[IAPEvent]]を参照すると、購入や課金アイテムの詳細について確認することができます。

----
#contents
----

* staticフィールド [#h80dc274]
** available:Bool : IAPを利用可能かどうか [#v0741026]
** manualTransactionMode:Bool : 手動でトランザクションを行うかどうか [#h7c47f9d]
** inventory:[[Inventory]] : インベントリ情報 [#n4afbe27]

----
* staticメソッド [#ya0c3ccc]
** initialize() : IAPを初期化します [#p7e43522]
- 引数
-- publicKey:String = "" : base64でエンコードされたアプリケーションの公開鍵(Androidのみ)
 これは購入署名の検証に使用されます。
 あなたのアプリの Google Play Developer Console ページにあります。
 開発者の公開鍵ではないことに注意して下さい
- 戻り値:Void
 結果はIAPEventにより受け取ります。
   ・PURCHASE_INIT : 初期化成功
   ・PURCHASE_INIT_FAILED : 初期化失敗

** purchase() : 指定のプロダクトを購入する意思を送信します [#n5f37661]
- 引数
-- productID:String : iOS / Androidともに指定が必要。商品を表すユニークID (Android Sku)
-- devPayload:String = "" : Androidのみ。追加データ(developer payload)で、購入が完了した時に購入データを返します
 この追加データは永久にバインドされると、購入情報を紹介したとき常に返されます。
- 戻り値:Void
 返却されるIAPEvent
 ・PURCHASE_SUCCESS : 購入成功
 ・PURCHASE_FAILURE : 購入失敗
 ・PURCHASE_CANCEL : ユーザが購入をキャンセルした

** consume() : 特定のプロダクトを消費する意思を送信します [#l7f72484]
- 引数
-- purchase:Purchase : 商品情報
- 戻り値:Void
 返却されるIAPEvent
 ・PURCHASE_CONSUME_SUCCESS : 消費成功
 ・PURCHASE_CONSUME_FAILURE : 消費失敗

** queryInventory() : 在庫を照会します [#f2eb5fd1]
 これはサーバからすべての所有アイテムを紹介します。
 その他プロダクトを指定して紹介した場合と同様となります。
- 引数
-- queryItemDetails:Bool = false : プロダクトの詳細情報(価格、説明文など)を取得するかどうか
-- moreItems:Array<String> = null : 所持していないアイテム情報も取得する場合はプロダクトIDのリストを指定します
 この値に null もしくは、queryItemDetails = false を指定すると無視されます

-戻り値:Void
 返却されるIAPEvent
 ・PURCHASE_QUERY_INVENTORY_COMPLETE : インベントリー取得成功。
                                       値はstaticプロパティの「inventory」に格納されます
 ・PURCHASE_QUERY_INVENTORY_FAILED : インベントリー取得失敗