ニフティクラウド mobile backendのユーザコミュニティでは日々質問が投稿されています。コード周りの質問はもちろん、管理画面の使い方やTips的なものも数多くあります。
今回はそんな中からプッシュ通知に関連したものをピックアップして紹介します。ぜひ皆さんの開発に役立ててください。
APNsのフィードバックによるデバイストークンを削除するタイミングは?
Appleのプッシュ通知システムAPNsではアプリが削除された場合、プッシュ通知が配信エラーになります。その結果を受け取るのがフィードバックサービスになります。フィードバックサービスを使うことでプッシュ通知をムダに配信せずに済むようになります。
mBaaSではプッシュ通知を配信したタイミングでフィードバックサービスを受け取るようになっています。そのためデバイストークンの生存確認はそのトークン宛にプッシュ通知を行わなければ分からないようになっています。
APNsのフィードバックによるデバイストークンの削除についてより。
Androidのプッシュ通知でアイコン背景を変更するには?
ダイアログ表示のプッシュ通知設定を使うことで背景画像を設定したり、オリジナルのレイアウト設定ができるなどカスタマイズできるようになっています。以下のURLが参考になります。
- SDKガイド (Android) : プッシュ通知 | ダイアログ表示を行う:(1)カスタムサービス作成
- SDKガイド (Android) : プッシュ通知 | ダイアログ表示を行う:(2)ダイアログプッシュ通知の設定
- SDKガイド (Android) : プッシュ通知 | ダイアログ表示を行う:(3)DialogPushHandlerの呼び出し
via 【Android】 Lollipopのプッシュ通知 アイコン背景についてより
Monacaアプリでデバイストークンを取得するには?
JavaScriptの場合、NCMB.monaca.setDeviceToken を実行した直後では NCMB.monaca.getInstallationId を実行してもデバイストークンは返ってきません。そのため、setIntervalなどを用いて何回か繰り返し取得を試みる必要があります。
setInterval(function() { window.NCMB.monaca.getInstallationId(function(id) { if (id) { // 取得できた後の処理を記述 } }); }, 3000);
ただしプッシュ通知の受信を拒否している場合も考えられますので、制限なしに繰り返すのはよくありません。10回までといった感じで制限を設けるのが良いでしょう。
via javascript setDeviceToken の実行直後の端末情報更新について
プッシュ通知の受信可否をアプリ内に設定できるようにするには?
プッシュ通信が受信できている場合、デバイストークンが取得できると想定できます。そのデバイストークンを使って installationクラスを検索し、デバイストークンが入ったデータを取得します。
このデータもデータストアと同じように自由にカラムを追加できますので、受け取らないといったフラグを追加して保存します。以下はJavaScriptの実装例です。
var Installation = NCMB.DataStore("installation"); Installation.equal("deviceToken", deviceToken) .fetchAll() .then(function(results) { // 1行目が該当データになります var installation = results[0]; installation.set("receivable", false); installation.save().then(function() { // 保存完了 }); });
via プッシュ通知受信のON/OFFをアプリ内の設定からコントロールする
プッシュ通知からの起動を判定したい
プッシュ通知からアプリを起動すると、payload にデータが含まれています。このデータのありなしを使ってホーム画面からの起動か、プッシュ通知からの起動かを判定できます。
via プッシュ通知開封のタイミングで呼ばれるメソッドはありますか。
プッシュ通知の時間指定について
管理画面上でプッシュ通知を5分後に設定すると、翌日に配信されてしまいます。これは配信日が当日ではなく、翌日の日付が自動で入ってしまうためです。配信日も当日を選ぶことで回避できます。
via プッシュ通知の時間指定について
個別でのプッシュ通知はどれくらいが限界か
in条件を用いて個別にプッシュ通知を作成する場合、100ID程度が限界になるようです。それ以上になるとGETパラメータ上の問題になる可能性があります。installationクラスに別途フラグを設け、そのフラグに沿ってセグメント配信するのがお勧めです。
via プッシュ通知で、個別ユーザを特定して配信をしたいが、どれくらいの人数まで配信が可能?
プッシュ通知はアプリの要とも言える機能だけあって、質問も込み入ったものが多くなります。皆さんもmBaaSを使ってみて不明点、疑問点があればぜひコミュニティまでお寄せください。