Я создаю приложение, которое позволяет пользователю выйти из приложения и войти в систему как другой пользователь, если они этого хотят. Есть ли способ получить новый токен устройства от Apple после входа нового пользователя? Есть ли способ принудительно вызвать метод didRegisterForRemoteNotificationsWithDeviceToken
?
Получить НОВЫЙ токен устройства Apple?
Ответы (4)
Нет, вы не можете запросить новый токен устройства. Время от времени они истекают, и только тогда вы получите новый (или, если у вас другое приложение с другим идентификатором пакета, токен будет другим).
Создайте функцию для обработки didRegister и вызовите ее из didRegisterForRemoteNotificationsWithDeviceToken. Затем используйте эту функцию, когда вам нужно принудительно вызвать вызов.
Поскольку пользователи входят в систему, передайте информацию с токеном устройства на сервер каждый раз, когда кто-то входит в систему, и свяжите пользователя с токеном на стороне сервера.
Невозможно получить другой токен устройства. Вам нужно удалить токен из серверной части, когда пользователь выходит из системы.
Я не уверен, как это ведет себя в iOS7 и более поздних версиях, но до iOS7 все приложения на одном устройстве получали один и тот же токен устройства, и поэтому то, что вы просите, невозможно. Начиная с iOS7, каждое приложение получает свой собственный токен устройства, но я не уверен, может ли этот токен меняться при последовательных регистрациях.
Вы всегда можете принудительно вызвать didRegisterForRemoteNotificationsWithDeviceToken
, вызвав registerForRemoteNotificationTypes
, но обычно вы получаете тот же токен устройства.
Если цель состоит в том, чтобы связать уведомления с конкретными пользователями, то начиная с iOS 10 вы можете попробовать реализовать NotificationService для фильтрации только тех уведомлений, которые связаны с текущим аутентифицированным пользователем. Хотя несколько пользователей на одном устройстве будут связаны с одним и тем же токеном устройства на сервере, клиент будет отображать уведомления только для текущего пользователя — при условии, что только один пользователь может войти в систему одновременно.
Этот подход также позволяет получать уведомления, не требующие аутентификации — просто передавать их без изменений.
Как упоминалось выше, вы можете принудительно обновить токен запроса-ответа после входа пользователя в систему, явно вызвав UIApplication.shared.registerForRemoteNotification (Swift 3+). Затем отправьте эту комбинацию токенов пользователя и устройства на сервер приложений для использования.