/** * Sends the message using the Sender object to the registered device. * * @param message the message to be sent in the GCM ping to the device. * @param sender the Sender object to be used for ping, * @param deviceInfo the registration id of the device. * @return Result the result of the ping. */ private static Result doSendViaGcm(String message, Sender sender, DeviceInfo deviceInfo) throws IOException { // Trim message if needed. if (message.length() > 1000) { message = message.substring(0, 1000) + "[...]"; } // This message object is a Google Cloud Messaging object, it is NOT // related to the MessageData class Message msg = new Message.Builder().addData("message", message).build(); Result result = sender.send(msg, deviceInfo.getDeviceRegistrationID(), 5); if (result.getMessageId() != null) { String canonicalRegId = result.getCanonicalRegistrationId(); if (canonicalRegId != null) { endpoint.removeDeviceInfo(deviceInfo.getDeviceRegistrationID()); deviceInfo.setDeviceRegistrationID(canonicalRegId); endpoint.insertDeviceInfo(deviceInfo); } } else { String error = result.getErrorCodeName(); if (error.equals(Constants.ERROR_NOT_REGISTERED)) { endpoint.removeDeviceInfo(deviceInfo.getDeviceRegistrationID()); } } return result; }
/** * Sends the message using the Sender object to the registered device. * * @param message the message to be sent in the GCM ping to the device. * @param sender the Sender object to be used for ping, * @param deviceInfo the registration id of the device. * @return Result the result of the ping. * @throws IOException */ private static Result sendViaGcm(Message msg, Sender sender, DeviceInfo deviceInfo) throws IOException { Result result = sender.send(msg, deviceInfo.getDeviceRegistrationId(), 5); LOG.info("Sent ping to device of user: " + deviceInfo.getUserHandle()); if (result.getMessageId() != null) { String canonicalRegId = result.getCanonicalRegistrationId(); if (canonicalRegId != null) { endpoint.removeDeviceInfo(deviceInfo.getDeviceRegistrationId()); deviceInfo.setDeviceRegistrationId(canonicalRegId); endpoint.insertDeviceInfo(deviceInfo); } } else { String error = result.getErrorCodeName(); if (error.equals(Constants.ERROR_NOT_REGISTERED)) { endpoint.removeDeviceInfo(deviceInfo.getDeviceRegistrationId()); } } return result; }