Итак, я пытаюсь установить связь с APNS из java. Я нашел java-apns, javapns и pushy библиотеки. Кажется, что у Java-apns есть наиболее подходящий API.Java: Push Уведомления отправлены, но не получены
Init:
public static void main(String[] args) {
String certificateFilePath = args[0]; // "/path/to/cert.p12"
apnsService = APNS.newService()
.withCert(certificateFilePath, Config.APNS_PROVIDER_CERTIFICATE_PASSWORD)
.withDelegate(new ApnsDelegate() {
@Override
public void messageSent(ApnsNotification apnsNotification, boolean b) {
System.out.println("message sent");
}
@Override
public void messageSendFailed(ApnsNotification apnsNotification, Throwable throwable) {
System.out.println("message failed");
}
@Override
public void connectionClosed(DeliveryError deliveryError, int i) {
System.out.println("connection closed");
}
@Override
public void cacheLengthExceeded(int i) {
System.out.println("cache length exceeded");
}
@Override
public void notificationsResent(int i) {
System.out.println("notification resent");
}
})
.withSandboxDestination()
.build();
...
}
На данный момент IOS приложение запускается на устройстве. Регистрируются локальные и удаленные уведомления, маркер устройства получает и отправляет на сервер.
Потом какое-то событие происходит, и я посылаю уведомление:
static void sendMessage(List<String> tokens, String message) {
String payload = APNS.newPayload().alertBody(message).build();
apnsService.push(tokens, payload);
}
Каждый маркер является чем-то вроде "5fb58761f9...4e92465e12"
.
Единственное, что говорит ApnsDelegate, это «сообщение отправлено», но на устройстве ничего не происходит. И я думаю, что сообщение действительно отправлено, потому что я попытался отправить уведомление с поврежденным токеном, и в этом случае я получаю сообщение «сообщение не удалось» и бросается с ошибкой, которая говорит о недопустимом токене.
Итак, на самом деле я даже не могу понять происхождение моей проблемы. Но я чувствую, что это на Java, потому что часть iOS очень проста в отличие от серверной части со всеми ее HTTP/2-voodoo-stuff.
Какой iPhone OS? – iMHitesh
@Hiteshsurani, я тестирую устройство с iOS10, но моя цель развертывания - 8.0 – seelts
Если вам не понравилось редактирование от пользователя 12K (например, @RadLexus), возможно, стоит попробовать их спросить о цель редактирования. В этом случае это было совершенно правильно - мы не используем [решены] заглавные заголовки, и мы не ставим решения в ответах. Всегда ставьте их в ответ, который я сделал для вас ниже. – halfer