[解決済み] Firebase NotificationをCURL経由で全デバイスに送信するには?
質問
私は、すべてのアプリのユーザー(Android上)に通知を送信しようとしています。以下は、私が開始した CURL コマンドです。
curl --insecure --header "Authorization: key=AIzaSyBidmyauthkeyisfineL-6NcJxj-1JUvEM" --header "Content-Type.Application/json" --header "Content-Type: application/json" -d "{ { {"title":\"note-Title",\"body":\"note-Body"}}" https://fcm.googleapis.com/fcm/send
そのJSONを目に優しいようにパースしたものがこちらです。
{
"notification":{
"title":"note-Title",
"body":"note-Body"
}
}
返ってくるレスポンスは、たった2文字です。
になります。
これだけです、"to"という単語があります。(ヘッダーは400と報告します)これは、私のJSONに"to"がないことと関係があると思われます。to"に何を入れればいいのでしょうか?トピックは定義していませんし、デバイスも何も登録していません。しかし、Firebaseの管理パネルから通知を受け取ることができます。
Firebase の通知処理の驚くべき制限のため、quot;data only" JSON パッケージを試したいのですが、アプリがフォアグラウンドにある場合、通知はあなたのハンドラによって処理されますが、アプリがバックグラウンドにある場合、それは Firebase サービスによって内部的に処理されてあなたの通知ハンドラに渡らないということです。API経由で通知リクエストを送信する場合、明らかにこれを回避することができますが、データのみで行う場合のみです。(その場合、iOSとAndroidを同じメッセージで処理する能力が失われます)。私のJSONの中で "notification" を "data" に置き換えても、何の効果もありません。
OK、それから私はここで解決策を試みました。 Firebase Java Server を使用して、すべてのデバイスにプッシュ通知を送信します。 これは、「OK、管理者コンソールから全員に通知することは可能だけど、APIからでは無理なんだ」と言っているようなものです。そこで、まずonCreateにコードを記述します。
FirebaseMessaging.getInstance().subscribeToTopic("allDevices");
で、送信する新しいJSON。
{
"notification":{
"title":"note-Title",
"body":"note-Body"
},
"to":"allDevices"
}
というわけで、これで一応サーバーからちゃんとしたレスポンスが返ってきました。JSONレスポンスです。
{
"multicast_id":463numbersnumbers42000,
"success":0,
"failure":1,
"canonical_ids":0,
"results":
[
{
"error":"InvalidRegistration"
}
]
}
そして、それはHTTPコード200で来る。OK...によると https://firebase.google.com/docs/cloud-messaging/http-server-ref 200コードと"InvalidRegistration"は、登録トークンに問題があることを意味します。多分?なぜなら、ドキュメントのその部分はメッセージングサーバーのためのものだからです。通知サーバも同じなのでしょうか?不明です。トピックがアクティブになるまでに何時間もかかるかもしれないと他のところで見ましたが。それは新しいチャットルームを作成するためにそれを無駄にするように思えるので、それもオフのように思えます。
Firebaseを使ったことがないのに、わずか数時間で通知が来るアプリを一からコーディングできたときは、かなり興奮しました。
Firebaseを使ったことがないときに、わずか数時間で通知を受けるアプリをゼロからコーディングできたときは、かなり興奮しました。Stripe.comのドキュメントのようなレベルに達するまでには、まだ長い道のりがあるように思えます。
結論: 管理コンソールの機能をミラーリングするために、アプリを実行しているすべてのデバイスにメッセージを送信するには、どのような JSON を提供すればよいか、誰かご存知でしょうか?
どのように解決するのですか?
EDIT: この方法はもうサポートされていないようです (@FernandoZamperin に感謝します)。他の回答を参照してください。
トピックを購読するかわりに
condition
キーを使用し、グループに属していないインスタンスにメッセージを送信することができます。データはこのような感じになります。
{
"data": {
"foo": "bar"
},
"condition": "!('anytopicyoudontwanttouse' in topics)"
}
参照 https://firebase.google.com/docs/cloud-messaging/send-message#send_messages_to_topics_2
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Firebaseでアプリがバックグラウンドにあるときの通知を処理する方法
-
[解決済み】アプリがバックグラウンドにあるとき、Firebase onMessageReceivedが呼ばれない
-
[解決済み】Firebase Console を使用せずに Firebase Cloud Messaging 通知を送信するには?
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較
-
[解決済み] Recyclerviewと異なるタイプの行のインフレーションの処理
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] 通知をクリックした後にアプリケーションを開く
-
[解決済み] 複数のフィルタを持つBroadcastReceiverか、複数のBroadcastReceiverか?
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。
-
[解決済み] google-services.jsonって実際何してるの?