2018年3月27日火曜日

Firebase でトピックを Subscribe してプッシュ通知を送信してみる

概要

過去に Firebase で iOS にプッシュ通知を送信してみました
そのときは特にトピックを指定しなかったので全端末にプッシュ通知が送信されてしまいます
トピックは特定の端末群に対してプッシュ通知を送信するための機能です
今回はトピックを使ってプッシュ通知を送信してみました

あと事前に過去の記事を元に最低限のプッシュ通知の設定と実装は済ませておいてください (プッシュ用の証明書の登録, p12 ファイルの登録, プッシュ通知用の設定)

環境

  • macOS 10.13.2
  • Xcode 9.2 (9C40b)
  • FirebaseMessaging 2.1.1

トピックを Subscribe する

以下のメソッドをコールすることでトピックを Subscribe することができます

import FirebaseMessaging
Messaging.messaging().subscribe(toTopic: "topic-random_match")

こんな感じです、簡単ですね

Unsubscribe する

トピックを購読したくなくなった場合は Unsubscribe メソッドをコールする必要があります

Messaging.messaging().unsubscribe(fromTopic: "topic-random_match")

これも同じようにコールするだけなので簡単ですね

テスト送信

ではテスト送信してみましょう
Firebase の管理画面で Notifications から送信してみましょう
ポイントとしては当然ですが送信時にトピックを指定してください
firebase_topic_push1.png

これでトピックを subscribe している端末にだけ送信できると思います
端末がフォアグランドで動作しているとプッシュ通知が来ないのでバックグラウンドに移動しましょう

ON/OFF テクニック

subscribe/unsubscribe メソッドは当然あるのですが isSubscribe メソッド的なものはまだないようです
調べてみると Github で issue は上がっているようです
https://github.com/firebase/firebase-ios-sdk/issues/225

なので ON/OFF する場合は自分で実装する必要があります
自分の場合ですが単純にローカルに ON/OFF のデータを持つようにしました
RealmSwift を使って Bool の値を保存しているだけです

あとはその値を元に subscribe したり unsubscribe するだけです
subscribe 中に subscribe をコールしても特に問題はないようです (重複して受け取ることは自分の端末では起こりませんでした)

Tips

Cannot parse topic name topic/random_match. Will not subscribe. subscribe したときに出る場合があります
どうやらスラッシュを入れることができないのでハイフンなどに変えてみましょう

最後に

Firebase のプッシュ通知でトピック機能を使ってみました
簡単に使うのは使えますが少し機能が欠けているので、足りない機能は自分で補完する必要があります

今回は管理画面から送信しましたが Ruby などからも送信できるので、その場合もトピックを指定すれば便利な使い方ができるかなと思います

参考サイト

0 件のコメント:

コメントを投稿