ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

Unityアプリ開発!mBaaSでアプリにプッシュ通知を組み込もう!

こんにちは!新入社員の平出です!

皆さん、Unityでアプリ開発してますか!?せっかく開発したアプリ、もっと多く使ってもらいたいですよね。その手段の一つとしてプッシュ通知があるのはご存知でしょうか?また、プッシュ通知は組み込んでみたいけど、実装が大変そうだなと思っていないでしょうか?そうした、メンドクサさを省いてくれるサービスがあるんです!それがニフティクラウドmobile backendというクラウドサービスです。今回はニフティクラウドmobile backendを使ってUnityアプリへプッシュ通知を組み込むサンプルアプリを作りました。こちらを用いて、チュートリアル形式でプッュ通知の組み込みが体験できます!ぜひ、試してみてください!

ニフティクラウドmobile backendとは?

about_mBaaS ニフティクラウドmobile backendとは、mBaaS(mobile backend as a Service)と呼ばれるクラウドサービスで、スマートフォンアプリでよく利用される汎用的な機能をクラウドから提供するサービスです。

クラウド上に用意された機能をAPIで呼び出すだけで利用できるので、サーバー開発・運用不要でよりリッチなバックエンド機能をアプリに実装することができます。 ここからはニフティクラウドmobile backendではなくmBaaSと呼ばせていただきます。Unity SDKも用意しており、Unityからも簡単に利用できます。

今回の概要

overview

mBaaSのプッシュ通知は、各プラットフォームが提供している通知サービスを利用しています。上図のように、アプリ(Unity)・サーバー(ニフティクラウドmobile backend)・通知サービス(GCM/FCMあるいはAPNs)の間で認証が必要になります。

以上を踏まえて、5つの手順で進めて行きたいと思います。

  1. 事前準備(GCM/FCMあるいはAPNsの設定)
  2. mBaaSでAPIキー取得
  3. サンプルプロジェクトにAPIキーを設定
  4. 動作確認(実機ビルド)

それでは、早速始めましょう!

1.事前準備

GCM/FCMあるいはAPNsの設定に関しては下記の記事にそれぞれまとめています。

こちらをご覧になって、GCM/FCMあるいはAPNsの設定をお願いします!

2.mBaaSでAPIキー取得

まずはmBaaSの会員登録(無料)します。登録が完了してログインをすると、下図のように「アプリの新規作成」画面が出るのでアプリを作成します。

monaca_push_api

アプリを作成すると下図のような画面になります。この2種類のAPIキー(アプリケーションキーとクライアントキー)はUnityで作成するアプリにmBaaSを紐付けるために使用します。

android_push_api

続いてプッシュ通知の設定も行いましょう。

monaca_push_api

3.サンプルプロジェクトにAPIキーを設定

サンプルプロジェクトをダウンロードしてZIPファイルを解凍します。解凍できたらUnityを起動し、「open」を選択してダウンロードしたプロジェクトを指定します。プロジェクトが開いたら「start」シーン>【ヒエラルキー(Hierarchy)ビュー】から、NCMBSettings、NCMBManagerオブジェクトを確認します。

※ 存在しない場合は、【ヒエラルキー(Hierarchy)ビュー】からCreate Emptyを作成し、各オブジェクト名称に更新後、【プロジェクト(Project)ビュー】から各ソースをドラッグ&ドロップします。

unity_push_api

確認ができたらNCMBSettingsオブジェクトをタブし、inspectorを開いて先程mBaaSのダッシュボード上で確認したAPIキーを貼り付けます。貼り付けられたら「Use Push」にチェックを入れます。(Android端末で動作確認をする場合はプロジェクト番号を貼り付けます。)

 

unity_push_api2

4.動作確認

実機ビルドをして動作確認を行います。ここからは端末に応じて該当する作業を行ってください。

Android端末で動作確認をする場合

  • Android端末向けにビルドを実行する事で.apkファイルを作成する必要があります
  • Android端末にプッシュ通知を行う場合は、Android Manifestの設定が必要になります
    • 「/Assets/Plugins/Android/AndroidManifest.xml」では、以下のパッケージ名に注意して設定する必要があります
    • パッケージ名を正しく設定します(Bundle Identifierと一致為)
    • パッケージ名(例:com.nifty.push.quickstart)をYOUR_PACKAGE_NAMEの文字列で一括置換すると便利です

 

 1) パッケージ名が正しく設定されているか確認する【YOUR_PACKAGE_NAME】

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="YOUR_PACKAGE_NAME">
2)パッケージ名.permission.C2D_MESSAGEという書き方になっているか確認する【YOUR_PACKAGE_NAME】

    <!-- Put your package name here. -->
    <permission android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <!-- Put your package name here. -->
    <uses-permission android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE" />
