mBaaSのプッシュ通知は細かく絞り込めるように管理画面上で設定が行えます。その際、絞り込み条件はデバイストークンの保存されているinstallationクラスの中からのみ行います。
そこでアプリの設定画面やユーザの利用履歴を使ってinstallationクラスに情報を追加してみましょう。
Monacaの場合
Monacaの場合、 window.NCMB.monaca.getInstallationId
を使ってobjectIdを取得し、それを使って ncmb.Installation
を検索します。 window.NCMB.monaca.getInstallationIdが常に値を返してくれるとは限らない(デバイストークンの保存ができていないといけません)ので、setIntervalなどを使って定期的に繰り返し実行する必要があります。
window.NCMB.monaca.getInstallationId(function(id) { ncmb.Installation.fetchById(id) .then(function(installation){ installation.set("msg", "Hello"); installation.update() .then(function(installation){ // 更新後の処理 alert("登録完了"); }) .catch(function(err){ // エラー処理 }); }) .catch(function(err) { // エラー処理 }) });
iOSの場合
iOSの場合は NCMBInstallation.currentInstallation()
にて情報が取得できます。後はデータストアと同じように扱えますので特に問題ないでしょう。
let installation = NCMBInstallation.currentInstallation() installation.setDeviceTokenFromData(deviceToken) installation.addObject("Hello", forKey: "msg") installation.saveInBackgroundWithBlock { (error: NSError!) -> Void in if (error != nil){ // 端末情報の登録に失敗した時の処理 }else{ // 端末情報の登録に成功した時の処理 }
Androidの場合
Androidの場合、 NCMBInstallation.getCurrentInstallation()
を使います。こちらもiOSと同様にデータストアのように使えますので特に問題ないかと思います。
final NCMBInstallation installation = NCMBInstallation.getCurrentInstallation(); installation.put("msg", "Hello"); installation.saveInBackground(new DoneCallback() { @Override public void done(NCMBException e) { if (e != null) { // エラー処理 }else{ // 処理成功 } } });
Unityの場合
Unityの場合、 NCMBInstallation.getCurrentInstallation()
を使います。後はAddメソッドを使ってキーの値を設定し、SaveAsyncで保存処理を行います。
NCMBInstallation installation = NCMBInstallation.getCurrentInstallation(); installation.Add ("msg", "Hello"); installation.SaveAsync ((NCMBException e) => { if (e != null) { // エラー処理 } else { // 処理成功 } });
installationにデータを追加すれば、その項目を使ってプッシュ通知配信対象の絞り込みができます。プッシュ通知をより活用していくためにも自由にデータを追加してください。