谷歌可以留言 - "错误":" MismatchSenderId"?

时间:2016-05-19 20:35:08

标签: java server google-cloud-messaging

我正在使用gcm将通知推送到一个或多个设备,但我经常收到错误消息:"发件人ID不匹配"。

这是我的代码:

rasdial "MYVPNNAMEHERE" "MYUSERNAME" "MYPASSWORD" /DOMAIN:MYNETWORK

此外,当我使用public static void post(String apiKey){ try{ // prepare JSON JSONObject jGcmData = new JSONObject(); JSONObject jData = new JSONObject(); jData.put("message", "{good luck}"); jGcmData.put("to","token ID"); jGcmData.put("data", jData); // Create connection to send GCM Message request. URL url = new URL("https://android.googleapis.com/gcm/send"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("Authorization", "key=" + apiKey); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestMethod("POST"); conn.setDoOutput(true); // Send GCM message content. OutputStream outputStream = conn.getOutputStream(); outputStream.write(jGcmData.toString().getBytes()); // Read GCM response. InputStream inputStream = conn.getInputStream(); String resp = IOUtils.toString(inputStream); System.out.println(resp); } catch (IOException e) { System.out.println("Unable to send GCM message. "+e); } } 代替jGcmData.put("to","/topics/foo-bar");时,可以成功发送通知。但我想要的是将通知推送到选定的设备。

1 个答案:

答案 0 :(得分:0)

对于不匹配的发件人ID

尝试卸载应用并再次运行。这将清除应用的任何已创建的密钥。

  

error:MismatchSenderId

     

注册令牌与某组发件人绑定。当客户端应用程序注册GCM时,它必须指定允许哪些发件人发送消息。在向客户端应用程序发送消息时,您应该使用其中一个发件人ID。如果您切换到其他发件人,现有的注册令牌将无效。

根据此SO answer“”mismatchSenderId发生,因为同一设备中的应用已使用不同的密钥记录。“”

有关主题订阅/主题发送

这可能与此Subscribe to topics suddenly throws "java.io.IOException: InternalServerError"有关,它表示“我们发现我们支持的问题在过去24小时内影响了一小部分主题订阅。此问题已得到修复,订阅应该可以在所有设备上正常运行。“

我希望这会对你有所帮助。