6

Google Firebase がどのように機能するかを理解するために、私 (および私と同じようにイライラしている他の人) を助けてくれませんか? ドキュメンテーションは非常に紛らわしいので、私は完全にばかだと感じます.

これが事です。Cordova アプリのユーザーにプッシュ メッセージを送信して、更新などについて知らせようとしているだけです。古き良き時代 (おそらく数週間前) には、単にプッシュ メッセージと呼ばれていました。今、このFirebaseのものがあり、すべてが変更され、名前が変更されました。私が現在必要としているのは Notifications と呼ばれるものだと思いますが、Cloud Messaging もありますが、正確な違いは何なのかわかりません。

次に、用語の完全な混乱があります。どうやら通知を送信するための https API があるようですが、ドキュメントが不十分です。それを説明しているサイトがいくつかありますが、用語については合意に達していないようです。「API キー」と言う人もいれば「認証キー」と言う人もいます。Google 自身はそれを「認証キー」と呼んでいますが、コンソールでプロジェクト設定を調べると、「サーバー キー」と「アプリ ID」が表示されます。 google_services.json ファイルには「private_key_id」が含まれています。だから、かなりの量のWTFがあります。

誰かがここで何を提供すべきかを明確にすることができますか? これは、Firebase API に対して POST リクエストを作成する方法です。

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA  <-- WHAT IS THIS?

{ "data": {
    "score": "5x1",
    "time": "15:10"
 },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..." <-- AND THIS?
}

「承認」とは何ですか?通知をすべてのユーザーに送信したい場合、「to」の値はどうなりますか? また、特定のグループをターゲットにしたい場合はどうすればよいですか? (まず、すべてのデバイスに単純に届くようになれば幸いです。) これらのパラメーターに関する適切なドキュメントはありますか?

さらに、Google は全員が Java で作業していると想定しており、Java の例のみを提供しているようです。少なくとも、PHP、Node.js、または単純な JavaScript で使用できるものは見つかりませんでした。私が必要としないすべての機能の例がたくさんあります。

更新:「承認」は、私のプロジェクトの [クラウド メッセージング] タブの下にある Firebase コンソールにある「サーバー キー」である必要があることがわかりました。(彼らがそれをあまり隠していないのは良いことです。)それでも、cURL を使用して PHP から POST を送信すると、HTTP コード 0 で空の応答が返されます。

4

1 に答える 1

18

OK、私は自分でそれを理解し、今では少しばかではなくなったと感じています. まだ使用している人が役立つことを願っています。

「Authorization」の値は、私のプロジェクトの [Cloud Messaging] タブの下にある Firebase コンソールにある「Server Key」である必要があります。

「to」パラメータは必須です。省略した場合、サーバーは単純な「to」で応答します。とにかく、素敵な JSON で応答します。

すべてのデバイスにメッセージを送信する場合は、次を指定する必要があります。

"to": "/topics/all"

成功した場合、サーバーの応答は次のとおりです。

{"message_id":4988221490411655075}

エラーが発生した場合は、次のようになります。

{"multicast_id":5691752204334485119,
 "success":0,
 "failure":1,
 "canonical_ids":0,
 "results":[{
               "error":"MissingRegistration"
            }]
}

パラメータと戻り値については、次で説明します。

https://firebase.google.com/docs/cloud-messaging/http-server-ref

Firebase コンソールは、コンソール自体から送信されたメッセージのみを保持します。

Cordova では、このシンプルなプラグインを使用していますが、問題なく動作します。

https://www.npmjs.com/package/cordova-plugin-fcm

以下は、PHP で cURL を使用して送信される整形式の JSON リクエストです (これも含まれています)。

$json_data = '{ "data": { 
                  "price": "1000",
                  "currency": "USD" 
                },
                "notification": {
                  "title": "Hey you got a message",
                  "body": "Your mother stil loves you",
                  "sound": "default",
                  "click_action": "FCM_PLUGIN_ACTIVITY",
                  "icon": "icon_name"
                },
                "to": "/topics/all",
                "priority": "high"
              }';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
                                            'Content-Type: application/json',                                                                                
                                            'Content-Length: '.strlen($json_data),
                                            'Authorization:key=AIzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'  
                                          ));           
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($ch);
curl_close($ch);
于 2016-07-01T23:06:03.583 に答える