3)通常はcom.nifty.cloud.mb.ncmbgcmplugin.アクティビティ名を設定する
  Prime31プラグインを利用している場合はcom.nifty.cloud.mb.ncmbgcmpluginをcom.prime31に変更する

<activity android:name="com.nifty.cloud.mb.ncmbgcmplugin.UnityPlayerProxyActivity"
        android:label="@string/app_name"
        android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
4) レシーバータグの中にあるcategoryタグの名前を確認する【YOUR_PACKAGE_NAME】

    <!-- [START gcm_receiver] -->
    <receiver
        android:name="com.nifty.cloud.mb.ncmbgcmplugin.NCMBGcmReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <!-- Put your package name here. -->
            <category android:name="YOUR_PACKAGE_NAME" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        </intent-filter>
    </receiver&lgt;
    <!-- [END gcm_receiver] -->
  • Android端末向けのビルドは、まずメニューバーのFileからBuild Settingsを開きます
    • Platform欄から【Android】を選択し、「Switch Platform」ボータンを押します
    • 「Player Settings...」ボータンを押します
    • 【インスペクター(Inspector)ビュー】から、[Bundle Identifier]にはパッケージ名と一致するようにします
    • 【インスペクター(Inspector)ビュー】から、Android実機に書き出しエラー[INSTALL_FAILED_CONTAINER_ERROR]の場合為、[Install Location]にはAutomaticに変更します
    • 「Build」ボータンを押します
      • ビルドのapkファイル名と出力場所をダイアログから指定します

unity_push_check_android

unity_push_check_android2

 

  • ビルド完了の.apkファイルを確認し、Android実機にインストールします。

Androidでの操作は以上になります!

iOS端末で動作確認をする場合

  • iOS端末でビルドを行うには、Unityで.xcodeprojファイルを作成する必要があります
  • iOS端末向けのビルドは、まずメニューバーのFileからBuild Settingsを開きます
  • PlatformにiOSを選択した状態でビルドを実行することで「.xcodeproj」ファイルが生成されXcodeが起動します

unity_push_check_ios

Xcodeでビルドを実行する

  • Bundle Identifierの設定 TARGETS → Unity-iPhone → General → ▼identity Bundle Identifier にApple Developer ProgramのAppIDで設定した、Bundle IDを入力する (※必ず同じBundle IDを設定してください)

 

unity_push_check_ios2

  • Code Signing IdentityとProvisioning Profileを設定する TARGETS → Unity-iPhone → Build Settings → ▼Code Signing
    • 【インスペクター(Inspector)ビュー】から、iOS実機に書き出しエラー[INSTALL_FAILED_CONTAINER_ERROR]の場合為、[Install Location]にはAutomaticに変更します
    • 「Build」ボータンを押します

unity_push_check_ios3

設定後に実行することで、iOS端末でのデバッグが可能になります。

iOSの設定は以上になります!

ちなみに...

インストールしたアプリを起動した時点でAndroid端末はレジスタレーションID、iOS端末はデバイストークンが取得されます。mBaaSのダッシュボードで「データストア」>「installation」クラスを確認してみましょう!

※プッシュ通知の許可を求めるアラートが出たら、必ず許可してください!

unity_push_check_installation

プッシュ通知を送りましょう!

では、いよいよプッシュ通知を送りましょう!mBaaSのダッシュボードで「プッシュ通知」>「+新しいプッシュ通知」をクリックして、必要な項目を入力してプッシュ通知を作成しましょう!

monaca_push_check5

少し待つと端末にプッシュ通知が届きます!!

活用事例も御座います

プッシュ通知の設定いかがだったでしょうか?mBaaSを使えば簡単に設定できることが分かっていただけたと思います!mBaaSではプッシュ通知の他にもUnity用に様々なSDKを用意しております。ぜひそちらのドキュメントもご覧ください!

また、mBaaSを利用頂いているゲーム事例の紹介も行っています。ぜひ併せてご覧ください!

最後までお読みいただきありがとうございました!

新規CTA