Live Operation ターゲティングプッシュ通知
Live Operationは、アプリユーザーをフィルターして、ターゲティングしたプッシュ通知を送信することができるサービスです。
プッシュ通知の連携と高度なプッシュ通知を利用してより便利に運営をすることができます。
ご注意
- Live OperationのAdd-Onを連携する前に、必ずIGAWorks基本連携を完了してください。「IGAW基本連携:Unity Android」
- Live Operationの連携のために、 IgawLiveOps~*_thirdparty.jarをUnityプロジェクトに追加してください。 「SDKインストール:Unity」
- Live Operationの連携のために、Google Play ServiceをUnityプロジェクトに追加してください。「Google Play Service設定」
- Live Operationの連携のために、android-support-v4.jar の最新バージョンをプロジェクトに追加してください。(ver21以上が必要) 「Googleマニュアル」
* アップデートのご案内 *
7月30日よりアップデートしたLiveOps 1.2.9 バージョンを利用されている場合、以下のマイグレーションガイドを確認してください。
「Live Operation マイグレーション:Unity Android」
7月30日よりアップデートしたLiveOps 1.2.9 バージョンを利用されている場合、以下のマイグレーションガイドを確認してください。
「Live Operation マイグレーション:Unity Android」
AndroidManifest.xml
ターゲティングプッシュ通知を連携するために、Android Manifestファイルを修正します。
基本連携で設定したApp Key, Hash Key, Permission以外に、追加のPermissionとプッシュ通知に関するレシーバー&サービスを追加します。
Google Play Servicesの連携のためにmeta tagを追加します。
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<manifest></manifest> タグの中に、Live Operationのための必須Permissionを追加します。
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<!-- C2DM Permission -->
<permission android:name="MY_PACKAGE_NAME.permission.C2D_MESSAGE" android:protectionLevel = "signature" />
<uses-permission android:name="MY_PACKAGE_NAME.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
+ C2DM Permission設定の MY_PACKAGE_NAME には、連携しているプロジェクトのPackage nameを入力します。
+ android.permission.GET_TASKS Permissionは、クライアントプッシュ通知の起動のために必要となります。
<application></application> タグの中に、Live Operationのための必須レシーバーとサービスを登録します。
<!-- IGAWorks GCM Broadcast Receiver -->
<receiver android:name="com.igaworks.liveops.pushservice.LiveOpsGCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="MY_PACKAGE_NAME" />
</intent-filter>
</receiver>
<!-- IGAWorks Push Service -->
<service android:enabled="true" android:name="com.igaworks.liveops.pushservice.GCMIntentService" />
<!-- Client Push App Receiver -->
<receiver android:name="com.igaworks.liveops.pushservice.LiveOpsReceiver"
android:permission="MY_PACKAGE_NAME.permission.C2D_MESSAGE">
<intent-filter>
<action android:name="com.igaworks.liveops.pushservice.CLIENT_PUSH_RECEIVE"/>
</intent-filter>
</receiver>
+ レシーバー設定のMY_PACKAGE_NAME には、連携しているプロジェクトのPackage nameを入力します。
+ リワード広告プラットフォーム「adPOPCorn」をご利用しますか?
adPOPcorn広告プラットフォームでCPI(起動型)以上のキャンペーン実施をご希望である場合、Googleインストールレシーバーを登録してください。
「IGAWorks Googleインストールレシーバー登録ガイド」
基本連携(サーバープッシュ通知)
Live Operationを利用するために、アプリのメインアクティビティを以下のAPIを利用して基本連携を進めます。
この連携を完了すると、サーバープッシュ通知及びそのプッシュ通知の開封トラッキングができます。
- Igaw~.Common.setUserId(string userId);
- Igaw~.LiveOps.initialize();
- Igaw~.LiveOps.resume();
public class MySampleScene : MonoBehavior {
void Start () {
//ユーザー識別値設定
IgaworksUnityPluginAOS.Common.setUserId("user100001");
//Live Operation初期化
IgaworksUnityPluginAOS.LiveOps.initialize ();
}
void OnApplicationPause(bool pauseStatus){
if (pauseStatus) {
IgaworksUnityPluginAOS.Common.endSession();
} else {
IgaworksUnityPluginAOS.Common.startSession();
// Live Operation活性化
IgaworksUnityPluginAOS.LiveOps.resume();
}
}
}
+ Live Operationサービスは、プッシュ通知を開封した際、Android ManifestにLauncherとして登録されたアクティビティを実施します。
+ setUserId APIを利用して、必ずユーザー識別値を登録してからプッシュ通知の送信対象に含まれるようになります。
+ 日本語、空白、特殊文字などをユーザー識別値として利用する場合、必ずインコードを完了してから利用してください。
+ プッシュ通知の開封をトラッキングするため、アプリが foreground に転換する際に resume apiを呼び出す必要があります。
ユーザー識別値の入力
ユーザー識別値は、Live Operationでユーザーを判断するために利用する情報です。
ご注意
- 1名のユーザーにつき1つの固有な識別値を持つ必要がございます。可変値を利用しないでください。
- 1名のユーザーにつき1つの固有な識別値を持つ必要がございます。可変値を利用しないでください。
- 個人情報(メールアドレス、名前、電話番後、識別できるユーザーIDなど)を含めてはいけません。
- 日本語、特殊文字、空白などが含まれている場合、必ずURL encording処理を行ってから利用してください。
- IgawLiveOps.initialize APIが呼び出される前に設定してください。
上記の注意事項をご確認の上、ユーザー識別値を入力します。
IgaworksUnityPluginAOS.Common.setUserId("user100001");
ディープリンク連携(サーバープッシュ通知)
Live Operationのサーバープッシュ通知では、ディープリンク機能を対応しております。
ディープリンク機能は、ユーザーがプッシュ通知を受信して開封した際、ディープリンクデーターより定義されたアクションを実行するようになる機能です。
ディープリンクデータは、ライブオペレーションの管理画面より生成・管理します。タイプは以下の3つのタイプで登録することが出来ます。
タイプ | 例 |
URL (Http タイプ) | http://www.igaworks.com |
URL (Custom Scheme タイプ) | myApp://activity.com |
Json タイプ | {"key":"value", "igaworks":"sample"} |
- URL (http タイプ) 及び Json
ディープリンク機能は、Androidの onNewIntent 関数をOverdriveしてディープリンクタイプに沿い実装してください。
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
IgawCommon.startApplication(this);
IgawCommon.setUserId("userid_123123123");
IgawLiveOps.initialize(MainActivity.this);
//onNewIntent リスナーで intentを渡します。
onNewIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
/* ディープリンクタイプに沿い、以下を参考して実装します。 */
/* 1. アプリスキームタイプ(myApp://deepLinkAction)ディープリンクの実装
*
* ディープリンクで渡されたアプリスキームアクションを起動します。
* IgawLiveOps.onNewIntent(MainActivity.this, intent);
*/
/* 2. Json文字列タイプ({“url”:”deepLinkAction”}) ディープリンクの実装
*
* ディープリンクで渡された Json 文字列を抽出し、Json オブジェクトに変換します。
* String jsonStr = intent.getStringExtra("com.igaworks.liveops.deeplink");
* JSONObject jsonObj;
* try {
* jsonObj = new JSONObject(jsonStr);
* //Json オブジェクトをPassingしてアクションを起動するように実装します。
* } catch (Exception e) {
* // TODO: handle exception
* }
*/
}
}
- URL (Custom Scheme タイプ)
Manifestファイルに IgawLiveOpsPushMessageLauncherActivity を追加します。
そして、プッシュ通知メッセージをクリックした時、オープンされるActivityの <intent-filter></intent-filter> タグの中に schemeと hostを入力します。
もし、Custom Schemeが myApp://activity.comである場合、schemeに myAppを hostに activity.comを入力します。
<!-- IgawLiveOpsPushMessageLauncherActivity を追加します。 -->
<activity
android:name="com.igaworks.liveops.pushservice.IgawLiveOpsPushMessageLauncherActivity"
android:permission="MY_PACKAGE_NAME.permission.C2D_MESSAGE"
android:noHistory="true"/>
<!-- ディープリンクを適用する Activityに適用します。 -->
<activity android:name="com.example.DeeplinkActivity">
<intent-filter>
<data android:scheme="myApp" android:host="activity.com" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
+ MY_PACKAGE_NAME には、連携中のプロジェクトのパッケージネームを入力します。
クライアントプッシュ通知
Live Operationは、クライアントでAPIを利用して直接生成して利用できるクライアントプッシュ通知機能を提供します。
一般のクライアントプッシュ通知は、アプリ内で事前に指定した条件にユーザーが一致する時、プッシュを作成して表示します。
また、デベロッパーサーバーとアプリ間の通信が可能であれば、サーバーイベントをキャッチしてプッシュを作成するような方法でもご利用することができます。
一般クライアントプッシュ通知
クライアントプッシュ通知には、一般プッシュ通知とビックテキストプッシュ通知がございます。
一般のクライアントプッシュ通知は、基本的にテキストで構成されたプッシュです。
setNormalClientPushEvent APIを利用して、プッシュ通知の作成及び表示ができます。
IgaworksUnityPluginAOS.LiveOps.setNormalClientPushEvent(
1, // Delay seconds. 何秒後に送信するかを設定
"Let’s play now!", // 送信するメッセージ
1, // Event ID, キャンセルの時に利用
false // アプリ起動中の際にも表示するかを設定
);
ビックテキストクライアントプッシュ通知
ビックテキストクライアントプッシュ通知は、最大160字(日本語、英語共通)までのテキストを対応するプッシュ通知です。
また、Amdroidのアプリで表現できるhtml 形式を対応しています。(太字、下線、フォント色など)
setBigTextClientPushEvent APIを利用して、プッシュ通知の作成及び表示をすることができます。
IgaworksUnityPluginAOS.LiveOps.setBigTextClientPushEvent(
1, // Delay seconds, 何秒後に送信するかを設定
"contentText", // contents
"bigContentTitle", // 一般プッシュ通知内容
"Let's play now! WoooooooW!!", // プッシュ通知に表示されるビックテキスト
"summaryText", // プッシュ通知に表示される要約テキスト
1, // Event ID, キャンセルの時に利用
false // アプリ起動中の際に表示するかを設定
);
+ プッシュ通知の表示方法
プッシュ通知のタイプ、AndroidのOSバージョン、プッシュ通知のメッセージバーの状態により、
プッシュ通知が表示される方法が異なる場合がございます。詳細については、以下のガイドをご確認ください。
「Live Operationプッシュ通知ガイド」
追加オプション
ユーザーターゲティング
直接ユーザーグループを生成してプッシュ通知のターゲットで利用することができます。
setTargetingData APIを利用してユーザーグループを設定することができます、パラメータと利用の例は以下となります。
- user_group : 管理画面で確認できるユーザーグループ名
- data : ユーザーグループで登録するObjectタイプのユーザーデータ。bool, int, long, float, Stringを対応します。
追加したユーザーグループは、Live Operation管理画面で確認することができます。またクライアントプッシュ通知では利用することができません。
//IgaworksUnityPluginAOS.LiveOps.setTargetingData(String user_group, Object user_data);
//user_group : 管理画面上で確認するユーザーグループ名
//user_data : ユーザーグループに登録するユーザーデータ、user_data では int, long, double, bool, objectを対応します。
//例) 課金ユーザーをグループ化するためのグループ名 "purchaseCount" に課金回数データを登録
IgaworksUnityPluginAOS.LiveOps.setTargetingData("purchaseCount", 10);
ターゲティングデータの同期化
resume api を呼び出し、設定されたターゲティングデータをライブオペレーションサーバーと同期化します。アクティビティの OnApplicationPause() に以下のように追加します。
void OnApplicationPause(bool pauseStatus){
if (pauseStatus){
Debug.Log("go to Background");
IgaworksUnityPluginAOS.Common.endSession();
}
else{
Debug.Log("go to Foreground");
IgaworksUnityPluginAOS.Common.startSession();
IgaworksUnityPluginAOS.LiveOps.resume();
}
}
手動同期化
データ同期化を手動でアップデートするためには、flushTargetingData apiを呼び出して設定したターゲティングデータをLive Operationサーバーと同期化します。
IgaworksUnityPluginAOS.LiveOps.flushTargetingData ();
プッシュ通知の受信on/off
送信するサーバープッシュ通知に対して、受信可否を設定することができます。一般的にユーザーがプッシュ通知の受信可否を設定する時にAPIを呼び出します。
また、受信可否イベントに対するデリゲートを提供します。イベントデリゲートを利用して受信可否の処理結果を処理することができます。
プッシュ通知受信の設定
enableService APIを呼び出して利用します。パラメータの利用例は以下となります。
- true : プッシュ通知を受信する
- false : プッシュ通知を受信しない
//true:受信, false:受信拒否
IgaworksUnityPluginAOS.LiveOps.enableService (false);
デリゲートの利用 (depreciated v.1.3.2)
送信するプッシュ通知に対して、受信可否イベントのデリゲートを提供します。
enableServiceWithDelegate APIを呼び出して利用します。パラメータと利用例は以下となります。
void Start () {
//true:受信, false:受信拒否
IgaworksUnityPluginAOS.LiveOps.enableServiceWithDelegate (true);
IgaworksUnityPluginAOS.OnEnableService = mOnEnableService;
}
void mOnEnableService(bool isSuccess){
Debug.Log("OnEnableService :::: " + isSuccess);
}
プッシュ通知のアイコンイメージの修正
ターゲットプッシュ通知で利用するプッシュ通知アイコンのイメージは、Launcher Iconで登録したアプリアイコンのイメージを利用します。
Googleのフィーチャーのためにイメージ修正が必要な場合、setNotificationIconStyle apiを呼び出してイメージを変更することができます。
//IgaworksUnityPluginAOS.LiveOps.setNotificationIconStyle(string smallIcon, string largeIcon, string iconbackground_argb);
IgaworksUnityPluginAOS.LiveOps.setNotificationIconStyle ("ic_small_filename", "ic_large_filename", "ff9d261c");
// IgawLiveOps_v1.2.9_thirdparty 以前バージョンの API
IgaworksUnityPluginAOS.LiveOps.setNotificationIconName("IconFileName");
+ IgaworksUnityPluginAOS.LiveOps.initialize api の次に呼び出します。
+ イメージファイル名は、イメージファイル拡張子を除いたファイル名のみ入力します。
+ 全解像度のDrawableフォルダに適切なイメージを追加してください。
通知設定
Android 5.0以上ではヘッドアップ(heads-up)通知とロック画面通知を設定することができます。
ヘッドアップ通知は端末がアクティブな場合に通知を表示する機能です。ロック画面通知は通知をロック画面に表示する機能です。
詳細についてはAndroid Developersの通知に関するガイド(こちら)をご覧ください。
setNotificationOption apiを呼び出してヘッドアップ・ロック画面通知を設定します。
ヘッドアップ通知の設定 (priority)
- PRIORITY_MAX (int:2), ヘッドアップ通知を使用
- PRIORITY_HIGH (int:1),ヘッドアップ通知を使用
- PRIORITY_DEFAULT (int:0), ヘッドアップ通知を使用しない
- PRIORITY_LOW (int:-1), ヘッドアップ通知を使用しない
- PRIORITY_MIN (int:-2), ヘッドアップ通知を使用しない
ロック画面通知の設定 (visibility)
- VISIBILITY_SECRET (int:-1), ロック画面通知を使用しない
- VISIBILITY_PRIVATE (int:0), 通知内容を表示せずロック画面通知を使用
- VISIBILITY_PUBLIC (int:1), 全体内容を表示してロック画面通知を使用
// void setNotificationOption(int priority, int visibility)
IgaworksUnityPluginAOS.LiveOps.setNotificationOption(IgaworksUnityPluginAOS.AndroidNotificationPriority.PRIORITY_HIGH, IgaworksUnityPluginAOS.AndroidNotificationVisibility.VISIBILITY_PUBLIC);
+ ロック画面通知はユーザーのデバイス設定が「敏感な内容は隠す」で設定されている場合に起動します。
+ ロック画面通知はロック画面に関するアプリを利用する場合正常に起動しない場合がございます。
Android 5.0以上ではヘッドアップ(heads-up)通知とロック画面通知を設定することができます。
ヘッドアップ通知は端末がアクティブな場合に通知を表示する機能です。ロック画面通知は通知をロック画面に表示する機能です。
詳細についてはAndroid Developersの通知に関するガイド(こちら)をご覧ください。
setNotificationOption apiを呼び出してヘッドアップ・ロック画面通知を設定します。
ヘッドアップ通知の設定 (priority)
- PRIORITY_MAX (int:2), ヘッドアップ通知を使用
- PRIORITY_HIGH (int:1),ヘッドアップ通知を使用
- PRIORITY_DEFAULT (int:0), ヘッドアップ通知を使用しない
- PRIORITY_LOW (int:-1), ヘッドアップ通知を使用しない
- PRIORITY_MIN (int:-2), ヘッドアップ通知を使用しない
ロック画面通知の設定 (visibility)
- VISIBILITY_SECRET (int:-1), ロック画面通知を使用しない
- VISIBILITY_PRIVATE (int:0), 通知内容を表示せずロック画面通知を使用
- VISIBILITY_PUBLIC (int:1), 全体内容を表示してロック画面通知を使用
// void setNotificationOption(int priority, int visibility)
IgaworksUnityPluginAOS.LiveOps.setNotificationOption(IgaworksUnityPluginAOS.AndroidNotificationPriority.PRIORITY_HIGH, IgaworksUnityPluginAOS.AndroidNotificationVisibility.VISIBILITY_PUBLIC);
+ ロック画面通知はユーザーのデバイス設定が「敏感な内容は隠す」で設定されている場合に起動します。
+ ロック画面通知はロック画面に関するアプリを利用する場合正常に起動しない場合がございます。
通知のまとめ (InboxStyle)
複数の通知を一つのまとめた通知で合わせます。Inbox Styleは、サーバープッシュ通知のみ対応します。
(*クライアントプッシュ通知の場合、通知IDの把握ができないためInbox Styleを対応しません。)
setStackingNotificationOption apiを呼び出して設定します。
通知まとめの設定 (useStacking)
- true : 通知まとめ機能を利用します。
- false : 通知まとめ機能を使用しません。
通知まとめの表示設定 (useTitleForStacking)
- true : 通知まとめを開く際にタイトルを表示します。
- false : 通知まとめを開く際に内容を表示します。
まとめた通知のタイトル、内容の設定 (ContentTitle, ContentText)
- empty : 最新の通知のタイトルと内容を表示します。
- your_custom_message : apiで呼び出したタイトルと内容を表示します。
まとめた通知を開く際に表示するタイトルの設定 (bigContentTitle)
- empty : ContentTitleを表示します。
- your_custom_message : apiで呼び出したタイトルを表示します。
まとめた通知を開く際の内容の設定 (bigContentSummaryText)
- empty : コンテンツのサマリーを使用しません。
- your_custom_message : apiで呼び出した内容を表示します。
//void setStackingNotificationOption(bool useStacking, bool useTitleForStacking, string ContentTitle, string ContentText, string bigContentTitle, string bigContentSummaryText)
IgaworksUnityPluginAOS.LiveOps.setStackingNotificationOption(true, false, "More events are waiting for you", "See detail", "All events", "For Summary Text");
//void setStackingNotificationOption(bool useStacking, bool useTitleForStacking, string ContentTitle, string ContentText, string bigContentTitle, string bigContentSummaryText)
IgaworksUnityPluginAOS.LiveOps.setStackingNotificationOption(true, false, "More events are waiting for you", "See detail", "All events", "For Summary Text");