Сегодня я обновил свой Xcode 8 до beta 2 и пытаюсь обмениваться данными между приложением и расширением Today. Я столкнулся с этим предупреждением журнала:
2016-07-08 18:00: 24.732472 ProjetctX [941: 42801] [Пользовательские значения по умолчанию] Не удалось прочитать значения в CFPrefsPlistSource <0x1700f1280> (домен: group.xpto, пользователь: kCFPreferencesAnyUser, ByHost: Да, контейнер: (ноль)) : Использование kCFPreferencesAnyUser с контейнером разрешено только для системных контейнеров, отсоединение от cfprefsd
Кто-нибудь может мне помочь?
ios
xcode
ios10
ios-app-group
Клевисон
источник
источник
Ответы:
На самом деле это ложное предупреждение, появившееся в iOS 10 и macOS 10.12:
Совет о добавлении идентификатора вашей команды отключит предупреждение, но также создаст новые пустые пользовательские значения по умолчанию. Это приведет к тому, что любые ранее сохраненные данные станут нечитаемыми.
На данный момент решение - просто игнорировать это.
Также сотрудник Apple CFM на форумах :
источник
Вот как использовать UserDefaults с группами приложений для передачи данных между основным приложением и расширением:
В основном приложении выберите свой проект в Project Navigator.
Выберите основное целевое приложение и перейдите на вкладку «Возможности».
Установите переключатель "Группы приложений" в положение ВКЛ. Это свяжется с порталом разработчика для создания набора прав.
Создайте новый контейнер. Согласно Apple, ваш идентификатор контейнера должен начинаться с «group», поэтому имя, такое как «group.io.intrepid.myapp», идеально.
Выберите цель расширения и повторите процесс включения групп приложений. Не создавайте новую группу приложений, просто выберите группу, которая была только что создана в основной цели приложения.
При чтении или записи UserDefaults в вашем приложении или расширении не открывайте
UserDefaults.standard
. Вместо этого используйтеUserDefaults(suiteName: "group.io.intrepid.myapp")
. Примечание. Имя набора - это имя контейнера группы приложений, созданного на шаге 4.Убедитесь, что группа включена и используется один и тот же идентификатор группы для раздела расширений и возможностей приложения!
Кредит идет на http://blog.intrepid.io/ios-app-extensions
источник
Также была такая же проблема с моим приложением macOS.
Решил: Перезагрузите устройство!
https://stackoverflow.com/a/39876271
источник
SuiteName (постфикс) не должен быть основным идентификатором пакета.
источник
Измените имя группы в правах Xcode с:
group.com.mycompany.myapp
Чтобы
group.MYTEAMID.com.mycompany.myapp
ps: вы можете найти свой MYTEAMID в членстве на developer.apple.com
источник
Для меня решением было не использовать один и тот же идентификатор для идентификатора пакета приложения и части после «group.».
Скажем, идентификатор пакета приложений - com.app.id, а идентификатор группы - group.com.app.id вызывает проблемы. После того, как я меняю его на «group.com.app.id.something», он останавливается.
источник
Выполните сборку с помощью Xcode 8.1 Beta, и вы увидите то же предупреждение, но вы также получите значение.
источник
У меня такая же проблема, когда я пытаюсь использовать initWithSuiteName. Похоже, это ошибка Apple. Единственное решение / обходной путь, который я нашел, - сбросить все настройки устройства. Зайдите в Настройки -> Общие -> Сброс -> Сбросить все настройки.
Это не стирает содержимое на iPhone, а просто стирает все настройки. После сброса настроек все нормально заработало. Дайте мне знать, если это вам тоже поможет.
источник
Если у вас возникла эта проблема, когда вы пытаетесь сохранить данные в расширение APP с помощью
userDefault
, возможно, вы написали этот код:[[NSUserDefaults standardUserDefaults] initWithSuiteName:@"group.xxx.com"];
Этот код сбрасывает значение по умолчанию
userDefault
.Собственно правильный код:
[[NSUserDefaults alloc] initWithSuiteName:@"group.xxx.com"];
http://www.jianshu.com/p/e782104c3bc3
источник
Меняться от
[[NSUserDefaults alloc] initWithSuiteName:@"group.com.xxx.xxx"];
к
[[NSUserDefaults alloc] initWithSuiteName:@"nnnnnnnnnn.group.com.xxx.xxx"];
Где номер
nnnnnnnnn
вашей команды, тот, который вы используете для подписи кода.Протестировано под Xcode 8 GM и iOS 10 GM, работает!
источник