Я разрабатываю расширение iOS для провайдера учетных данных автозаполнения.
Расширение использует файл iCloud, который обменивается данными между основным приложением и расширением. Повторно используя код для управления файлами iCloud, я не вижу никаких уведомлений о том, что iCloud был отключен (или включен) для основного приложения (из расширения приложения).
Эта проблема усугубляется тем, что что расширения могут быть прекращены - или нет. Таким образом, пока расширение продолжает работать, оно, похоже, поддерживает то же состояние iCloud при запуске. Вызовы NSFileManager.defaultManager.ubiquityIdentityToken
всегда возвращают одно и то же значение внутри добавочного номера (а NSUbiquityIdentityDidChangeNotification
никогда не публикуется). Это означает, что после уведомления конечного пользователя о том, что iCloud необходимо включить, он не может обнаружить, что он включен, пока процесс расширения не будет в конечном итоге завершен, а затем перезапущен.
Я видел упоминание о проблемах с CloudKit и NSUbiquityIdentityDidChangeNotification
, но я подозреваю, что это больше связано с тем, как процесс расширения приложения управляется iOS.
В идеале у меня был бы механизм для обнаружения изменения доступности iCloud в расширении приложения, или в противном случае это означает прекращение расширения приложения (средствами, приемлемыми для Apple).