Как использовать Javapns для поддержки расширенного формата уведомлений Apple - PullRequest
3 голосов
/ 28 апреля 2011

Greetings,

Я создаю сервер на основе Java для создания push-уведомлений для службы Apple APN iOS.Я нашел Javapns в коде Google, который, кажется, обеспечивает простую базовую среду для взаимодействия с APN, и который, кажется, довольно широко используется.

http://code.google.com/p/javapns/

Однако, читая документы Apple, существует «расширенный формат» для уведомлений, который поддерживает «истечение срока», то есть установка времени (ну, в секундах) для истечения срока действия уведомленияесли это еще не было доставлено.Я не вижу способа установить это с помощью Javapns, и я не уверен, как служба APN обрабатывает истечение срока действия уведомлений, если вы явно не установите его.Итак,

  1. Кто-нибудь знает, как поддерживать расширенный формат уведомлений APN, в частности, как установить срок действия?
  2. Кто-нибудь знает, как Apple обрабатывает срок действия уведомлений, если это не явноset?
  3. У кого-нибудь есть предложения, которые не требуют, чтобы я начинал с нуля, поскольку сервер в настоящее время функционирует как есть?

Заранее спасибо.

Andrew

Ответы [ 3 ]

5 голосов
/ 11 октября 2011

Я недавно внес существенный вклад в проект JavaPNS, который привел к выпуску JavaPNS 2.0 несколько дней назад. Эта версия обеспечивает полную поддержку расширенного формата уведомлений, включая возможность установки собственного срока действия.

Сильвен

0 голосов
/ 22 марта 2016

Улучшенный ios push здесь .Чтобы отправить уведомление, вы можете сделать это в три этапа:

Настроить соединение

ApnsService service =
    APNS.newService()
    .withCert("/path/to/certificate.p12", "MyCertPassword")
    .withSandboxDestination()
    .build();

Создать и отправить сообщение

String payload = APNS.newPayload().alertBody("Can't be simpler than this!").build();
String token = "fedfbcfb....";
service.push(token, payload);

Чтобы запросить службу обратной связи для неактивных устройств:

Map<String, Date> inactiveDevices = service.getInactiveDevices();
for (String deviceToken : inactiveDevices.keySet()) {
    Date inactiveAsOf = inactiveDevices.get(deviceToken);
    ...
}
0 голосов
/ 29 апреля 2011

Хорошо, что вы нашли библиотеку java ... к сожалению, вы не читали документы там.

Я опубликую некоторые из основных моментов ниже:


В существующем коде используется «Простой формат уведомлений», который никогда не возвращает ошибку.

См. документы по адресу: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html

Я попытался обновить до «Расширенного формата уведомления», которыйдолжен вернуть ошибку, но я не могу получить никаких ошибок от APNS.(также по ссылке выше)

В формате Enhanced соединение не прерывается сразу после отправки данных, но я ничего не получаю от моего вызова socket.getInputSocket.read ().

Эта проблема должна быть рассмотрена до тех пор, пока у меня не будет больше времени для ее устранения.

(Кто-то еще прокомментировал) Большое спасибо за внимание.Я получил тот же результат, что и ваш.Может быть, это как-то связано с Apple Gateway.


Итак ... вы могли бы: 1) создать свою собственную 2) помочь улучшить существующую библиотеку 3) попробовать другую библиотеку, например: https://github.com/notnoop/java-apns 4) ничего не делать

...