Eu atualizei meu Xcode 8 para beta 2 hoje e estou tentando compartilhar dados entre o App e o Today Extension. Estou enfrentando este aviso de registro:
2016-07-08 18: 00: 24.732472 ProjetctX [941: 42801] [User Defaults] Falha ao ler os valores em CFPrefsPlistSource <0x1700f1280> (Domain: group.xpto, User: kCFPreferencesAnyUser, ByHost: Sim, Container: (null)) : Usar kCFPreferencesAnyUser com um contêiner só é permitido para Contêineres de sistema, desconectando-se de cfprefsd
Alguém pode me ajudar?
ios
xcode
ios10
ios-app-group
Klevison
fonte
fonte
Respostas:
Na verdade, este é um aviso falso que foi introduzido no iOS 10 e no macOS 10.12:
O conselho de prefixar seu ID de equipe silenciará o aviso, mas também criará novos padrões de usuário vazios. Isso fará com que todos os dados armazenados anteriormente sejam ilegíveis.
Por enquanto, a solução é simplesmente ignorá-lo.
Além disso, o membro da equipe da Apple CFM nos fóruns :
fonte
Veja como usar UserDefaults com grupos de aplicativos para passar dados entre seu aplicativo principal e sua extensão:
Em seu aplicativo principal, selecione seu projeto no Project Navigator.
Selecione o destino do seu aplicativo principal e escolha a guia Capacidades.
Alterne o botão Grupos de aplicativos para LIGADO. Isso se comunicará com o Portal do Desenvolvedor para gerar um conjunto de direitos.
Crie um novo contêiner. De acordo com a Apple, seu ID de contêiner deve começar com "grupo", então um nome como "group.io.intrepid.myapp" é perfeito.
Selecione seu destino de extensão e repita o processo de habilitação de grupos de aplicativos. Não crie um novo Grupo de aplicativos, simplesmente selecione o grupo que acabou de ser criado no destino do aplicativo principal.
Ao ler ou gravar UserDefaults em seu aplicativo ou extensão, não acesse
UserDefaults.standard
. Em vez disso, useUserDefaults(suiteName: "group.io.intrepid.myapp")
. Observação: o nome do conjunto é o nome do contêiner do grupo de aplicativos criado na etapa 4.Certifique-se de habilitar o grupo e usar o mesmo ID de grupo para a seção de extensão e capacidade do aplicativo!
O crédito vai para http://blog.intrepid.io/ios-app-extensions
fonte
Também tive o mesmo problema com meu aplicativo macOS.
Resolvido com: Reinicialize o dispositivo!
https://stackoverflow.com/a/39876271
fonte
O SuiteName (postfix) não deve ser o ID do Bundle principal.
fonte
Altere o nome do seu grupo em direitos Xcode de:
group.com.mycompany.myapp
Para
group.MYTEAMID.com.mycompany.myapp
ps: você pode encontrar seu MYTEAMID na associação em developer.apple.com
fonte
A solução para mim foi não usar o mesmo identificador para o identificador de pacote do aplicativo e a parte após "grupo".
Digamos que o id do pacote de aplicativos seja "com.app.id", então o id do grupo como "group.com.app.id" está causando problemas. Depois que eu mudo para "group.com.app.id.something", ele para.
fonte
Compile com o Xcode 8.1 Beta e você verá o mesmo aviso, mas também obterá o valor.
fonte
Estou enfrentando esse mesmo problema quando tento usar initWithSuiteName. Parece que este é um bug da Apple. A única solução / solução alternativa que encontrei é redefinir todas as configurações do dispositivo. Vá para Configurações -> Geral -> Redefinir -> Redefinir todas as configurações.
Isso não apaga nenhum conteúdo do iPhone, apenas apaga todas as configurações. Depois de redefinir a configuração, tudo funcionou bem. Deixe-me saber se isso te ajudar também.
fonte
se você sofre esse problema ao tentar salvar dados na extensão APP usando
userDefault
, talvez você tenha escrito este código:[[NSUserDefaults standardUserDefaults] initWithSuiteName:@"group.xxx.com"];
Este código é redefinido como padrão
userDefault
.Na verdade, o código correto é:
[[NSUserDefaults alloc] initWithSuiteName:@"group.xxx.com"];
http://www.jianshu.com/p/e782104c3bc3
fonte
Mudar de
[[NSUserDefaults alloc] initWithSuiteName:@"group.com.xxx.xxx"];
para
[[NSUserDefaults alloc] initWithSuiteName:@"nnnnnnnnnn.group.com.xxx.xxx"];
Onde
nnnnnnnnn
está o número da sua equipe, aquele que você usa para assinar o seu código.Testado em Xcode 8 GM e iOS 10 GM, e funcionou!
fonte