3

我正在使用 Android SDK 中给出的 Google Cloud Messaging 示例代码。客户端和服务器代码都可以正常工作。我已经在三个 android 设备中安装了 GCM 客户端 android 应用程序,并且当服务器运行时,每个设备都成功注册到 GCM 服务器。每当我尝试发送消息时,服务器都会将消息广播到所有三个设备。但我的问题是我们是否可以将任何设备列入黑名单或允许服务器向任何特定设备发送消息。

有没有什么方法可以使用服务器中为每个设备生成的registrationID来限制设备?

这是发送推送通知的服务器代码

if (devices.size() == 1) {          
    String registrationId = devices.get(0);
            if(!(registrationId .equalsIgnoreCase("APA91bE61KYmI4Qzn9NKkh6wkHr1ya8FIfGbc_gYJf0_33558IeFnj9j8j4EPRaJeSKJ_CK6_a9FQLt_CapLE4e_mvRaq3hytJalfjTBbkAxbLIdfdXyoxatSrDPmtxSdyaeiRV-Bav-4qOSlURH5mL69Fa9ktX8JFoow")))
            {
                            Message message = new Message.Builder().build();
                            Result result = sender.send(message, registrationId, 5);
                            results = Arrays.asList(result);
            }
  } else {
    // send a multicast message using JSON
    Message message = new Message.Builder().build();
    MulticastResult result = sender.send(message, devices, 5);
    results = result.getResults();
  }
4

1 回答 1

3

GCM-Server 中没有内置方法来限制某些设备,但您可以创建自己的黑名单并将消息发送到此列表以外的设备。

您可以在黑名单中创建不包含registrationIds 的设备列表,并向该列表发送多播消息。

在此处查看 javadoc 以获取有关 GCM 服务器端代码的更多信息。

于 2012-08-02T09:55:11.710 回答