2017-12-04 11 views
0

私はFirebaseを使用してAndroidにプッシュ通知を行う方法を理解しようとしていて、従来のHTTP(https://fcm.googleapis.com/fcm/send)を使用して動作させましたが、新しいエンドポイントを使用することがドキュメントに示されています(https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send)。私はこの応答を得続けるので、私はそれが働くように見えることはできません。Google FCMメッセージの送信時に無効な値

{ 
    "error": { 
     "code": 400, 
     "message": "Request contains an invalid argument.", 
     "status": "INVALID_ARGUMENT" 
    } 
} 

これはhttps://firebase.google.com/docs/cloud-messaging/send-message#send_messages_to_specific_devicesでサンプルを使用して発生します。

POST https://fcm.googleapis.com/v1/projects/project-916177026973/messages:send HTTP/1.1 
cache-control: no-cache 
Postman-Token: 81403929-77ba-4568-8681-a854527ccb22 
Content-Type: application/json 
Authorization: Bearer <token redacted> 
User-Agent: PostmanRuntime/6.4.1 
Accept: */* 
Host: fcm.googleapis.com 
accept-encoding: gzip, deflate 
content-length: 319 
Connection: close 

{ 
    "message":{ 
    "token" : <token redacted>, 
    "notification" : { 
     "body" : "This is an FCM notification message!", 
     "title" : "FCM Message", 
     } 
    } 
} 

私もそれを準拠させるために除去最後のコンマで試してみましたJSONとはまだ運がない何か案は?

+0

正しいプロジェクトIDを使用していることは確かですか?この部分 "/ project-916177026973 /"にあなたのSender Idが含まれているようです。 Firebaseコンソールを開くと、プロジェクトIDがURLの一部になります。 – Barns

+0

@Barns hallelujah!ありがとうございます - それを解決策にして、それを答えとしてマークします。 –

答えて

1

OPが指摘しているように、HTTP経由でメッセージを送信する場合は、FirebaseがFCM v1エンドポイントに提案するようになりました。

HTTP経由でメッセージを送信するには、HTTP POST要求をFCM v1 エンドポイントに送信し、送信方法を指定します。エンドポイントURLには、Firebaseコンソールの 一般プロジェクト設定タブで利用可能な、アプリケーションのFirebaseプロジェクトのプロジェクトIDである が含まれている必要があります。

それはこのようになります:

POST https://fcm.googleapis.com/v1/projects/your_project_id_here/messages:send HTTP/ 

URL your_project_id_hereのセクションには、あなたプロジェクトIDです。プロジェクトのFireboxコンソールのSettingsセクションに、Generalのタブにあるプロジェクト固有のproject Idが必要です。

Project IDを探します。正しいProject IDについて疑問がある場合は、ウェブサイトのURLのアドレスがあなたのプロジェクトにある場合は、それも一部です。次のようになります。

https://console.firebase.google.com/project/your_project_id_here/settings/general/android:your_project_name