Если вы отправляете информацию с использованием протокола TCP / IP в Apple, вы должны получать подтверждения. Однако вы заявили:
Apple не возвращает
подтверждение вообще
Что вы подразумеваете под этим? TCP / IP гарантирует доставку, поэтому получатель ДОЛЖЕН подтвердить получение. Однако, это не гарантирует, когда будет осуществлена доставка.
Если вы отправляете уведомление в Apple и разрываете соединение до получения ACK, вы не можете определить, успешно ли вы достигли или нет, поэтому вы просто должны отправить его снова. Если двойное нажатие одной и той же информации является проблемой или неправильно обрабатывается устройством, значит, есть проблема. Решение состоит в том, чтобы исправить обработку устройства дублирующегося push-уведомления: на стороне нажатия ничего сделать нельзя.
@ Пояснение к комментарию / вопрос
Хорошо. Первая часть того, что вы понимаете, это ваш ответ на вторую часть. Только пакеты, которые получили ACKS, были отправлены и получены правильно. Я уверен, что мы могли бы придумать очень сложную схему отслеживания каждого отдельного пакета, но TCP предполагает абстрагировать этот слой и обработать его для вас. С вашей стороны вам просто приходится иметь дело с множеством сбоев, которые могут произойти (в Java, если произойдет какой-либо из них, возникает исключение). Если исключений нет, данные, которые вы только что пытались отправить, отправляются гарантированно по протоколу TCP / IP.
Существует ли ситуация, когда данные, по-видимому, "отправляются", но не гарантированно принимаются, когда не возникает исключение? Ответ должен быть нет.
@ Примеры
Хорошие примеры, это немного проясняет ситуацию. Я бы подумал, что будет сгенерирована ошибка. В опубликованном примере выдается ошибка при второй записи, но не при первой. Это интересное поведение ... и я не смог найти много информации, объясняющей, почему он так себя ведет. Это, однако, объясняет, почему мы должны разрабатывать наши собственные протоколы прикладного уровня для проверки доставки.
Похоже, вы правы, что без протокола для подтверждения их устройство Apple не получит уведомление. Apple также только в очереди это последнее сообщение. Посмотрев немного на сервис, я смог определить, что этот сервис больше удобен для клиента, но не может быть использован для гарантии обслуживания и должен сочетаться с другими методами. Я прочитал это из следующего источника.
http://blog.boxedice.com/2009/07/10/how-to-build-an-apple-push-notification-provider-server-tutorial/
Похоже, что ответ "нет" о том, можете ли вы сказать наверняка. Возможно, вы сможете использовать анализатор пакетов, например Wireshark, чтобы определить, был ли он отправлен, но это не гарантирует, что он был получен и отправлен на устройство из-за характера службы.