質問: 現在、iOSアプリへの通知をFirebase Cloud Messaging から、手動で行っています。 毎日4回の通知をおくって、アプリ内のお知らせ一覧にも同じ文言を追加しているのですが、面倒なので、 サーバレスで自動化を検討したいです。 しかし、その日その日に違うメッセージを送るには、どういった設計にすればシンプルに実現するのか思いつきません。 やりたいこととしては下記のとおりです。 ・8:00(朝通知)、12:00(昼通知)、15:00(おやつ通知)、20:00(夜通知)の1日4回、別の通知を送る ・朝通知、昼通知、おやつ通知、夜通知それぞれに、別の文言を送る ・基本的には、文言はあらかじめ通知ごとに何パターンか用意されていて、自動でランダムに選んで送る ・時々、「この日の朝通知にこういうメッセージを送りたい!」というときがあり、そのメッセージはiPhoneから気軽に送信でき、かつ、事前に設定されている通知より優先されて送信されるようにしたい ・通知が送られる5分前か、最低でも同時に、FirebaseのRealtime Databaseにchildaddしたい ・サーバレスで設計したい 通知管理画面をGoogleSpreadSheetでつくってGASでやろうかとおもったのですが、 どんなカラム構成にすればいいかわからなかったのと、iPhoneからやりづらいなと思ってギブアップしました。 手動でFirebaseのRealtime Databaseにchildaddして、cloud functionで検知して通知を送信することも考えましたが、 Realtime Databaseのツリーを展開するのが面倒なのでやめました。 なにか手軽にできる方法はないでしょうか? どうぞよろしくお願いします。
回答: 今の構成だとCloudFunctionが一番良いと思います。 既にfirebaseをお使いとのことで、色々な与件にも対応しやすいですし。 時間ができたときにでもやってみてくださいということで、一応参考情報を残しておきます。 CloudFunctionの定時実行に関して、公式では以下の2通りを案内しています。 1Cloud Pub/Subトリガで定時実行する方法 (参考)Cloud Functions for Firebase でジョブをスケジューリング(cron)する 2httpリクエストで定時実行する方法 (参考)HTTP トリガーと cron を使用した cron ジョブのシミュレーション 1は学習コストが少し高い気がするので、自信がない場合は2がオススメです。 高度なことをしないのであれば、使うのはリンク先のチュートリアル動画で出てくる「cron-job.org」で十分です。 チュートリアル動画を見れば、cronでのCloudFunctionの関数の呼び出し方は分かると思うのでそこは割愛します。 CloudFunction内でプッシュ通知を送る方法ですが、以下のリンクが参考になります。 functions-samples/fcm-notifications at master · firebase/functions-samples 手動実行とかに関しては、 ・手動投稿用の簡素なアプリをXcodeで作成して、自分のiPhoneにビルドしておく ・CloudFunction側の定時実行関数内で、既に手動実行が予約されているかどうかをチェックして どちらのメッセージを送るか決めるロジックを追加 あたりをやればできるはずです。 面倒なことを無くすにはそれなりに面倒が必要ですね。。。