Получить НОВЫЙ токен устройства Apple?

Я создаю приложение, которое позволяет пользователю выйти из приложения и войти в систему как другой пользователь, если они этого хотят. Есть ли способ получить новый токен устройства от Apple после входа нового пользователя? Есть ли способ принудительно вызвать метод didRegisterForRemoteNotificationsWithDeviceToken?


person dbarrett    schedule 10.06.2014    source источник


Ответы (4)


Нет, вы не можете запросить новый токен устройства. Время от времени они истекают, и только тогда вы получите новый (или, если у вас другое приложение с другим идентификатором пакета, токен будет другим).

Создайте функцию для обработки didRegister и вызовите ее из didRegisterForRemoteNotificationsWithDeviceToken. Затем используйте эту функцию, когда вам нужно принудительно вызвать вызов.

Поскольку пользователи входят в систему, передайте информацию с токеном устройства на сервер каждый раз, когда кто-то входит в систему, и свяжите пользователя с токеном на стороне сервера.

person Millie Smith    schedule 10.06.2014
comment
Недостаточно передавать новый токен на сервер каждый раз, когда кто-то входит в систему. Вам также потребуется удалить токен с сервера, когда пользователь выходит из системы. - person ken; 19.08.2016

Невозможно получить другой токен устройства. Вам нужно удалить токен из серверной части, когда пользователь выходит из системы.

person respectTheCode    schedule 10.06.2014

Я не уверен, как это ведет себя в iOS7 и более поздних версиях, но до iOS7 все приложения на одном устройстве получали один и тот же токен устройства, и поэтому то, что вы просите, невозможно. Начиная с iOS7, каждое приложение получает свой собственный токен устройства, но я не уверен, может ли этот токен меняться при последовательных регистрациях.

Вы всегда можете принудительно вызвать didRegisterForRemoteNotificationsWithDeviceToken, вызвав registerForRemoteNotificationTypes, но обычно вы получаете тот же токен устройства.

person Eran    schedule 10.06.2014

Если цель состоит в том, чтобы связать уведомления с конкретными пользователями, то начиная с iOS 10 вы можете попробовать реализовать NotificationService для фильтрации только тех уведомлений, которые связаны с текущим аутентифицированным пользователем. Хотя несколько пользователей на одном устройстве будут связаны с одним и тем же токеном устройства на сервере, клиент будет отображать уведомления только для текущего пользователя — при условии, что только один пользователь может войти в систему одновременно.

Этот подход также позволяет получать уведомления, не требующие аутентификации — просто передавать их без изменений.

Как упоминалось выше, вы можете принудительно обновить токен запроса-ответа после входа пользователя в систему, явно вызвав UIApplication.shared.registerForRemoteNotification (Swift 3+). Затем отправьте эту комбинацию токенов пользователя и устройства на сервер приложений для использования.

person MandisaW    schedule 07.11.2017