Ответ 1
Токен, который я получаю из APNS, всегда одинаковый для данного пользователя.
Кроме того, что это не так, в основном потому, что вы не можете висеть как "пользователь" в настройке iPhone. Маркер устройства всегда одинаковый для каждого приложения для каждого устройства. Таким образом, разные приложения на одном устройстве получают разные токены. Одно и то же приложение на двух разных устройствах получает два разных токена.
Важное замечание, которое упоминается в руководстве APNS, заключается в том, что пользователь может создавать резервные копии своих приложений, настроек и т.д. Затем они могут сбросить свой телефон в туалет. Когда они получают свой заменяющий телефон, они могут взять свою резервную копию и восстановить ее на свой новый телефон. Бинго - одно и то же приложение, тот же пользователь, другое устройство, и другой токен.
Что касается вашего приложения, с момента последнего запуска ничего не изменилось - он не знает, что он фактически работает на другом устройстве. Единственный способ, который он знает, - это то, что он запрашивает токен устройства, и, прежде всего, он использует другой токен.
Вы можете кэшировать токен и проверять его против только что полученного маркера (например, сохранить его в NSUserDefaults) - таким образом вам не нужно связывать его с сервером, если он не изменился с момента последнего запуска, но вам абсолютно необходимо проверить, в противном случае ваши пользователи будут жаловаться, что они больше не получают push-уведомления, так как они заменяют свой телефон.