로딩중입니다
Live Operation ターゲティングプッシュ通知:Android
7/28/2015 3:41:59 PM


Live Operationターゲットプッシュ通知


Live Operation(ライブオペレーション)は、アプリユーザーをフィルターして、ターゲティングしたプッシュ通知を送信することができるサービスです。
プッシュ通知の連携により、より高度なプッシュ通知を利用してより便利に運営をすることができます。

ライブオペレーションサービスのご紹介


ご注意
  1. Live OperationのAdd-Onを連携する前に、IGAWorks基本連携を完了してください。 「IGAW基本連携 : Android
  2. Live Operationの連携のために、IgawLiveOps~*.jar ファイルをAndroidのプロジェクトに追加してください。SDKのインストール : Android
  3. Live Operationのサーバープッシュ通知を利用するためには、Google Play Services の連携を完了してください。 「Google Play Services 設定
  4. Live Operationの連携のためには android-support-v4.jarの最新バージョンをプロジェクトに追加してください。(ver.21以上)Googleマニュアル
* アップデートのご案内 *
2015年7月30日よりアップデートされた LiveOps 1.2.9 バージョンを利用している場合、マイグレーションガイドを確認してください。
「ライブオペレーションマイグレーションガイド:Android」

AndroidManifest.xml


ターゲティングプッシュ通知を連携するために、Android Manifestファイルを修正します。
基本連携で設定したApp Key, Hash Key, Permission以外に、追加のPermissionプッシュ通知に関するレシーバー&サービスを追加します。


<manifest></manifest> タグの中に、Live Operationのための必須Permissionを追加します。
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<!-- LiveOps v1.3.6からは不要です。 -->
<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を入力します。



<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インストールレシーバーガイド



基本連携(サーバープッシュ通知)

ライブオペレーションを利用するため、アプリのMainActivityに、以下のAPIを利用して基本連携を進めます。
この連携を完了すると、サーバープッシュ通知の利用プッシュの開封に関するトラッキングが可能となります。
  • IgawCommon.setUserId(String userId);
  • IgawLiveOps.initialize(Context context);
  • IgawLiveOps.resume(Context context);
public class MainActivity extends Activity {
	 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
 
		//ユーザー識別値を設定してください。
		IgawCommon.setUserId(MainActivity.this,"user10001");		
		// LiveOps SDKを初期化します。
		IgawLiveOps.initialize(MainActivity.this);		
	}
 
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		IgawLiveOps.resume(MainActivity.this);
	}
}
+ Live Operationは、プッシュ通知を開封した時、Android ManifestにLauncherで登録されたアクティビティを起動します。
+ プッシュ通知の送信対象になるため、setUserId APIを利用してユーザー識別値を登録してください。
+ 日本語・空白・特殊文字などをユーザー識別値として利用する場合、必ずencodingをして利用してください。


ユーザー識別値の入力

ユーザー識別値は、ライブオペレーションでユーザーを判断するために利用する情報です。


    ご注意
  1. 1名のユーザーにつき1つの固有な識別値を持つ必要がございます。可変値を利用しないでください。
  2. 個人情報(メールアドレス、名前、電話番後、識別できるユーザーIDなど)を含めてはいけません。
  3. 日本語、特殊文字、空白などが含まれている場合、必ずURL encording処理を行ってから利用してください。
  4. IgawLiveOps.initialize APIが呼び出される前に設定してください。

上記の注意事項をご確認の上、ユーザー識別値を入力します。
IgawCommon.setUserId(getApplicationContext(),"user10001");
  

ディープリンク連携(サーバープッシュ通知)


Live Operationのサーバープッシュ通知では、ディープリンク機能を対応しております。
ディープリンク機能は、ユーザーがプッシュ通知を受信して開封した際、ディープリンクデーターより定義されたアクションを実行するようになる機能です。
ディープリンクデータは、Live Operationの管理画面より生成・管理します。タイプは以下の3つのタイプで登録することが出来ます。


種類
URL (Httpタイプ)http://www.igaworks.com
URL (Custom Schemeタイプ)myApp://activity.com
Jsonタイプ{"key":"value", "igaworks":"sample"}


  • URL (httpタイプ) 及び Json 

onNewIntent 関数をoverdriveして、ディープリンクタイプに沿い実装してください。
public class MainActivity extends Activity{ 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
 
