【发布时间】:2016-07-13 12:24:29
【问题描述】:
任何人都知道如何将推送通知从一台设备发送到多台设备。我创建示例应用程序。注册推送通知并使用代码获取令牌。我编写用于发送推送通知的 php 代码我在我的设备上收到通知。但是如何将推送通知从设备发送到另一个多个设备。
【问题讨论】:
-
不可能。你需要通过你的服务器来管理它
标签: android google-cloud-messaging
任何人都知道如何将推送通知从一台设备发送到多台设备。我创建示例应用程序。注册推送通知并使用代码获取令牌。我编写用于发送推送通知的 php 代码我在我的设备上收到通知。但是如何将推送通知从设备发送到另一个多个设备。
【问题讨论】:
标签: android google-cloud-messaging
是的,这是可能的。
服务器是强制实现的。
从服务器获取所有设备注册 ID,然后向所有设备发送推送通知。
regID 是设备 GCM 注册密钥
使用循环并更改 regID。希望对你有帮助...
对于纯数据:
client = new DefaultHttpClient();
httpPost = new HttpPost(SEND_URL);
httpPost.setHeader("Authorization", "key=" + KEY);
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
nvPair = new ArrayList<NameValuePair>();
nvPair.add(new BasicNameValuePair("registration_id", regID));
nvPair.add(new BasicNameValuePair("data1", "Push Notifications"));
nvPair.add(new BasicNameValuePair("data2", "testting from another device"));
httpPost.setEntity(new UrlEncodedFormEntity(nvPair));
res = client.execute(httpPost, new BasicResponseHandler());
对于 Json 数据:
client = new DefaultHttpClient();
httpPost = new HttpPost(SEND_URL);
httpPost.setHeader("Authorization", "key=" + KEY);
httpPost.setHeader("Content-Type", "application/json");
obj = new JSONObject();
obj.put("to", regID);
innerObj = new JSONObject();
innerObj.put("title", "Push Notification Title");
innerObj.put("text", "Message");
obj.put("notification", innerObj);
httpPost.setEntity(new StringEntity(obj.toString()));
Log.e("input", obj.toString() + " >>>end");
res = client.execute(httpPost, new BasicResponseHandler());
【讨论】:
不,无法从一台设备向另一台(或多台)设备发送推送通知(GCM 消息)。您应该使用您的应用程序服务器作为中继。
Device1 > 应用服务器 > Device2/Device3/Device4...
您应该不在您的 Android 应用中包含用于发送 FCM 消息的服务器 API 密钥。该密钥应该是秘密的,如果从您的 APK 中提取,任何人都可以向您的应用程序发送消息。
【讨论】: