4

PHPを使用してFirebase APIを使用し、JSON形式を使用して投稿データを送信しています。応答は私に与えていmessage_idますが、メッセージは配信されていません。

同じフィールドを持つ API の代わりに Firebase コンソールを使用すると、正常に配信されました。

私のphpコード:

<?php

$json_data = '{ "data": { 
                  "title": "Hey you got a message",
                  "text": "Hi from firebase api"
                },
                "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',
                                            'Authorization:key="Used my server key here"'
                                          ));
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);
echo $output;
?>

応答:

{"message_id":64666973642901*****}

PS: 情報を隠すためにアスタリスクを使用しました。

更新:toフィールドを特定のトークン に設定すると、メッセージが配信されます。ただし、に設定すると機能しませんtopics/all。コンソールと同じように、アプリに関連付けられているすべての人に送信できる他の方法はありますか?

4

1 に答える 1

3

やっとわかった。最初は、アプリにトピックが含まれていないため、明示的に作成する必要があります。

トピックをサブスクライブするには、アプリで次のメソッドを使用します

FirebaseMessaging.getInstance().subscribeToTopic("NAME OF TOPIC");

したがって、すべてのアプリ ユーザーに送信するには、上記の方法を使用して、各ユーザーが特定のトピックを購読するようにします。「all」という名前で作成しました。

ここtoで、JSON HTTP POST リクエストのフィールドをtopics/NAME OF TOPICまたtopics/allは私の場合に設定します。

注:トピックをサブスクライブしているときに、その名前のトピックが存在しない場合は、新しいトピックが自動的に作成されます。

于 2016-07-05T14:08:29.457 に答える