【GrowthPush】Cocos2d-xプロジェクトへのSDK組み込み方法まとめ
はじめに
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/GrowthPush
を Add 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]にフレームワークファイルを追加する。
- [+]ボタン
- [Add Other...]ボタン
- iOS用SDKの
growthpush-ios/GrowthPush.framework
を追加
ここでもしシンボルが解決出来ないエラーが出るようであれば、以下の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
↑という訳で、
-
growthpush-android-1.1.4/growthpush.jar
を手動で.zip
に拡張子変更 - それを展開
- 中に
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
を、
-
growthpush.jar
にリネームする - 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_FILES
と LOCAL_C_INCLUDES
という変数にGrowthPushのソースのパスを追記する。
:
:
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もある…
:
:
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>
タグ内に次を追記。
<!-- 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>
タグ内に次のパーミッションを追記。
ただし、既に書いてあるパーミッションは重複させる必要無し。
<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.cpp
の bool AppDelegate::applicationDidFinishLaunching()
メソッド内の任意の場所に次のを追記。
#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
こんな感じ。
Author And Source
この問題について(【GrowthPush】Cocos2d-xプロジェクトへのSDK組み込み方法まとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/hashimotoryoh/items/a333b2d2df3adb0878b5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .