2014-09-13 3 views
10

В приложении я могу выбрать в настройках, которые должны использоваться на трех языках. Если ничего не выбрано, язык iPhone будет обнаружен и выбран для английского, французского или немецкого языков. Если ни один из этих языков не является языком iPhone, установлен английский язык. Ручное изменение языка в настройках работает так, как должно. Теперь я добавил сегодняшнее расширение, которое работает почти хорошо, но мне нужно получить доступ к набору параметров, чтобы получить NSUserDefaults для языков (если вручную изменить). В обеих целях я активировал группы приложений сДоступ к settings.bundle from today-extension

group.com.companyname.appname 

и выбрал его.

В приложении я получаю язык с

NSString *manualLanguageSet = [[NSUserDefaults standardUserDefaults] valueForKey:SPRACHWAHL]; 

и в сегодня-расширение Я пытаюсь получить его:

NSString *manualLanguageSet = [[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] valueForKey:SPRACHWAHL]; 

Для NSLog(@"Settings-Sprache: %@", manualLanguageSet); при запуске сегодня-расширение результат (не имеет значения, если и какой язык выбран в настройках)

2014-09-13 16: 48: 36.331 HdB сегодня [3734: 284836] Настройки-Sprache: (null)

Что я могу сделать правильно или как получить доступ к настройкам (settings.bundle)?

+0

Вы нашли решение? –

+0

Не совсем.Чтобы иметь выбранный язык в расширении после изменения настроек, я должен запустить приложение, а затем изменения будут сохранены для расширения. – Christian

ответ

2

Я ищу его также. Единственный способ, которым я знаю, как это сделать, - это использовать SharedContainer. В вашем примере вы должны открыть

[[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] valueForKey:SPRACHWAHL];

в контейнере приложение, а затем скопировать значение языка из NSUserDefaults контейнера приложения, как это:

[[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] setObject:[NSUserDesaults standardUserDefaults] objectForKey:SPRACHWAHL] forKEY:@"Your Key in extension"]];

тогда вы сможете получить доступ к вашим общий контейнер в вашем расширении и получить эти значения.

Если у кого-то есть лучший способ сделать это, я был бы рад узнать, как хорошо.

2

Если создать пакет WatchKit предпочтения, он также содержит ключ

ApplicationGroupContainerIdentifier 

на корневом уровне словаря Root.plist сверток, в с значением является идентификатор группы (то, что вы предоставляете NSUserDefaults as имя_пакета).

Я нашел, что вы также можете использовать этот ключ в комплекте настроек iOS. Если добавлено, предпочтения перейдут в соответствующий контейнер.

Я проверил это, чтобы работать на iOS 8.3 через приложение iOS Settings, приложение iPhone и расширение WatchKit.

UPDATE: Apple, списки этот ключ, как поддерживается прошивкой 8.2, а затем в https://developer.apple.com/library/ios/documentation/PreferenceSettings/Conceptual/SettingsApplicationSchemaReference/Articles/RootContent.html

Смежные вопросы