Ликбез
ния с устройства А, а пользователь
покупает устройство Б и восстанавливает их на нём. И работают эти
приложения одновременно на двух
устройствах, хотя идентификаторы
у них разные. Если это клиент-серверное приложение, где всё общение делается на токенах, здесь
возникают куча проблем. Боевым
примером могу назвать классное
приложение Talon for Twitter. Я не
делал сброс устройства уже очень
давно и потому не знаю, исправил
ли автор эту ошибку. Когда я сообщил ему о ней, он мне ответил, почему ошибка возникла (хотя я и так
знаю, почему!), но не сказал, будет
ли он исправлять поведение. В общем, в этом приложении есть своеобразный мастер установки, который рассказывает о возможностях этого Twitter-клиента, по пути
запрашивая нужные разрешения.
Всё чётко по гайдлайнам Google,
прямо по нотам. Когда мастер настройки пройден и нужные разрешения получены, выставляется
«флаг», чтобы повторно не проходить настройку каждый раз. И приложение бэкапилось вместе с этим
флагом. Вместе с ним оно и восстанавливалось. Хотя по умолчанию
для всех приложений нового типа
(т. е. targetApi level >= 23) разрешения отключены. Запускаешь приложение, а оно не может нормаль-
но работать. Потому что нет проверки на доступность разрешений,
они остались в мастере первоначальной настройки, который не запускался, потому что флаг был выставлен в значение «мастер уже
пройден». Кроме того, после запуска клиент не загружал твитты, давая отлуп от самого Twitter. Потому
что прикопанный токен был невалиден на новой инсталляции,
и нужно было запрашивать новый, а этот запрос также делался
в мастере установки на первом же
шаге!
По мере обновления приложений,
пользователи будут получать новые версии из магазина приложений и ставить их поверх существующей. Потому проверка обновления приложения на новую версию — обязательный сценарий.
В обычной ситуации всё должно быть нормально, но когда приходится поддерживать множество
специфичных устройств, формат
настроек может меняться. Почти
никогда это не приводит к падениям, если код написан более или
менее качественно, он обрабатывает различные исключения. Но
просто потеря части настроек —
это уже плохо. К примеру у нас была ситуация, когда пользователи месяцами формировали список
ант испама, блокируя номера такси,
32