Мое приложение имеет авторизацию. Взамен, если я вхожу в систему, я получаю токен, который я храню в NSUserDefaults
.
Как работает текущее приложение: Когда я нажимаю кнопку входа в систему, приложение отправляет имя пользователя и логин на сервер, в ответ приложение получает токен в случае успеха.
У меня есть сохраненный пользователь с токеном и другим методом получения информации, который содержит:
- (void)saveUserWithInfo...{
...
[[NSUserDefaults standardUserDefaults] setObject:token
forKey:kUserToken];
На этом этапе с токеном в приложении все работает отлично.
Для расширения iOS я хочу использовать этот токен, чтобы проверить, вошел ли пользователь в систему или нет. Я добавил следующую строку в метод сохранения пользователя выше:
NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mayapp"];
[sharedDefaults setObject:token
forKey:kUserToken];
Как видите, я также сохраняю токен в общих пользовательских настройках по умолчанию и могу просто запросить токен из этого нового хранилища.
Проблема:
Когда я тестирую его в первый раз, он работает как нужно, прежде чем я загружу его в магазин. У меня была версия в App Store, которая не содержала расширений iOS и нового общего хранилища NSUserDefaults
, которое должно содержать токен.
После того, как я обновил версию до новой и загрузил ее, я сначала открыл расширение, но оно показало мне ошибку, что пользователь не вошел в систему, что кажется правильным, потому что в общем хранилище NSUserDefaults
нет токена. В моем текущем рабочем процессе токен можно сохранить после нажатия кнопки входа. Но после обновления с версии без расширения на версию с расширением из App Store мой пользователь, конечно, все еще вошел в систему для приложения, потому что исходный NSuserDefaults
содержит токен, но новый общий NSUserDefaults
все еще не получил токен, потому что нам нужно выйти из системы, а затем войти чтобы заставить его работать.
Мой вопрос заключается в том, как установить токен на новый общий NSUserDefaults
без выхода из системы, а затем снова войти в систему. Конечно, когда я вхожу в систему, он начинает вызывать все новые строки из обновлений, и есть мой новый общий NSUserDefaults
, который я добавил для расширения iOS. Таким образом, после нового входа в систему он будет содержать токен, и если открыть расширение, оно будет работать, но сначала запустите сразу после того, как версия обновления из App Store покажет ошибку, что пользователь не вошел в систему - что правильно из-за нового добавленного shared NSUserDeafults