2015-12-02 3 views
1

Я храню значение токена устройства с помощью NSUserdefaults, а затем отправлю это значение на мой сервер. Мое приложение проверяет, существует ли это значение. Если значение не существует, мое приложение пытается вызвать метод registerdevicetoken.Как обновить значение nsuserdefaults после восстановления iphone через itunes?

Но я узнал о проблеме.

Если пользователь восстанавливает свой iPhone через iTunes, значения NSUserdefaults восстанавливаются. Однако сохраненный токен устройства не является допустимым токеном устройства для нового устройства, но мое приложение не может распознать, что телефон был переустановлен через iTunes.

Как я могу собрать правильный токен устройства, когда пользователи восстанавливают свой iPhone?

+0

Эй! Вы все-таки управляли? –

ответ

0

Хорошо. Давайте возьмем подход к папке документа. Во-первых, давайте посмотрим на анатомию приложения iOS. Как вы видите ниже, есть 3 папки с ключами. Apple Docs Полные папки «Документы» и «Либрай» получают резервную копию, если только вы специально не вызываете команду в файле. Это то, что мы будем делать. Создайте файл, который вы можете вызвать, например, firstLaunch.txt. Поместите этот файл в поддержку библиотеки/приложения /. И установите тег noBackUp, используя: -[NSURL setResourceValue:forKey:error:] с помощью ключа NSURLIsExcludedFromBackupKey. Это предотвратит резервное копирование файла. Теперь у вас может быть простая инструкция if-else, проверяющая, существует ли файл. Если это так, это означает, что приложение уже запущено, а токен обновлен. Если это не так, создайте новый токен пользователя и теперь снова создайте файл, поместите его в нужную папку. Чтобы быть ясным, это единственный раз, когда вы должны создавать файл, так как он будет вызван только при первом запуске и после восстановления. Вы можете найти более подробную информацию и это изображение на странице Apple Docs.

Надеюсь, что поможет, Джулиан.