У меня странная проблема с APNS. Я с помощью библиотеки com.notnoop.apns и когда я пытаюсь нажать одно сообщение 40 устройств, я получилAPNS - Не удалось отправить сообщение
ApnsConnectionImpl : Failed to send message
[email protected] trying again
java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
...
Все идет хорошо, когда я пытаюсь нажать одно сообщение 4, 10, даже 15 устройств.
Я пытаюсь разделить коллекцию с помощью токенов push от 40 до 4 * 10 и нажимать это уведомление в foreach, но со второй попыткой я получаю такую же проблему.
Это код с нажимной методом:
//prepared collection and message
private void sendMessage(Collection<String> ids, PayloadBuilder message) {
try{
service.push(ids, message.build);
}catch(Exception e) {
logger.debug("APNS ERROR : size of collection - " + ids.size());
}
}
Constructor службы:
try {
service = APNS.newService()
.withCert(pathToCertificate, certificatePasswd)
.withProductionDestination()
.build();
} catch(IOException e){
e.printStackTrace();
}
Я обед этот метод в 10 раз с различными Коллекции кнопочных лексем (коллекции получили случайные от 1 до 40 токенов), и однажды я получил это исключение (все жетоны были правильными). Можно получить сброс соединения APNS без причины? Если я потерял связь, что делать? Подключите и попробуйте нажать еще раз потерянные сообщения на устройства? Пожалуйста, помогите, из идей.
Вы уверены, что все маркеры действительны? Наиболее вероятной причиной этой ошибки является то, что хотя бы один из них недопустим. Токен, действительный для среды песочницы (разработки), недействителен для производственной среды и наоборот. – Eran
Да, им абсолютно уверен. Все токены, которые я получил в моей базе данных, и никто не имеет плохого формата, длины или даже не является нулевым. Я пытаюсь поймать это исключение, воссоздать объект службы и повторить попытку для ввода этих токенов, где я получаю исключение. Возможно, это сработает. –
Тот факт, что все токены в вашей БД имеют правильную длину, не означает, что все они действительны. Даже если все маркеры в вашей БД были получены от Apple, они все равно могут быть недействительными, поскольку каждый токен недействителен, если используется в неправильной среде (как упоминалось в моем предыдущем коммюнике). – Eran