概要
過去に 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 から送信してみましょう
ポイントとしては当然ですが送信時にトピックを指定してください
これでトピックを 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 件のコメント:
コメントを投稿