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

标签 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 服务器。 请粘贴 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服务器,否则每个人都不会收到推送通知。

最佳答案

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

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

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

关于android - 在 android 中使用带有 ASP.NET 服务器的 GCM 推送通知(如何动态获取和发送 ID。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318115/

相关文章:

android - TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/windows 的含义

Android 4.0 SSL认证

android - Android系统使用BackupAgent时神秘的ClassNotFoundException

push-notification - GCM/APNS 如何生成注册 ID

mysql - GCM速度和DB设计冲突

android - 为什么在 SQLiteDatabase 上使用 SQLiteOpenHelper?

java - 安卓:java.lang.IllegalArgumentException:服务未注册

mysql - 谷歌云 SQL 到外部奴隶 - 无法让 SSL 工作

hadoop - Hadoop 2节点集群通信查询

javascript - 如何将 Google Cloud Messaging 响应放入 Service Worker 的事件中以获取 Chrome 中的通知