質問: ### 前提・実現したいこと firebaseにiOSアプリから常時データをアップロードするアプリを作成しております。 このアップロードしているデータ特性に応じてfirebaseから事前に定めた内容のプッシュ通知を送りたく思います。 ### お伺いしたいこと アンドロイドにはなりますが、こちらに類似のことが質問されているように思います。 つまり私のやりたいことはできないのでしょうか? 例えば、データ特性の判別はiOS側で完全にするとして、一定の特殊なデータがfirebaseに送られたら事前に定めたプッシュ通知が送られる、ということはできるでしょうか?(それであればローカル通知でよい、というのはわかりますが、、、) わかりにくい後質問で恐縮ですが宜しくお願いいたします。
回答: プッシュ通知という言葉だけでは、どのような事を実現したいのか正確にわからないのですが、回答させていただきます。 1.observeメソッドで特定のデータの変更を検知する observeメソッドを使うと、データの変更があった際に、withブロックで書いた処理を実行してくれます。 アプリを起動している時に変更を検知して画面上に何かアクションを行いたい場合は、ブロック内に処理を書けば実現可能だと思います。 https://firebase.google.com/docs/database/ios/retrieve-data#value_events https://firebase.google.com/docs/database/ios/read-and-write#listen_for_value_events ※サンプルソースは1番目の日本語版リンクだとswift3.0に対応しておらず若干古いので、2番目の英語版リンクを参考にすると良いと思います。 observeの場合はデータを受け取った側が、変更の内容を見て、画面上に変更内容を出す出さないなどをコントロールする必要があります。 「実現したいこと」に記載のことは、これで実現できそうな気がします。 そしてもちろんアプリがバックグラウンドにある場合は、変更には気づけません。 2.FCMを使って通知を送る データの変更を行った際に、変更した側でFirebase Cloud Messaging(FCM)を使ってメッセージを送ると、アプリが起動していない状態でも受け取れる「Push通知」を送ることが出来ます。 https://firebase.google.com/docs/cloud-messaging/ios/topic-messaging この場合、アプリが起動している(フォアグラウンド)時にPushを受け取った際の処理を、AppDelegateに書くことが出来ます。 とりあえずFCMでメッセージを送っておいて、受け取った際にデータの内容で挙動を変えることも出来ます。 ただあまりにデータ変更の頻度が高いようであれば、何らかの上限にかかる気がするので注意が必要です。 https://firebase.google.com/docs/cloud-messaging/ios/receive アプリを起動していないときにも変更を通知させたいのであれば、FCMで実現する必要があります。