Я создаю приложение тренировки для Apple Watch с watchOS 5.
Я сохраняю настройки тренировки в списке UserDefaults plist. Когда запускается расширение часов, я пытаюсь прочитать UserDefaults и восстановить настройки тренировки для пользователя.
Согласно Документация Apple
Кроме того, iOS автоматически пересылает копию iOS только для чтения.
Настройки приложения для Apple Watch. Ваше расширение WatchKit может читать
эти предпочтения с использованием объекта NSUserDefaults, но он не может сделать
изменяется напрямую в базу данных по умолчанию.
Если вашему приложению Watch необходимо изменить значения, сохраненные в настройках по умолчанию
базы данных, используйте платформу Watch Connectivity для отправки значений обратно
в ваше приложение iOS и сохраните значения там.
Поскольку UserDefaults только для чтения для расширения часов, если пользователь изменяет какие-либо настройки на часах, я отправляю эти настройки на iPhone с WatchConnectivity и сохраняю их в UserDefaults на iPhone. Поэтому в следующий раз, когда пользователь запускает Watch Extension, он должен получить обновленные userDefaults.
Теперь проблема заключается в том, что приложение часов также имеет сложности. Если приложение Apple Watch имеет сложности, оно остается в фоновом режиме, чтобы быстро запустить приложение. Так когда же приложение iOS синхронизирует доступную только для чтения копию userDefaults?
Какой может быть наилучшая практика, если пользователь хочет восстанавливать свои настройки при каждом запуске расширения приложения для часов?