		IgawCommon.startApplication(MainActivity.this"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を利用して、プッシュ通知の生成及び表示ができます。
IgawLiveOps.setNormalClientPushEvent(
	this,			// Application Context
	1,                 	// Delay seconds. 何秒後に送信するかを設定
	"Let’s play now!",      // 送信するメッセージ
	1,			// Event ID、キャンセルの際に使う数値
	false			// アプリ起動中に表示するかを設定
);


ビックテキストクライアントプッシュ通知

ビックテキストクライアントプッシュ通知は、最大160字(日本語、英語共通)までのテキストを対応するプッシュ通知です。
また、Androidのアプリで表現できるhtml 形式を対応しています。(太字、下線、フォント色など)
setBigTextClientPushEvent APIを利用して、プッシュ通知の作って表示をすることができます。
IgawLiveOps.setBigTextClientPushEvent(
	this, 				// Application Context
	1, 				// Delay seconds、何秒後に送信するかを設定
	"contentText", 			// contents
	"bigContentTitle", 		// 一般プッシュ通知の内容
	"Let's play now! WoooooooW!!",	// プッシュ通知に表示されるビックテキスト
	"summaryText", 			// プッシュ通知に表示される要約テキスト
	1, 				// Event ID、キャンセルの際に使う数値
	false				// アプリ起動中に表示するかを設定
);

+ プッシュ通知の表示方法
プッシュ通知のタイプ、AndroidのOSバージョン、プッシュ通知のメッセージバーの状態により、プッシュ通知が表示される方法が異なる場合がございます。
詳細については、以下のガイドをご確認ください。


追加オプション


ユーザーターゲティング

ユーザーグループを設定して、プッシュ通知の受信対象を直接選択することができます。
ユーザーグループを設定するためのデータは直接設定をしてください。

ターゲティングデータの設定

ターゲティングしたユーザーのみプッシュ通知を送信するため、カスタムユーザーデータを設定してください。
設定されたカスタムユーザーデータは、Live Operationの管理画面より確認することができます。以下の例は、課金回数をカスタムデータとして取得する場合を想定して作成したものです。

//IgawLiveOps.setTargetingData(Context applicationContext, final String userCustomDataKey, final Object userCustomData);
IgawLiveOps.setTargetingData(context, "purchaseCount", purchaseCount);
+ customUserData ターゲティングのためのユーザーデータを入力します。bool, int, long, float, Stringに対応しています。
+ customUserDataKeyユーザーカスタムデータキーを設定します。

ターゲティングデータの同期化

resume api を呼び出し、設定されたターゲティングデータをLive Operationサーバーと同期化します。
アクティビティの onResume()に、以下のように追加します。
@Override
protected void onPause() {
    super.onPause();
    IgawCommon.endSession();
    // ターゲティングデータの同期化
    IgawLiveOps.resume();
}


手動同期化

手動でデータを同期化する場合、 flush api を呼び出し、設定されたデータをLive Operationサーバーと同期化します。
IgawLiveOps.flush(MainActivity.this);


プッシュ通知の受信 on/off

送信されるプッシュ通知に対し、受信可否を設定することができます。通常の場合、ユーザーがプッシュ通知の受信可否を設定する時にAPIを呼び出します。
また、受信可否のイベントに対するデリケートを提供しております。イベントデリケートを利用して、受信可否の処理結果を処理することができます。

プッシュ通知の受信設

      enableService APIを呼び出して利用します。パラメーターと利用の例は以下のようになります。

        • true : プッシュ通知を受信する。
        • false : プッシュ通知を受信しない。
        IgawLiveOps.enableService(MainActivity.this, true);


          デリケートの利用 (depreciated v.1.3.2)

        送信されるプッシュ通知に対し、受信可否のイベントに対するデリケートを提供します。
          enableService APIを呼び出し利用します。パラメーターと利用の例は以下のようになります。
        IgawLiveOps.enableService(MainActivity.this, true, new LiveOpsGCMPushEnableEventListener() {
                    @Override
                    public void onEnableService(boolean isSuccess) {
                        Log.d("DEBUG" ,"Enable PushService :: " + isSuccess);
                    }
        });



        プッシュ通知のアイコンのイメージ修正

        ターゲットプッシュ通知で利用するプッシュ通知アイコンのイメージは、Launcher Iconで登録されたアイコンのイメージを利用します。
        Googleのフィーチャーのためにイメージの修正が必要な場合、 setNotificationIconStyle apiを呼び出してイメージを修正することができます。
        //IgawLiveOps.setNotificationIconStyle(Context context, String small_icon_name, String large_icon_name, int argb);
        IgawLiveOps.setNotificationIconStyle(getApplicationContext(), "ic_small_filename", "ic_large_filename", 0xFFE90F0F);
        
        // IgawLiveOps_v1.2.9 以前バージョンのAPI
          IgawLiveOps.setNotificationIconName(MainActivity.this, "my_push_icon_custom_igm_name");

        + IgawLiveOps.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), 全体内容を表示してロック画面通知を使用
        // public static void setNotificationOption(Context context, int priority, int visibility)
        IgawLiveOps.setNotificationOption(getApplicationContext(), NotificationCompat.PRIORITY_HIGH, NotificationCompat.VISIBILITY_SECRET);
        + ロック画面通知はユーザーのデバイス設定が「敏感な内容は隠す」で設定されている場合に起動します。
        + ロック画面通知はロック画面に関するアプリを利用する場合正常に起動しない場合がございます。


        通知のまとめ (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で呼び出した内容を表示します。

        // public static void setStackingNotificationOption(Context context, boolean useStacking, boolean useTitleForStacking,  String ContentTitle, String ContentText, String bigContentTitle, String bigContentSummaryText)
        IgawLiveOps.setStackingNotificationOption(getApplicationContext(), true, false, "More events are waiting for you", "See detail", "All events", "For Summary Text");