apns http2 api не возвращает статус 410 после удаления приложения

Я использую apns с протоколом http2 для отправки push-уведомлений, код, который я использую, аналогичен этому сообщению: https://stackoverflow.com/a/34831873/1546652

Когда мое приложение правильно установлено, API-интерфейс apns http2 работает нормально при отправке сообщений, мой ответ выглядит примерно так: {"response":"","httpcode":200}

Проблема в том, что когда я удаляю приложение и отправляю push-уведомление на недопустимый идентификатор регистрации, я не получаю ни статус 410, ни ответ «причина: не зарегистрирован», и все равно получаю истинный ответ со статусом 200.

Как я могу получить статус 410 и соответствующий ответ при удалении приложения в apns http2?


person user1546652    schedule 02.09.2016    source источник
comment
Удалось ли вам обнаружить эту проблему?   -  person GJain    schedule 05.05.2017
comment
Имея ту же проблему. Любое решение?   -  person Utku Dalmaz    schedule 03.06.2020


Ответы (3)


Это техническое примечание может помочь, в основном

iOS будет поддерживать одно сокетное соединение для каждой среды APNS (производство/песочница), и когда вы удаляете приложение из iOS, если это последнее приложение для данной среды, оно также убивает это сокетное соединение, что приводит к удалению события удаления для этого последнее приложение.

Обычно это происходит с приложениями для разработки.

Решение состоит в том, чтобы установить фиктивное приложение на устройстве, которое регистрируется для APN и подписано идентификаторами разработчика, теперь, когда вы удаляете свое реальное приложение с устройства во время разработки, оно будет держать соединение с APNS открытым, в результате чего об удалении приложения сообщается в APNS. .

Кроме того, в моем тестировании я столкнулся с задержками около 30-60 минут, прежде чем удаление приложения отразилось в ответе APNS.

person Saumitra R. Bhave    schedule 03.09.2016
comment
спасибо, чувак, но я создал другое приложение, подписанное с идентификатором разработчика (тот же сертификат) и другим предварительным профилем, потому что вы не можете использовать один и тот же предварительный профиль с разными идентификаторами пакета и не работает. Я полагаю, что мне нужно использовать специальное устройство, чтобы не потерять службу. Также я не думаю, что возможно то, что говорится в технической заметке, просто установите любое бесплатное приложение с поддержкой push-уведомлений из App Store, и тогда вы сможете удалить свое приложение и увидеть, как оно появляется в службе обратной связи. Вы? - person user1546652; 05.09.2016
comment
Цитата из примечания. Вы можете обойти это, оставив хотя бы одно приложение с поддержкой push-уведомлений на устройстве или компьютере, чтобы поддерживать постоянное соединение. Чтобы поддерживать постоянное подключение к производственной среде, просто установите любое бесплатное приложение с поддержкой push-уведомлений из App Store, после чего вы сможете удалить свое приложение и увидеть его в службе обратной связи. предлагаемая установка магазина приложений предназначена только для производственного случая. Установка фиктивного приложения для разработчиков должна решить проблему. Кроме того, ваш вопрос относится к http2 API? Получаете ли вы удаления прямо из службы обратной связи в бинарном API? - person Saumitra R. Bhave; 05.09.2016
comment
Заметка, на которую вы ссылаетесь, является частью устаревшей документации. Вопрос относится к API-интерфейсу http2, который задокументирован здесь. Я также обнаружил в своем тестировании с использованием http2 API, что может потребоваться не менее 10 минут для сбоя отправки из-за того, что приложение «незарегистрировано». - person efeder; 24.01.2017

Вот мой опыт работы со статусом 410 в сервисе APNS prod; После удаления дистрибутивного приложения на устройстве я мог несколько раз получить ответ 410, но затем, потратив слишком много времени на тестирование APNS Http/2 API, я заметил что он всегда возвращает ответ успеха (http 200) для предыдущих токенов устройства, которые принадлежат удаленному приложению, даже через 2–3 дня.

Я нашел эти две строки входа в устройство после добавления профиля ведения журнала apns:

APSCourier: Received message for recently removed topic ‘com.xxx.xxx.xxx’
APSCourier: Sending acknowledgement message

Я думаю, речь идет об асинхронном потоке получения уведомления об удаленной теме на устройстве и отправке сообщения подтверждения на задний APNS с устройства. Почему-то APNS не принимает никаких мер по поводу этих подтверждений.

Учитывая текущее состояние поведения APNS, использование новой службы уведомлений APNS в качестве части процесса отслеживания удаления не является правильным подходом на данный момент.

Вместо APNS вы можете выполнить фоновую задачу, чтобы пропинговать ваш сервер, чтобы вы могли узнать о статусе удаления.

И хочу поделиться несколькими ссылками с форумов разработчиков Apple, обсуждающих параллельные темы:

Токен APN остается действительным после удаления приложения

Токены устройств старых APN достигают устройства

Старые токены APN не аннулируются?

Как APNS HTTP/2 и APNS HTTP/1.1 работают вместе?

Когда APNS сообщает об удалении?

person gokhansari    schedule 03.10.2018
comment
не могли бы вы поделиться более подробной информацией. Я пытаюсь обнаружить удаление и всегда получаю 200 в запросе на завивку. - person Rahul Vyas; 29.07.2020

Также стоит попробовать старый сервис обратной связи, он до сих пор работает.

NWPusher — это быстрый способ проверить.

person GAllan    schedule 14.10.2018