firebaseの知識棚卸し

messaging

getTokenを実行するたびにtokenが変わったりしない。

chromeでデバック実行するときは毎回tokenがリフレッシュされるので変わる

送信系のメソッド(admin)

sendMulticast

tokenはstring[]

sendAll

notificationも毎回セットしないといけないから、データ量が多くなる。 逆にtokenごとに設定できる

firestoreでtokenをusersコレクション配下に保存するか?

配下には保存しない

usersのサブコレクションに保存

functions-samples/index.js at master · firebase/functions-samples · GitHub

Realtime Databaseのサンプルですが、firestoreも似たような感じでできる。

プロセスが終了しない件

Process not terminated. · Issue #91 · firebase/firebase-admin-node · GitHub

テストコードとかは、admin.messaging().app.delete()で終了させる

functionsにデプロイするコードは不要そう。 処理が終わるとプロセスというか、インスタンス自体落ちるだろうから。

サンプルコードでも特にやってない

functions-samples/index.js at master · firebase/functions-samples · GitHub

firestore

単調に増加するドキュメントIDを使用しない

Cloud Firestore のベスト プラクティス  |  Firebase

https://firebase.google.com/docs/firestore/best-practices?hl=ja#high_read_write_and_delete_rates_to_a_narrow_document_range

保存料金

Cloud Firestore の料金サンプルを見る  |  Firebase

毎月の保存量から、1GB引かれてるから、やっぱり1GBまでが無料っていう認識であってるはず

functions

不正なアカウントの場合に請求から外すのはgoogle authじゃないと無理っぽい

呼び出しの認証  |  Google Cloud Functions に関するドキュメント

認証・パラメータチェックの例

アプリから関数を呼び出す  |  Firebase

その他

クレデンシャルを読み込む(wsl)

export GOOGLE_APPLICATION_CREDENTIALS=readlink -f ~/path/to/.json

firebaseを理解してない人がアプリのコードを書くと若干意思疎通が難しい

既存の外部システムと連携してログインする場合はカスタム トークンを使うと思いますが、 そこの流れを理解してもらうのが大変