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

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

Unity SDKがプッシュ通知に対応しました!(Android編)

ニフティクラウド mobile backend for Unity SDKをリリースして以来、ご要望の多かったプッシュ通知への対応版がリリースしました!組み込みも簡単で、Unityゲームへのプッシュ通知が実現します。ぜひお試しください。

今回はSDKに同梱しているサンプルプロジェクトを使って実際にプッシュ通知を試してみたいと思います。なお今回はAndroid向けになります。iOS向けについてはこちらの記事をご覧ください。

必要なもの

いずれも無料からはじめられます。ダウンロードまたはサインアップをお願いします。

Google Developers Consoleにて設定を行う

Google Developers Consoleにアクセスして、以下の手順を行ってください。

  • プロジェクトの作成
  • Google Cloud Messaging for Androidの有効化
  • Public API accessの追加とキーの取得
  • Sender IDの取得

こちらの手順についてはチュートリアル (Android) : GCMとの連携に必要な準備を参考にしてください。まずSender IDをメモした段階からスタートします。

Unityで新規プロジェクトを作成

Unityを立ち上げて、New Projectから新規プロジェクトを作成します。今回はサンプルを試しますので2Dとしています。

サンプルをインポート

Unity SDKを解凍してその内容にある NCMB.unitypackage および Sample.unitypackage を両方ともインポートします。ダブルクリックするとインポート画面が出ますのでそのままImportボタンを押してください。

設定変更

Asstes/Samples/PushSample にある NCMBPushSample を開きます。そのシーンの中にある NCMBSettings を開くと、Inspectorの中に Application Keyと Client Keyという項目が確認できると思います。それぞれ ニフティクラウド mobile backendの管理画面から得られるアプリケーションキー、クライアントキーを設定してください。また、Android Sender Idについて、先ほどのGoogle Developers Consoleにて得られたSender IDを設定してください。

Sender IDはGoogle Developers ConsoleのプロジェクトダッシュボードにあるProject Numberです。

サンプルの場合は問題ありませんが、プッシュ通知を使う場合はUse Pushにチェックが入っていることを確認してください。

Android SDK ManagerでGoogle Play servicesをインストール

Android SDK Managerを立ち上げて、Google Play servicesをインストールしてください。Extrasの中にあります。

インストールした後、Google Play servicesがあるフォルダを開きます。パスはGoogle Play servicesをマウスオーバーすると表示されます。例えば ~/android-sdks/extras/google/google_play_services/ です。その中にある libproject フォルダ以下の google-play-services_lib フォルダをUnityプロジェクトの Plugins/Android フォルダにコピーします。

NCMB for Android SDKをインストール

続いてニフティクラウド mobile backend for Android SDKダウンロード、解凍します。解凍すると出てくる NCMB.jar を UnityプロジェクトのPlugins/Android/libsフォルダにコピーしてください。

AndroidManifestの修正

Plugins/Androidの中にあるAndroidManifestを修正します。

パッケージ名の修正

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nifty.cloud.mb.RichPush" <-- この部分を修正してください
  :

レシーバーの修正

<!-- RECEIVER -->
<receiver
  android:name="com.nifty.cloud.mb.NCMBGCMBroadcastReceiver"
  android:permission="com.google.android.c2dm.permission.SEND" >
  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <!-- [WARNING] category android:name must be same your app package name. -->
    <category android:name="com.nifty.cloud.mb.RichPush" /> <-- パッケージ名と合わせます
  </intent-filter>
</receiver>

パーミッションの設定

どちらもパッケージ名に合わせて修正します。パッケージ名.permission.〜という形にします。

<permission android:name="com.nifty.cloud.mb.RichPush.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.nifty.cloud.mb.RichPush.permission.C2D_MESSAGE" />

ビルド設定

FIleメニュー > Build Settingsを開きます。そしてPlatformをAndroidを選択してください。

Player Settingsを押すと、Inspectorにビルド設定が表示されます。

その中のOther Settingsにある Bundle Identifierを、パッケージ名と同じ名称を指定します。

ビルド実行

後はビルドを実行します。apkファイルの保存場所を聞かれますので適当な場所に保存し、できあがったapkファイルをAndroid実機に転送します。

なお、もしビルドを実行した際に

Failed to compile resources with the following parameters:

というエラーが出た場合は、

$ sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

をターミナルで実行すると直るかも知れません(私はこのエラーでハマったので)。詳しくはunity3d - Unity - Failed to compile resources with the following parameters: - Stack Overflowを参考にしてください。

ニフティクラウド mobile backend側での準備

管理画面に入り、プッシュ通知の設定を行います。Google Developers Consoleにて作成したPublic API accessのキーを設定画面で指定します。

アプリ実行

アプリを立ち上げるとデモ画面が表示されます。

この画面上でプッシュ通知を作成すると、少し待つと実機に通知が届きます。

通知を開くと、デモアプリ側で通知に関する情報が表示されます。

管理画面からのプッシュ作成

もちろんニフティクラウド mobile backendの管理画面からプッシュ通知を作成することもできます。プッシュ通知の設定についてはチュートリアル (Android) : GCMとの連携に必要な準備を参考にしてください。


いかがでしょうか。サンプルに入っているスクリプト、プラグインを参考にしてもらえればUnityゲームにプッシュ通知を組み込むのはとても簡単です。Unityアプリのアクティブを高めるためにも必須と言えるプッシュ通知、ぜひニフティクラウド mobile backendで実現してください!