Токен устройства push-уведомлений

У меня есть живое приложение. в магазине Apple, который реализует процедуру push-уведомления. Как известно, я общаюсь со своим сервером для отправки и сохранения токенов устройств.

Мой сервер правильно получает токены устройств для некоторых устройств (запросов), а также получает нулевые значения для некоторых других устройств.

Как это вообще возможно?!


person hasan    schedule 21.01.2014    source источник
comment
Возможно, для некоторых устройств регистрация завершается ошибкой, и ваше приложение не обнаруживает эту ошибку и отправляет на ваш сервер пустой токен устройства. Вы должны опубликовать соответствующий код приложения.   -  person Eran    schedule 21.01.2014
comment
Можете ли вы перечислить причины отказа от регистрации?   -  person hasan    schedule 21.01.2014
comment
Возможно, это была временная проблема с сетью (возможно, устройство было отключено, когда ваше приложение пыталось зарегистрироваться в APNS).   -  person Eran    schedule 21.01.2014
comment
проблема возникает чаще, чем просто сетевая проблема. проблема с сетью при регистрации APN, а не при общении с моим сервером!   -  person hasan    schedule 22.01.2014
comment
Привет, @hasan83, я тоже столкнулся с той же проблемой, теперь не получаю, чтобы некоторые токены устройств реализовали все делегаты. Так вы нашли какое-нибудь решение??   -  person Rohit    schedule 08.10.2014
comment
Удалите профили обеспечения с устройства. Настройки › Общие › Профили. затем повторите попытку. вы должны удалить свое приложение. профиль push-уведомлений.   -  person hasan    schedule 08.10.2014


Ответы (1)


Тогда у вас есть ошибка в коде, устройство никогда не генерирует нулевой токен или вам не удалось реализовать следующий делегат:

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err

Если этот делегат вызывается, вы можете/должны реализовать алгоритм повторной попытки, который несколько раз пытается повторно зарегистрировать токен APN.

person Gruntcakes    schedule 21.01.2014
comment
мое приложение повторяет попытку зарегистрировать устройство при каждом входе пользователя. но это не кажется проблемой. Я проверю это. но проблема появляется чаще, чем несколько раз. - person hasan; 22.01.2014
comment
Я не это имею в виду - когда вы вызываете registerForRemoteNotificationTypes: тогда устройство может быть не в состоянии сгенерировать для вас токен APN в этот момент. Вы должны реализовать делегат didFailToRegisterForRemoteNotificationsWithError, чтобы выяснить, так ли это. Если да, то вызовите registerForRemoteNotificationTypes:, и еще раз, если необходимо, и еще раз, если необходимо. Вот что я имею в виду под алгоритмом повторных попыток. Возможно, вы могли бы попробовать еще раз немедленно, если это тоже не удается, затем подождите несколько секунд, затем попробуйте еще раз, если это не удается, подождите 30 секунд и повторите попытку и т. д. - person Gruntcakes; 22.01.2014
comment
это было наше клиентское устройство. мы отправляли ему разрабатываемые версии приложения с профилем, который не позволяет получать push-уведомления. каким-то образом, когда он установил приложение. из магазина приложение продолжало использовать профили, установленные на устройстве!? объяснения? - person hasan; 27.01.2014
comment
и что мне теперь делать с этим вопросом? - person hasan; 27.01.2014
comment
Мое приложение также сталкивается с той же проблемой: ни приложение не получает токен устройства для APNS, ни метод didFailToRegisterForRemoteNotificationsWithErro не вызывается на некоторых устройствах, когда мы тестируем приложение с использованием Ad-Hoc распространения. Пожалуйста помогите. - person Yash; 14.11.2014
comment
Мое приложение также сталкивается с той же проблемой (хотя я реализовал и добавил методы делегирования для поддержки APNS в iOS 8 и более ранних версиях), что ни приложение не получает токен устройства для APNS, ни метод didFailToRegisterForRemoteNotificationsWithErro вызывается на некоторых устройствах, когда мы тестируем приложение с помощью Ad-Hoc-распределения. При попытке решить эту проблему мы сделали следующее: 1) Пробовали после удаления профилей подготовки на таких устройствах из приложения «Настройка» › «Основные» › «Профили». 2) Проверено после переустановки приложения, но не решило проблему. Пожалуйста помогите. - person Kanhaiya; 14.11.2014