Growthbeat SDKでCocos2d-xプロジェクトにPush通知を実装する
はじめに
スマホアプリとして、質の高いサービスを配信/運用するには「PUSH通知」で、多くのユーザーにイベント告知など情報を共有する機能が必要になります。
多くのゲームアプリでも実装されている「PUSH通知」ですが、2021年4月、Apple社は従来のAPNs通信インターフェイスのサポートを終了する事になりました。サポート終了に伴い、できる限り早い時期に開発と本番環境をHTTP/2に対応する必要がありました。
Apple Push Notification service server certificate update
February 10, 2021On March 29, 2021, token and certificate-based HTTP/2 connections to the Apple Push Notification service must incorporate the new root certificate (AAACertificateServices 5/12/2020) which replaces the old GeoTrust Global CA root certificate. To ensure a seamless transition and to avoid push notification delivery failures, verify that both the old and new root certificates for the HTTP/2 interface are included in the Trust Store of each of your notification servers before March 29.
Note that Apple Push Notification service SSL provider certificates issued to you by Apple do not need be to updated at this time.
「PUSH通知」の実装は下の図の様になっていましたが、運用の効率化と保守の負担を無くす為、Growth Pushの実装に切り替えました。
Growth Pushの実装について備忘録としてまとめます。
Growth Pushとは?
アプリ開発者のためのPush通知解析・配信サービスです。
Push通知のセグメント配信や・ユーザーの行動を解析して
継続率を高めていくことが可能です。
実装手順
1. SDK導入
GitHubからSDKをcloneし、submoduleをupdateします。
git clone https://github.com/SIROK/growthbeat-cocos2dx.git
cd ./growthbeat-cocos2dx
git submodule update --init --recursive
source/Classes ディレクトリの中身、Grothbeat, GrowthPush, GrowthLink 3つのフォルダーを、自分のプロジェクトのClasses配下の適切な場所にコピーします。
iOSの初期設定
Xcodeにて、Classesにコピーしたフォルダを、インポートします。Create groupsにチェックし、ターゲットを任意のビルドスキームにチェックします。growthbeat-ios/Growthbeat.framework をコピーして、自分のプロジェクトのproj.ios/Frameworks/ 配下に配置します。
Growthbeat.frameworkは、下のFrameworkが必須なので、Xcodeプロジェクトに依存するFrameworkを追加します。
- Foundation.framework
- UIKit.framework
- CoreGraphics.framework
- Security.framework
- SystemConfiguration.framework
- AdSupport.framework
- CFNetwork.framework
Androidの初期設定
source/proj.android/src の中身を、自分のプロジェクトのproj.android/src配下に配置します。
Android Studio導入方法
build.gradleに下記の設定を追加します。
dependencies {
// Androidのライブラリです。growthbeatのライブラリの機能に依存します。
compile "com.android.support:appcompat-v7:23.3.0"
compile 'com.google.android.gms:play-services-gcm:9.2.1'
compile 'com.google.android.gms:play-services-ads:9.2.1'
// Growthbeat SDK Android
compile 'com.growthbeat:growthbeat-android:2.0.5@aar'
}
Growthbeat SDKを利用するには、依存ライブラリが必要となります。
- appcompat-v7もしくはandroid-support-v4
- google-play-services-gcm
- google-play-services-ads
ソースビルド設定
Android.mk に下記を追加してください。
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp \
../../Classes/Growthbeat/GrowthbeatInstance.cpp \
../../Classes/Growthbeat/android/Growthbeat.cpp \
../../Classes/GrowthPush/GrowthPushInstance.cpp \
../../Classes/GrowthPush/android/GrowthPush.cpp \
../../Classes/GrowthLink/GrowthLinkInstance.cpp \
../../Classes/GrowthLink/android/GrowthLink.cpp \
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
$(LOCAL_PATH)/../../Classes/Growthbeat/ \
$(LOCAL_PATH)/../../Classes/Growthbeat/android \
$(LOCAL_PATH)/../../Classes/GrowthPush/ \
$(LOCAL_PATH)/../../Classes/GrowthPush/android \
$(LOCAL_PATH)/../../Classes/GrowthLink/ \
$(LOCAL_PATH)/../../Classes/GrowthLink/android \
AndroidManifest.xmlの設定
レジストレーションIDを取得するため、またプッシュ通知を受信するためにAndroidManifest.xmlに必要なクラスを記述します。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE" />
<permission
android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<application>
<!-- ... -->
<activity
android:name="com.growthpush.view.AlertActivity"
android:configChanges="orientation|keyboardHidden"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.Translucent" />
<service
android:name="com.growthpush.TokenRefreshService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
<service android:name="com.growthpush.RegistrationIntentService"/>
<service
android:name="com.growthpush.ReceiverService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="YOUR_PACKAGE_NAME" />
</intent-filter>
</receiver>
</application>
GrowthbeatCocos2dx の使用
c++ファイルの実装
AppDelegate.cpp に以下のコードを追加します。
- AppDelegate.cpp に以下のコードを追加します。
#include "Growthbeat.h"
#include "GrowthPush.h"
USING_NS_GROWTHBEAT;
USING_NS_GROWTHPUSH;
#ifdef COCOS2D_DEBUG
GPEnvironment kGPEnvironment = GPEnvironmentDevelopment;
#else
GPEnvironment kGPEnvironment = GPEnvironmentProduction;
#endif
AppDelegate::AppDelegate() {
}
AppDelegate::~AppDelegate(){
}
bool AppDelegate::applicationDidFinishLaunching() {
GrowthPush::getInstance()->initialize("YOUR_APPLICATION_ID", "YOUR_CREDENTIAL_ID", kGPEnvironment);
GrowthPush::getInstance()->requestDeviceToken("YOUR_SENDER_ID");
}
bool AppDelegate::applicationWillEnterForeground() {
Growthbeat::getInstance()->start();
}
bool AppDelegate::applicationDidEnterBackground() {
Growthbeat::getInstance()->stop();
}
タグ送信
セグメントを設定するために、任意のタグを埋め込んでください。
bool AppDelegate::applicationDidFinishLaunching() {
GrowthPush::getInstance()->setTag("Development", "true");
}
イベント送信
セグメントを設定するために、任意のイベントを埋め込んでください。
bool AppDelegate::applicationDidFinishLaunching() {
GrowthPush::getInstance()->trackEvent("Launch");
}
プッシュ通知ペイロードの受け取り
プッシュ通知送信時に、カスタムフィールドのjson値を受け取ることができます。
GrowthPush::getInstance()->setOpenNotificationCallback([](cocos2d::Value extra)->void{
CCLOG("%s", extra.getDescription().c_str());
});
参考サイト
Author And Source
この問題について(Growthbeat SDKでCocos2d-xプロジェクトにPush通知を実装する), 我々は、より多くの情報をここで見つけました https://qiita.com/nekoharuyuki/items/bd7b7206de41f2f3852b著者帰属:元の著者の情報は、元の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 .