ApnsService service = APNS.newService() .withCert("/etc/Certificates.p12", "password") .withSandboxDestination() // or .withProductionDestination() .build(); String payload = APNS.newPayload() .alertBody("My alert message") .badge(45) .sound("default") .build(); String deviceToken = "f4201f5d8278fe39545349d0868a24a3b60ed732"; log.warn("Sending push notification..."); service.push(deviceToken, payload);
public void run() { while (shouldContinue) { try { ApnsNotification msg = queue.take(); service.push(msg); } catch (InterruptedException e) { // ignore } catch (NetworkIOException e) { // ignore: failed connect... } catch (Exception e) { // weird if we reached here - something wrong is happening, but we shouldn't stop the service anyway! logger.warn("Unexpected message caught... Shouldn't be here", e); } } } };
private void notify(Exchange exchange) throws ApnsException { MessageType messageType = getHeaderMessageType(exchange, MessageType.STRING); if (messageType == MessageType.APNS_NOTIFICATION) { ApnsNotification apnsNotification = exchange.getIn().getBody(ApnsNotification.class); getEndpoint().getApnsService().push(apnsNotification); } else { constructNotificationAndNotify(exchange, messageType); } }
private void constructNotificationAndNotify(Exchange exchange, MessageType messageType) { String payload; Collection<String> tokens; if (isTokensConfiguredUsingUri()) { if (hasTokensHeader(exchange)) { throw new IllegalArgumentException("Tokens already configured on endpoint " + ApnsConstants.HEADER_TOKENS); } tokens = new ArrayList<>(tokenList); } else { String tokensHeader = getHeaderTokens(exchange); tokens = extractTokensFromString(tokensHeader); } if (messageType == MessageType.STRING) { String message = exchange.getIn().getBody(String.class); payload = APNS.newPayload().alertBody(message).build(); } else { String message = exchange.getIn().getBody(String.class); payload = message; } Date expiry = exchange.getIn().getHeader(ApnsConstants.HEADER_EXPIRY, Date.class); if (expiry != null) { getEndpoint().getApnsService().push(tokens, payload, expiry); } else { getEndpoint().getApnsService().push(tokens, payload); } }
public void sendMessage(ApnMessage message) throws TransientPushFailureException { try { redisSet(message.getApnId(), message.getNumber(), message.getDeviceId()); if (message.isVoip()) { voipApnService.push(message.getApnId(), message.getMessage(), new Date(message.getExpirationTime())); voipMeter.mark(); } else { pushApnService.push(message.getApnId(), message.getMessage(), new Date(message.getExpirationTime())); pushMeter.mark(); } } catch (NetworkIOException nioe) { logger.warn("Network Error", nioe); failureMeter.mark(); throw new TransientPushFailureException(nioe); } }