我已经配置了客户端Android Google Cloud Messaging(GCM)来接收推送通知,但我无法在java中配置服务器以向设备发送通知。我怎么能?
答案 0 :(得分:15)
您可以使用包含帮助方法的gcm-server.jar进行GCM消息传递。
要获得此jar,您可以通过Android SDK Manager安装 “[已弃用] Google Cloud Messaging for Android Library” 。不要让弃用的名称让您感到困惑。仅弃用客户端部分,而不是服务器端
安装完成后,您可以在"ADT_SDKROOT\sdk\extras\google\gcm"
找到它。示例文件夹包含一个非常容易理解的演示服务器
发送GCM消息只涉及几行代码:
final String GCM_API_KEY = "yourKey";
final int retries = 3;
final String notificationToken = "deviceNotificationToken";
Sender sender = new Sender(GCM_API_KEY);
Message msg = new Message.Builder().build();
try {
Result result = sender.send(msg, notificationToken, retries);
if (StringUtils.isEmpty(result.getErrorCodeName())) {
logger.debug("GCM Notification is sent successfully");
return true;
}
logger.error("Error occurred while sending push notification :" + result.getErrorCodeName());
} catch (InvalidRequestException e) {
logger.error("Invalid Request", e);
} catch (IOException e) {
logger.error("IO Exception", e);
}
return false;
答案 1 :(得分:1)
对于“”“test”“”创建java控制台应用程序,添加gcm jar文件。
try{
Sender sender = new Sender("<senderId>");
ArrayList<String> devicesList = new ArrayList<String>();
devicesList.add(<deviceId>);
String data = "<data>";
Message message = new Message.Builder()
.collapseKey("1")
.timeToLive(3)
.delayWhileIdle(true)
.addData("message",
data)
.build();
MulticastResult result = sender.send(message, devicesList, 1);
sender.send(message, devicesList, 1);
System.out.println(result.toString());
if (result.getResults() != null) {
int canonicalRegId = result.getCanonicalIds();
if (canonicalRegId != 0) {
}
} else {
int error = result.getFailure();
System.out.println(error);
}
}