LoginSignup
8
6

More than 5 years have passed since last update.

【Cocos2d-x】【Android】ニフティクラウド mobile backendのプッシュ通知を組み込む

Last updated at Posted at 2016-03-15
  • mBaasの公式ではCocos2d-xはサポートされていないため、私と同じく色々な事情からどうしてもニフティクラウドのmobile backendのプッシュ通知を既存のCocos2d-xプロジェクトで使いたい、という人の役に少しでも立てればと思い執筆しました。
  • Cocos2d-x framework 3.8を使用しています。
  • NCMB 2.2.1を使用しています。
  • 筆者の環境では、proj-androidフォルダが作成されないため、AndroidStudioを直接使わずに導入する方法の解説となります。(jarファイルの入手のため、一部使用します)
  • 基本的にはドキュメントクイックスタートプッシュ通知_基本的な使い方に沿えば実装可能ですが、一部ドキュメントに書かれている通りに実装しようとすると、筆者の場合躓く箇所があったため、その点を補足する形になっています。

jarファイルの入手と設置

  • proj-androidフォルダが無いCocos2d-xプロジェクトでは、AndroidStudioで直接編集出来ないため、Gradleが利用出来ません。
  • そこで、jarファイルを入手し、libsフォルダに設置する必要があります。

事前準備

  1. AndroidStudioで既存のプロジェクトを開きます。(無ければ新規プロジェクトを作成してください)
  2. build.gradleのdependenciesに以下を追加しSyncします。

compile 'com.google.code.gson:gson:2.3.1'

  1. AndroidStudioメニューのTools -> Android -> SDK Manager をクリックします。
  2. Launch Standalone SDK Manager をクリックします。
  3. Extras の Android Support Library, Google Play services の Status が Not installed の場合、チェックを付け、右下の「install 2 package...」 をクリックし、インストールします。
    • この時、Name の項目にマウスオーバーし続けると、ファイルが置かれる(置かれた)パスが表示されます。

sdk_manager_path.png

各jarファイルの場所

  • 下記を参考にし、libsフォルダにjarファイルを入れてください。

GSON 2.3.1


(ホームディレクトリ)/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson

android-support-v4, android-support-v7-appcompat


(ホームディレクトリ)/Library/Android/sdk/extras/android/support/v7/appcompat/libs

Google Play Services

  • こちらは、jarファイル単体ではなく、フォルダを追加してください。

(ホームディレクトリ)/Library/Android/sdk/extras/google/google_play_services/libproject

  • フォルダを追加後、proj.android直下のproject.propertiesを開き、一行追加します。

android.library.reference.1=libs/google-play-services_lib

パッケージ名に合わせたフォルダの生成とファイルの設置

  • 筆者の環境では、パッケージ名をデフォルトから変更しているため、以下のmeta-dataの値を使用するこの箇所の処理が問題になりました。
  • そこで、以下の画像のように proj.android/src の直下にパッケージ名に合わせたフォルダを作成し、そこにjavaファイルを作成し、配置しました。

スクリーンショット 2016-03-16 3.39.35.png

  • 生成したフォルダに設置したOpenPushStartActivityには以下のように記述しています。

package (生成したフォルダ構造に合わせたパッケージ名)

import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxHelper;

import android.os.Bundle;

public class OpenPushStartActivity extends Cocos2dxActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

AndroidManifestへの追記

  • Manifestに追加したActivityの記述を以下のように追加しておきます。

<activity
    android:configChanges="orientation"
    android:label="@string/app_name"
    android:name="(生成したフォルダ構造に合わせたパス)"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
</activity>

meta-dataの記述

  • タップされた時に起動するActivityを指定するmeta-dataには以下のように記述しました。

<meta-data
    android:name="openPushStartActivity"
    android:value=".OpenPushStartActivity" />

  • 以上がドキュメントの補足説明になります。

余談

  • 当初は app C cloudのプッシュ通知サービスを使用する予定でしたが、タイミングが悪いことに2016年3月1日より新規登録を停止しており、問い合わせると、プッシュ通知サービスが再び利用出来るのが5月以降との返答でした。(納期に間に合わないためこの時点で選択肢から消えました)
  • Growth Pushもapp C cloud同様Cocos2d-xに対応しているようでしたが、こちらは累積1,000,000リクエストを超えると有料だったため、選択肢から消えました。
  • 紆余曲折の後、消極的選択ですがニフティのmBaasを使うことになり、今回案の定他のCocos2d-x非対応のサービス導入時に起きた苦労が生じたため、このような記事を執筆しました。(導入する必要に迫られたサービスに限って、「Cocos2d-x?知らない子ですね」なので…Unityはサポートされている事が多い気がします)
  • 間違いや抜けがある可能性がありますので、もしあれば、ご指摘戴ければ幸いです。
8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6