gpt4 book ai didi

java - Android通知推送空使用GCM和java与json消息

转载 作者:行者123 更新时间:2023-12-02 03:41:44 34 4
gpt4 key购买 nike

我正在努力将通知推送到 Android 设备。

这是我写的一小段代码:

    String API_KEY = "AIzaSy....";
String url = "https://android.googleapis.com/gcm/send";
String to = "ce0kUrW...";

String data = "{\"to\": \"" + to + "\"}";

RequestBody body = RequestBody.create(MediaType.parse("application/json"), data);

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).post(body).addHeader("Authorization", "key=" + API_KEY).build();

Response response = client.newCall(request).execute();
System.out.println(response.headers());
System.out.println(response.body().string());

查看https://developers.google.com/cloud-messaging/http#send-to-sync ,当我尝试发送同步选项时,它工作正常。我在手机上收到通知声音,但没有实际通知,因为没有链接到推送的消息或数据。

现在,当我用以下行替换数据字符串时,我仍然得到相同的结果:

    String data = "{ \"notification\": {\"title\": \"Test title\", \"text\": \"Hi, this is a test\"},\"to\" : \""
+ to + "\"}";

我不确定我错过了什么。我的猜测是我的通知格式是错误的,但我已经尝试了迄今为止在研究过程中发现的所有组合。

他们写入日志如下所示:

Content-Type: application/json; charset=UTF-8

Date: Thu, 21 Apr 2016 10:51:23 GMT

Expires: Thu, 21 Apr 2016 10:51:23 GMT

Cache-Control: private, max-age=0

X-Content-Type-Options: nosniff

X-Frame-Options: SAMEORIGIN

X-XSS-Protection: 1; mode=block

Server: GSE

Alternate-Protocol: 443:quic

Alt-Svc: quic=":443"; ma=2592000; v="32,31,30,29,28,27,26,25"

Transfer-Encoding: chunked

OkHttp-Selected-Protocol: http/1.1

OkHttp-Sent-Millis: 1461235877551

OkHttp-Received-Millis: 1461235877855

{"multicast_id":6596853786874127657,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1461235883968556%6ff215a7f9fd7ecd"}]}

最佳答案

日志条目表明您的消息已成功处理。但是,对于带有负载选项的通知,您应该发送如下 JSON 消息:

{
"to" : "<your-recipient-id>",
"notification" : {
"body" : "Hi, this is a test",
"title" : "My test"
}
}

请按照建议进行更改,并告诉我们这是否有帮助。您可以查看Messaging Concepts and Options开发人员指南 - 该指南提供了一些有用的示例。

也许作为一个例子 - 这就是您处理通知的方式。在应用的 onMessageReceived() 中,您可以通过使用 notification 作为键检索通知负载来处理它。例如:

public void onMessageReceived(String from, Bundle data) {
String notificationJSONString = data.getString("notification");
//then you can parse the notificationJSONString into a JSON object
JSONObject notificationJSON = new JSONObject(notificationJSONString );
String body = notificationJSON.getString("body");
Log.d(TAG, "Notification Message is : " + body);
}

关于java - Android通知推送空使用GCM和java与json消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36767947/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com