GCMを使用して、登録済みの多数のデバイスに一度に複数の通知を送信したいのですが、一度に1つのデバイスの通知を送信するためにしか使用できないため、プレーンテキストでは送信できないことを知っています。そこで、代わりにJSONを使用してHTTPボディコンテンツを作成することにし、JSONオブジェクトを表す次の文字列を作成することができました。
{ collapse_key : my_CollapseKey, data.message : myMessage, registration_ids : ["regid1","regid2",...] }
しかし、リクエストを送信するたびに、Bad Requestを示す400の応答が返されます。また、GCM Architectural Overviewのドキュメントを参照すると、次のように表示されます。
応答400はJSONリクエストにのみ適用されます。リクエストをJSONとして解析できなかったか、無効なフィールドが含まれていたことを示します(たとえば、数値が期待される場所に文字列を渡す)
これは、リクエストの送信に使用したASP.Netで開発されたWebアプリのスナップショットです。
request.ContentType = "application/json"
request.Headers.Add("Authorization: key=My_Server_Key")
request.Headers.Add("Sender: id=myProject_ID")
Dim collapsKey = Guid.NewGuid.ToString("n")
Dim data As String = "{ collapse_key : " + collapsKey + "," + " data.message : " + HttpUtility.UrlEncode(TextBox1.Text) + "}" + ", registration_ids : " + jsonids1 + "}"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(data)
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
JSONオブジェクトを正しく解析して複数の通知を送信する方法はありますか?どんな助けでも完全に感謝されます。
よろしく