「Unity/課金/サンプル」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→全部コードで処理する場合) |
(→iOSの場合) |
||
| 行10: | 行10: | ||
#ituneconnect管理画面/app内課金/管理/+をクリック | #ituneconnect管理画面/app内課金/管理/+をクリック | ||
#消耗型を選択し、id(stone10)などを入れてく | #消耗型を選択し、id(stone10)などを入れてく | ||
| + | #審査用の画像は( 640 x 920)で登録すればよい | ||
==定額課金== | ==定額課金== | ||
2020年7月8日 (水) 21:09時点における版
目次
都度購入
Androidの場合
- GooglePlayDeveloper/指定アプリ/ストアで表示/アプリ内サービス/管理対象のアイテム/管理対象のアイテム作成
- プロダクトidを(stone10)などで入れる(storeと連携してないと、購入ボタンを押しても商品が無いとなる)
- 有効にするを選択して、有効になっていることを確認
日本語を追加した場合は、日本語の説明も入れないと、保存されないので気を付ける。
iOSの場合
- ituneconnect管理画面/app内課金/管理/+をクリック
- 消耗型を選択し、id(stone10)などを入れてく
- 審査用の画像は( 640 x 920)で登録すればよい
定額課金
Androidの場合
- GooglePlayDeveloper/指定アプリ/ストアで表示/アプリ内サービス/定期購入
- プロダクトidを(com.example.hogeapp.monthly)などで入れる(storeと連携してないと、購入ボタンを押しても商品が無いとなる)
- 有効にするを選択して、有効になっていることを確認
日本語を追加した場合は、日本語の説明も入れないと、保存されないので気を付ける。
iOSの場合
- ituneconnect管理画面/app内課金/管理/+をクリック
サブスクリプションがない?
Unityから課金用ボタン設定
課金の記述方法として以下2パターンがある
- 全部コードで処理する方法
- コードレス処理がある。
全部コードで処理する場合
- 以下課金呼び出しコードを記述(例:stone10はproductID)
UnityIAPManager manager;
manager = new UnityIAPManager();
manager.OnPurchaseClicked("stone10");
UnityIAPManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Purchasing;
public class UnityIAPManager : IStoreListener
{
private IStoreController controller;
private IExtensionProvider extensions;
public UnityIAPManager()
{
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
builder.AddProduct("stone10", ProductType.Consumable);
UnityPurchasing.Initialize(this, builder);
}
/// <summary>
/// Unity IAP が購入処理を行える場合に呼び出されます
/// </summary>
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
this.controller = controller;
this.extensions = extensions;
Debug.Log("UnityIAPManager OnInitialized");
foreach (var product in controller.products.all)
{
Debug.Log("title=" + product.metadata.localizedTitle);
Debug.Log("Description=" + product.metadata.localizedDescription);
Debug.Log("PriceString=" + product.metadata.localizedPriceString);
}
}
/// <summary>
/// Unity IAP 回復不可能な初期エラーに遭遇したときに呼び出されます。
///
/// これは、インターネットが使用できない場合は呼び出されず、
/// インターネットが使用可能になるまで初期化を試みます。
/// </summary>
public void OnInitializeFailed(InitializationFailureReason error)
{
Debug.Log("OnInitializeFailed");
}
/// <summary>
/// 購入が終了したときに呼び出されます。
///
/// OnInitialized() 後、いつでも呼び出される場合があります。
/// </summary>
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
{
Debug.Log("PurchaseProcessingResult " + e.purchasedProduct.metadata.localizedTitle);
return PurchaseProcessingResult.Complete;
}
/// <summary>
/// 購入が失敗したときに呼び出されます。
/// </summary>
public void OnPurchaseFailed(Product i, PurchaseFailureReason p)
{
Debug.Log("OnPurchaseFailed product=" + i.ToString());
if (p == PurchaseFailureReason.PurchasingUnavailable)
{
// デバイス設定で IAP が無効である場合があります。
}
}
public void OnPurchaseClicked(string productId)
{
if (controller != null)
{
controller.InitiatePurchase(productId);
}
}
}
全部コードで処理する場合(その2)
こちらを使ってもいける。
https://gist.github.com/YoshihideSogawa/f7c118127ce50e593a5b4a12e8426d6e
- 上記をPurchaser.csで保存する
- Unityのヒエラルキーに新規Objectを作成し、適当な名前で、Purchaser.csをアタッチする
コードレスの場合
(未完成です)
- unityメニュー/windows/UnityIAP/CreateIAPButtonでボタンを作成する
- unityメニュー/windows/IAP Catalogをクリックし以下のような詳細データを入れる
id:monthlyなど type:Subscription(自動課金)
- 作ったbuttonのプロパティのproductIdに先ほどいれたid(monthlyなど)いれる
- Assets/Plugins/UnityPurchasing/script/CodelessIAPStoreListener.csにイベントが発生するので確認する
参考
コードレスの場合の参考
http://it-happens.info/unity-purchase/
全部コードの場合の参考
https://docs.unity3d.com/ja/current/Manual/UnityIAPSettingUp.html
https://gist.github.com/YoshihideSogawa/f7c118127ce50e593a5b4a12e8426d6e
