使用GCM和Android中的ASP.NET服务器推送通知(如何动态获取和发送ID。)

时间:2013-01-14 12:05:28

标签: android cloud google-cloud-messaging

有一些问题......

final String regId = GCMRegistrar.getRegistrationId(this);               // MainActivity.java class

通过此声明,我正在为运行此应用程序的设备动态接收注册ID,从而发送到Web服务器。但正如您所说,除了向网络服务器发送任何其他识别因素(用户ID或电话ID)。如何动态获取和发送这些ID。

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
 for (int i = 0; i < Vars.length; i++) {
            nameValuePairs.add(new BasicNameValuePair(Vars[i][0], Vars[i][1]));

如何动态设置数组维度,因为根据已注册的设备,我为所有这些已注册的设备设置注册ID数组并将其发送到Web服务器。 请粘贴您的OnRegistered&amp; GCMIntentService类的UnRegistered方法。

另外,服务器端.net开发人员如何将该数据数组发送到GCM服务器。现在他正在以多种设备的json格式发送注册ID,但它没有执行。我们收到404错误或错误请求。对于使用以下语句的单个注册ID,它在服务器端执行。

string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message=" + value + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + deviceIDs + "";

如果有任何其他身份证件必须通过,请告诉我。因为让我感到困惑的是,超过1000个用户可以安装应用程序。将这些许多ID存储在数据库中是否有效?因为我们的服务器必须将这些许多ID发送到GCM服务器,否则每个人都不会收到推送通知。

2 个答案:

答案 0 :(得分:1)

如果您只是通过应用程序发送给每个人,那么您不需要存储除GCM ID之外的任何其他信息。但是,如果您不单独存储它们,您最终将拥有不再有效的ID。有时手机会获得新的ID,如果你将它们存储在1条记录中,那么你就不会知道哪些ID已经改变了

nameValuePairs List将保存表单请求的值。例如gcmid,OtherUniquePhoneInfo以及您想要发送的任何其他内容。如果要将所有GCM ID存储在1条记录中,则只需发送GCM ID。您只需要在nameValuePairs List

中添加1个字段

如果您要发送到拥有您应用的所有设备,则必须将每个ID发送到GCM服务器。

答案 1 :(得分:1)

注册ID会定期更改。我同意zhydian ID将不再有效。

用于识别设备,您可以使用唯一设备编号