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

【GrowthPush】Cocos2d-xプロジェクトへのSDK組み込み方法まとめ

More than 3 years have passed since last update.

はじめに

GrowthPushの公式ドキュメントは、個人的にあんま当てにしない方が良い気がする。
いきなり本命プロジェクトじゃなくて、テストプロジェクトを cocos new して練習することをオススメする。

iOS/Android 共通でやること

SDKダウンロード

下からcocos2d-x用のSDKをダウンロード。(直DLリンクです。)
執筆時: v1.1.3
https://growthpush.com/downloads/cocos2dx3/libraries/latest

GrowthPushクラスの組み込み

Xcodeから、 Classes/ 配下にダウンロードしてきた growthpush-cocos2dx3-v.1.1.3/Classes/GrowthPushAdd File to "プロジェクト名" ... する。
この時「Copy items if needed」にチェックを入れるのを忘れないように。

ソース書き書き

ソース書き書きは、iOS/Androidの各SDK組み込みのあとに記述。

iOS向けにやること

iOS用SDKダウンロード

cocos用のだけでなく、iOS/Androidの各プラットフォーム用のSDKも必要。
まずはiOS用のSDKをダウンロード。(直リン)
https://growthpush.com/downloads/ios/libraries/latest

Frameworkの追加

Xcodeでプロジェクトファイルの[General]タブを開き、一番下の[Linked Frameworks and Libraries]にフレームワークファイルを追加する。

  1. [+]ボタン
  2. [Add Other...]ボタン
  3. iOS用SDKの growthpush-ios/GrowthPush.framework を追加

図解:
01.png

02.png

03.png

ここでもしシンボルが解決出来ないエラーが出るようであれば、以下の2つのフレーム笑0区ファイルをインポートすると解決出来るかもしれないらしい。(やってない。)

  • Security.framework
  • SystemConfiguration.framework

Android向けにやること

Android用SDKダウンロード

(直リン)
執筆時: v1.1.4(※問題アリ。後述)
https://growthpush.com/downloads/android/libraries/latest

ちょっと待った。

Android用のSDKファイルのv1.1.4は、GrowthPushの人がビルドする時にミスってるっぽい。
詳しくは別に投稿してある。
http://qiita.com/hashimotoryoh/items/25302c874bc95bce74d8

↑という訳で、

  1. growthpush-android-1.1.4/growthpush.jar を手動で .zip に拡張子変更
  2. それを展開
  3. 中に bin/growthpush-android.jar が有ることを確認

確認できたら次へ。
結局、無理やりパスを書くなら growthpush-android-1.1.4/growthpush.jar/bin/growthpush-android.jar これを次に使う。

JARファイルの追加

JARファイルをプロジェクトに追加する。
上記に記した growthpush-android-1.1.4/growthpush.jar/bin/growthpush-android.jar を、

  1. growthpush.jar にリネームする
  2. cocosプロジェクトの proj.android/libs/ 配下に配置する

あと2つ追加するJARファイルがある。
が、次の2つは既に有るものであれば無視して良い。配置場所は同じところ。

  • growthpush-android-1.1.4/google-play-services.jar
  • growthpush-android-1.1.4/android-support-v4.jar (これについてはバージョンが違っていても、何かが入っていれば良い。)

Android.mk の編集

cocosのプロジェクトの proj.android/jni/Android.mk に編集が必要。
LOCAL_SRC_FILESLOCAL_C_INCLUDES という変数にGrowthPushのソースのパスを追記する。

Android.mk
:
:

LOCAL_SRC_FILES := hellocpp/main.cpp \        # なんかこんな風に書いてるはず
                   ../../Classes/GrowthPush/android/GrowthPush.cpp        # これを末尾に追記

# 個人的には↓の書き方の方が好き。どっちでも良い。
# LOCAL_SRC_FILES := hellocpp/main.cpp
# LOCAL_SRC_FILES += ../../Classes/GrowthPush/android/GrowthPush.cpp

:
:

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
                    $(LOCAL_PATH)/../../Classes/GrowthPush

# これもどっちでも良い。↓
# LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
# LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes/GrowthPush

:
:

AppActivity.java の編集

AppActivity クラスは Cocos2dxActivity クラスを継承している。
これを GrowthPushCocos2dxActivity クラスを継承するようにする。

※GrowthPushのソースはあまり信用しない方が良い。
GPCocos2dxActivity という名前のクラスのバージョンのSDKもある…

AppActivity.java
:
:

import com.growthpush.cocos2dx.GrowthPushCocos2dxActivity;

:

public class APpActivity extends GrowthPushCocos2dxActivity {
    :
    :

AndroidManifest.xml の編集

cocosのプロジェクトの proj.android/AndroidManifest.xml に次のコードを追記する。
YOUR_PACKAGE_NAME となっている部分は要変更。(ex. com.hashimotoryoh.growthpushtest)

<application ... >...</application> タグ内に次を追記。

AndroidManifest.xml
<!-- GrowthPush -->
<activity
    android:name="com.growthpush.view.AlertActivity"
    android:configChanges="orientation|keyboardHidden"
    android:launchMode="singleInstance"
    android:theme="@android:style/Theme.Translucent" />
<receiver
    android:name="com.growthpush.BroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        <category android:name="YOUR_PACKAGE_NAME" />
    </intent-filter>
</receiver>

さらに <manifest ... >...</manifest> タグ内に次のパーミッションを追記。
ただし、既に書いてあるパーミッションは重複させる必要無し。

AndroidManifest.xml
<permission
    android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE" />

ソースの記述

ここまででSDKの組み込みは終わったはず。

あとはデバイストークンをGrowthPushのサーバに登録するソースを書いて終わり。

AppDelegate.cpp

Classes/AppDelegate.cppbool AppDelegate::applicationDidFinishLaunching() メソッド内の任意の場所に次のを追記。

AppDelegate.cpp
#include "GrowthPush.h"
:
bool AppDelegate::applicationDidFinishLaunching()
{
    :

    // GrowthPushインスタンス初期化
#if COCOS2D_DEBUG
    GrowthPush::initialize((int)アプリケーションID,
                           "シークレットキー",
                           GPEnvironment::GPEnvironmentDevelopment,
                           true);
#else
    GrowthPush::initialize((int)アプリケーションID,
                           "シークレットキー",
                           GPEnvironment::GPEnvironmentProduction,
                           false);
#endif

    // GrowthPushサーバにデイバスを登録
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    GrowthPush::registerDeviceToken();
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    GrowthPush::registerDeviceToken("AndroidのセンダーID");
#endif

    :
    :

アプリケーションID : GrowthPushの管理画面、左カラムの[シークレットキー]から確認できる 4桁の数字
シークレットキー : 同じところから確認できる 権限が"SDK権限"であると安心。自分で追加できる。
AndroidのセンダーID: Google API Sender ID

こんな感じ。

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
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