Actualicé mi Xcode 8 a beta 2 hoy y estoy tratando de compartir datos entre la aplicación y la extensión Today. Me enfrento a esta advertencia de registro:
2016-07-08 18: 00: 24.732472 ProjetctX [941: 42801] [User Defaults] No se pudieron leer los valores en CFPrefsPlistSource <0x1700f1280> (Dominio: group.xpto, Usuario: kCFPreferencesAnyUser, ByHost: Sí, Contenedor: (nulo)) : El uso de kCFPreferencesAnyUser con un contenedor solo está permitido para los contenedores del sistema, separándose de cfprefsd
¿Alguien puede ayudarme?
ios
xcode
ios10
ios-app-group
Klevison
fuente
fuente
Respuestas:
Esta es en realidad una advertencia falsa que se introdujo en iOS 10 y macOS 10.12:
El consejo de anteponer su ID de equipo silenciará la advertencia, pero también creará una nueva configuración predeterminada de usuario vacía. Esto resultará en que cualquier dato almacenado previamente sea ilegible.
Por el momento, la solución es simplemente ignorarlo.
Además, el miembro del personal de Apple CFM en los foros :
fuente
A continuación, le mostramos cómo usar los valores predeterminados de usuario con grupos de aplicaciones para pasar datos entre su aplicación principal y su extensión:
En su aplicación principal, seleccione su proyecto en el Navegador de proyectos.
Seleccione el objetivo de su aplicación principal y elija la pestaña Capacidades.
Mueva el interruptor de Grupos de aplicaciones a ON. Esto se comunicará con el Portal para desarrolladores para generar un conjunto de derechos.
Crea un nuevo contenedor. Según Apple, su ID de contenedor debe comenzar con "grupo", por lo que un nombre como "group.io.intrepid.myapp" es perfecto.
Seleccione el destino de su extensión y repita el proceso de habilitación de Grupos de aplicaciones. No cree un nuevo grupo de aplicaciones, simplemente seleccione el grupo que acaba de crear en el destino de la aplicación principal.
Cuando lea o escriba UserDefaults en su aplicación o en su extensión, no acceda
UserDefaults.standard
. En su lugar utiliceUserDefaults(suiteName: "group.io.intrepid.myapp")
. Nota: El nombre de la suite es el nombre de su contenedor de grupo de aplicaciones creado en el paso 4.¡Asegúrese de habilitar el grupo y usar la misma identificación de grupo para la sección de capacidad de la aplicación y la extensión!
El crédito va a http://blog.intrepid.io/ios-app-extensions
fuente
También tuve el mismo problema con mi aplicación macOS.
Resuelto por: ¡ Reinicia el dispositivo!
https://stackoverflow.com/a/39876271
fuente
El SuiteName (sufijo) no debe ser el ID del paquete principal.
fuente
Cambie el nombre de su grupo en los derechos de Xcode de:
group.com.mycompany.myapp
A
group.MYTEAMID.com.mycompany.myapp
ps: puede encontrar su MYTEAMID en la membresía de developer.apple.com
fuente
La solución para mí fue no usar el mismo identificador para el identificador de paquete de la aplicación y la parte después de "grupo".
Digamos que la identificación del paquete de aplicaciones es "com.app.id", luego la identificación del grupo como "group.com.app.id" está causando problemas. Después de cambiarlo a "group.com.app.id.something", se detiene.
fuente
Compile con Xcode 8.1 Beta y verá la misma advertencia, pero también obtendrá el valor.
fuente
Me enfrento a este mismo problema cuando intento usar initWithSuiteName. Parece que esto es un error de Apple. La única solución / solución alternativa que encontré es restablecer todas las configuraciones del dispositivo. Vaya a Configuración -> General -> Restablecer -> Restablecer todas las configuraciones.
Esto no borra ningún contenido en el iPhone, solo borra todas las configuraciones. Después de restablecer la configuración, todo funcionó bien. Déjame saber si también te ayuda.
fuente
Si sufre este problema cuando intenta guardar datos en la aplicación de extensión usando
userDefault
, tal vez haya escrito este código:[[NSUserDefaults standardUserDefaults] initWithSuiteName:@"group.xxx.com"];
Este código se restablece por defecto
userDefault
.En realidad, el código correcto es:
[[NSUserDefaults alloc] initWithSuiteName:@"group.xxx.com"];
http://www.jianshu.com/p/e782104c3bc3
fuente
Cambiar de
[[NSUserDefaults alloc] initWithSuiteName:@"group.com.xxx.xxx"];
a
[[NSUserDefaults alloc] initWithSuiteName:@"nnnnnnnnnn.group.com.xxx.xxx"];
¿Dónde
nnnnnnnnn
está tu número de equipo, el que usas para firmar tu código?Probado bajo Xcode 8 GM y iOS 10 GM, ¡y funcionó!
fuente