Help us understand the problem. What is going on with this article?

Unity5.3のあの機能に触ってみた(アプリ内課金編)

More than 3 years have passed since last update.

あいさつ

CYBIRDエンジニア Advent Calendar 2015の14日目を担当します@yyama2です。
普段はUnityを使ってクライアントアプリ開発をしています。
昨日は@fuppiさんの「HiveからSparkに変えたら14時間分の集計バッチが3時間まで短縮できた話」でした。
時間短縮は作業効率の他にも、自身の精神的ダメージにも関わってくる、という点が、@fuppiさんのリアルな実体験が伝わってくるようでしたねw

はじめに

先日、12/8にとうとうUnity5.3がリリースされました!
Unity5.3では様々な新機能が搭載され、より便利に開発が進められるようになっています(のハズです。)
その追加機能のひとつ、待望の課金機能について今回触れていきたいと思います!

Unityのアプリ内課金事情

いままで、Unityにはアプリ内課金機能がなかったので、
自前でアプリ内課金を実装するか、Unity Asset Storeで誰かが作った課金機能のアセット(プラグイン)を購入するしかありませんでした。
多くのかたは、アセットを購入して実装コストを削減していたのではないでしょうか。

で、今回のバージョンアップで待望 (というか、実装されていないのが当たり前すぎて忘r)の課金機能が搭載!!
実際にAndroidの課金機能を通して、デモを動かしてみました!

Unity5.3のダウンロード

Unity5.3はこちらのページからダウンロードできます。
いままでのUnityとは違い、 必要なプラットフォームを選択してインストール することができるのでセットアップの時間も短縮できます。
unity001.png

課金機能の有効化

Unity5.3から提供される課金機能はデフォルトでは有効になっていないので、こちらの手順を参考に有効化してみます。

Servicesウィンドウを開く

Window > Services で開くことができます。
開いたら、適当 なIDを入力しましょう。
unity003.png

In-App Purchasing(アプリ内課金)を有効化

In-App Purchasingを選択して、Enableをクリックします。
unity004.png
対象年齢について聞かれるので、13歳以下を対象としたアプリでない方にチェック。
unity007.png
importをクリック。ここでみてわかるように、iOS AppStore/Andorid GooglePlayStore/Mac AppStore/WindowsStoreの4つのストアでの課金をサポートしています。
unity008.png
そうすると、アプリ内課金に必要な機能(Plugins/UnityPurchasing)のインポートが行われます。
↓こんな感じ。
unity013.png
このインポートが完了すると、Androidの場合は課金用のパーミッションがアプリに追加されるようになります。

GooglePlayStoreアップ時の表示

unity016.png

課金機能をマウスクリックだけでぽちぽち進めていくだけで、Androidは権限まで追加されて楽チン!

実装

今回は簡単な動作確認を行うため、APIDemo.csの下記の部分をAwake()を修正して検証してみました。

IAPDemo.cs
    ・・・
    public void Awake()
    {
        ・・・

        var builder = ConfigurationBuilder.Instance( module );

        /////////////////////////////////////////////////////////////////
        // 自分で登録したアプリの情報に書き換え
        /////////////////////////////////////////////////////////////////

        // API_KEYはキーを別途定数定義
        builder.Configure<IGooglePlayConfiguration>().SetPublicKey( API_KEY );

        builder.AddProduct( "Unityで100円課金するぞー!", ProductType.NonConsumable, new IDs
        {
            { "jp.yyama2.demo.nonconsume", GooglePlay.Name }
        });
        // ストアごとにIDが違う場合
        builder.AddProduct( "Consume100", ProductType.Consumable, new IDs
        {
            { "jp.yyama2.demo.consume", GooglePlay.Name },
            { "jp.yyama2.demo.consumable", AppleAppStore.Name },
        });
        // ストアごとにイDが一緒の場合
        builder.AddProduct( "購読100", ProductType.Subscription, new IDs
        {
            // 
            { "jp.yyama2.demo.subscription", GooglePlay.Name, AppleAppStore.Name }
        });

        /////////////////////////////////////////////////////////////////
        // 書き換えここまで
        /////////////////////////////////////////////////////////////////

        // Now we're ready to initialize Unity IAP.
        UnityPurchasing.Initialize( this, builder );
    }
    ・・・

と、上記の箇所のみ修正しました。

実際に動かしてみた

アプリ起動時、Awakeで商品情報やAPIキーをもとに初期化が行われます。

APIDemo.csでは、初期化完了時のコールバックOnInitialized()関数でUIの初期化処理を行っています。
app001.png

購入してみる

unity002.png

app003.png

購入後

app004.png

再起動(Consumable以外のアイテムは状態が保存されている。というか、Consumableは消費されている。)

app005.png

今回アプリ内課金を試してみて思ったこと

メリット

  • Unity側の実装は、IAPDemoに沿った実装ならすぐに実装が可能!(だと思われる。)
  • プラグインを買う必要がないのでお財布に優しい。
  • 複数のプラットフォームの課金アイテムを1ソースで管理しやすい構造になっている。
  • UnityAnaliticsと連携しやすい(らしい)。
  • 既存のプラグインよりもに、プラットフォームの拡張の夢が広がりんぐ(勝手に思ってるだけ)。

デメリット

  • 既存のアプリだと導入しにくい(というかもう差し替えられないでしょ・・・)
  • まだ、4つのプラットフォームしか対応していないので他のスマホ以外にも対応しようと思った場合に、まだ導入時期ではない。

デメリットというか大きな問題が・・・↓

注意!まだベータ版

こちらの手順のページでは、大きな文字で (Beta) と書かれていますので、実際に利用する際は自己責任で・・・

まとめ

Unityでやっとこさ実装された課金機能のデモプレイを実践でした。
今回、何が一番つまづいたかというと、
Androidの課金アイテムのテストの準備でした。

  • アプリは β版公開 しないといけない(反映まで1〜2時間以上。。。)
  • テストアカウント登録 しないと課金されちゃう
  • β版のテスター登録 をする必要がある
  • ケーブル転送じゃなく、PlayStoreからダウンロードする必要がある(これは正確には違うかもしれないけど・・・) などなど。。。

改めて勉強になったので、よかったです。

おわりに

いかがだったでしょうか。
Unity単体での開発がどんどん便利になっていく一方ですね!
プラグインなしで開発をスタートできるっていうのは、個人で開発を行っている人はもちろん、
企業で開発をしていても、保守するプラグインが少なくなるので、非常にいいことなのではないでしょうか。
(あとは、 プッシュ通知WebView動画再生 と・・・)

今回の記事は @fuppiさんがハードルを上げてくれたおかげで
気合い入れて書きましたが、キャプチャや説明がわかりやすいかどうかがものすごく心配な今日この頃です。
この記事をみてUnityのアプリ内課金触ってみようかな?とか思っていただけたら幸いです^q^

明日のCYBIRDエンジニア Advent Calendar 2015の担当は、@UsuiYasuhikoさんの「自己分析」です。
どんな内容になるんでしょうか。楽しみです!

yyama2
Unity とAndroid やってます。 メモ書きばっかになりますすいません.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした