9. Push

9.1. Push メッセージの配送保証はされますか?

FCM, APNs, SSE Push いずれも保証されません。

9.2. オフライン状態の端末に Push を送信した場合はどうなりますか

Push サーバ側にメッセージが保持され、デバイスがネットワーク接続したタイミングで配信されます。

FCM, APNs, SSE Push いずれの場合も、保持されるメッセージはデバイス(インスタレーション) 毎に最新の1件のみです。

保持されるメッセージの有効期限は、使用する Push の種類によって異なります。

  • FCM: 4週間
  • APNs: 7日間 (v6 以降の場合。v5以前は 0(配送できなければ即時破棄))
  • SSE Push: 期限なし

9.3. メッセージ配信の頻度に制限はありますか

FCM、APNs についてはデバイス毎のレート制限があります。ただし、具体的な数値は開示されていません。

レート制限に達しても、Push 送信 API 自体はエラーになりませんが、メッセージは送信されません(破棄されます)。 BaaS サーバのログにはエラーが記録されます。

SSE Push については特にレート制限は行っておりません。

いずれの場合も、あまり高頻度にメッセージを送信すると、キューに保存されるメッセージ数が デバイス毎に1個しかないためメッセージが喪失する可能性が高くなります。

9.4. サーバ側に記録されているインスタレーションは自動的に削除されるのでしょうか

FCMとAPNs については、Push 送信時に該当端末からアプリがインストールされていることを検知して BaaSサーバ側にアンインストール通知が返却されます。 これを契機にインスタレーションが自動的に削除されます。 ただし、端末が故障・廃棄されている場合や、Push通知を全く送信しない場合は当然削除されません。

SSE Push についてはインスタレーションは削除されません。

9.5. 特定ユーザに Push を送るには

いくつか方法がありますが、​ユーザごとに「チャネル」を1つ用意する方法を推奨します。 チャネルにはユーザID・ユーザ名・E-mailアドレスなどを使うのがよいでしょう。

ユーザがログインしたタイミングでインスタレーションの登録を行い、 送信時にはユーザごとに割り当てたチャネルを指定して Push メッセージを送信します。

詳細は、Push通知ガイドの「配信端末(インスタレーション)の絞込方法」を参照してください。

9.6. ユーザと Push 対象端末の紐付けはどのように行えばよいか

Push通知の受信は端末とのみ紐づけられています。 ユーザと紐付を行う際は、そのユーザ用のチャネルを作って、そのチャネル宛てに送信してください。

チャネルの識別子は、一意にするために、ユーザのメールアドレスなどを利用するなどの方法があります。

9.7. GCM用に取得したキーが利用できません

2016年9月より、GCMキーは新規に取得できなくなりました(それ以前に取得したキーは使用できます)。

今後は Firebase Console を使用して頂く必要があります。 詳細手順については、Push通知ガイドを参照してください。

9.8. FCM の「通知メッセージ」「データメッセージ」どちらも送信できますか

BaaS で対応しているのは「データメッセージ」のみで、「通知メッセージ」には 対応していません。

参考: FCMメッセージについて

9.9. APNs のトークン認証は使用できますか?

v6.5.0 以降であれば使用できます。

9.10. リバースプロキシを経由した、Pushの使用に注意点はありますか

リバースプロキシのバッファリング設定をoffにして下さい。

バッファリングの影響により、Pushが遅延する、配信されないなどの現象が発生する場合があります。

9.11. SSE Pushサーバのログを削減することはできますか

クライアントの接続台数に比例して、SSE Pushサーバのログが増加します。 ログのサイズや負荷を軽減するために、ログレベルの変更、秒間のログ出力数を変更することができます。

詳細は、ログ設定 を参照して下さい。