前段
プッシュ通知を配信する中で、よく使われる方法が「しばらく起動していないユーザー」に対してプッシュ通知を送る「リンテンション」的な使われ方。
今回はニフティクラウド mobile backendのプッシュ通知機能を使って上記のリテンション風なプッシュ通知を実装してみた。
ニフティクラウド mobile backendにおける配信端末の管理からみるリテンションプッシュ通知実装法
ニフティクラウド mobile backendでは配信端末をデータストアのinstallationクラスで管理しています。
このinstallationの各フィールド(カラム)の値を使って絞り込みも行えるようになります。
installationに「login」というフィールド作りそこにタイムスタンプを入れれば、「○○日以降起動していない人」だけにプッシュ通知を配信できるようになります。
リテンションプッシュ通知実装までの流れ
リテンションプッシュ通知実装までには下記の作業が必要になります。
- 通常のプッシュ通知を配信できるようにする
- NCMBManager.csのコードを少し変更する
- ダッシュボードから絞り込みプッシュ通知を配信する
上記の内容を1から順に説明していきます
通常のプッシュ通知を配信できるようにする
いきなりで申し訳ないですがこちらは、以前のブログに記載しているのでそちらをご参照ください。
UnityアプリにAndroidのプッシュ通知を組み込んでみる、開封通知も加えてみる
NCMBManager.csのコードを少し変更する
上記のブログの中で設定したNCMBManager.csを変更して,
「login」フィールドを加えて、タイムスタンプを入れるようにします。
NCMBManager.csはAssets>Pluginにあります。
その235行目〜269行目に実装しているメソッドTokenReceivedの「//端末情報をデータストアに登録」(253行目)と描かれている行の下の行に
System.DateTime now = System.DateTime.UtcNow;
installation["login"] = now;
と実装します。
//ネイティブでデバイストークン取得後に呼び出されます
internal void onTokenReceived (string token)
{
_token = token; //onAnalyticsReceivedで使用。
string path = SearchPath (); //currentInstallationのパスを設定
//currentInstallationがあれば読み込み、更新の必要性を判定します
string jsonText = "";
NCMBInstallation installation = null;
if ((jsonText = ReadFile (path)) != "") { //currentInstallationあり
installation = new NCMBInstallation (jsonText);
} else {
installation = new NCMBInstallation ();
}
nstallation.DeviceToken = _token;
//端末情報をデータストアに登録
//この下2行を記載します////////
System.DateTime now = System.DateTime.UtcNow;
installation["login"] = now;
////////////////////////////////
installation.SaveAsync ((NCMBException saveError) => { //更新実行
if (saveError != null) {
//対処可能なエラー
if (saveError.ErrorMessage.Equals ("Duplication Error")) {
//過去に登録したデバイストークンと衝突。アプリの再インストール後などに発生
updateExistedInstallation (installation, path);
} else {
//想定外のエラー
OnRegistration (saveError.ErrorMessage);
}
} else {
OnRegistration ("");
}
});
}
あとはプロジェクトをビルドします。
ダッシュボードから絞り込みプッシュ通知を配信する
ビルド後、アプリを起動してinstallationクラスを確認してください。deviceTokenフィールドにトークンがloginフィールドにタイムスタンプが入っているのをそれぞれご確認ください
またもう一回、アプリを落として再度、アプリを起動してloginフィールドが更新されていることをご確認ください
ダッシュボードから絞り込みのプッシュ通知を配信します。
配信に関しては
ダッシュボードからプッシュ通知を配信する
をお読みください。
ダッシュボードから絞り込み配信は下記ドキュメントをお読みください
ダッシュボードでの絞り込み
今回、16:00を境に「大きい」、「小さい」で絞り込んだところ下記のようになりました
「16:00より大きいで絞り込んだ時」、1端末だけ配信する端末があると表示されています。
「16:00より小さいで絞り込んだ時」、1端末も配信する端末がないと表示されています。
どうやら正確に絞り込めているようです。
実際に配信したら、大きい場合はちゃんとどきました。