Upgrade 774 Полная | Page 32

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