可以在客户端上使用SERVER_API密钥,是否可以在不使用SERVER_API密钥的情况下将GCM消息发送到设备组?

时间:2015-12-16 22:04:51

标签: android google-cloud-messaging

我已使用本地管理的设备组成功注册了我的Android应用,如下所述:Google Cloud Messaging (GCM) with local device groups on Android gives HTTP Error code 401

此工作正常,我可以按照以下指南发送GCM消息从Android到Android:https://developers.google.com/cloud-messaging/downstream

然而,这使用SERVER_API密钥,据说在客户端上躺着并不是一件好事。

我的问题是:在客户端上使用SERVER_API密钥是否存在问题?

第二:是否可以在不使用SERVER_API密钥的情况下发送GCM消息?

我尝试将从设备组注册收到的notification_key传递给此方法,但没有任何内容到达:

private void sendMessage2(String recipient) throws IOException {
    Log.i(TAG, "Sending message to " + recipient);
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
    AtomicInteger msgId = new AtomicInteger();
    String id = Integer.toString(msgId.incrementAndGet());
    Bundle data = new Bundle();
    data.putString("hello", "world");
    gcm.send(recipient, id, data);
    Log.i(TAG, "Successfully sent message to " + recipient);
}

// recipient is the notification_key of the device group.

1 个答案:

答案 0 :(得分:3)

不要在您的客户端上使用SERVER_API密钥!

此密钥是秘密,不会在二进制文件中进行模糊处理。有人可以轻松下载您的APK,运行strings(或类似工具),然后代表您的应用程序开始发送GCM消息。

如果你想做Android< - > Android消息传递,你实际上需要做Android< - >服务器< - >机器人。