1

有一些疑问......

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 服务器。请粘贴 GCMIntentService 类的 OnRegistered 和 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 + "";

请让我知道是否必须传递任何其他 ID。因为让我感到困惑的是,一个应用程序可以被 1000 多个用户安装。将那么多ID存储在数据库中是否有效???因为我们的服务器必须将这么多的 id 发送到 GCM 服务器,否则每个人都不会收到推送通知。

4

2 回答 2

1

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

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

于 2013-01-15T12:53:33.637 回答
1

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

nameValuePairs 列表将保存表单请求的值。例如 gcmid、OtherUniquePhoneInfo 以及您想要发送的任何其他内容。如果您将所有 GCM Id 存储在 1 条记录中,那么您只需发送 GCM Id。您只需将 1 个字段添加到 nameValuePairs 列表

如果您想发送到所有拥有您的应用程序的设备,那么您必须将每个 ID 发送到 GCM 服务器。

于 2013-01-15T12:34:08.887 回答