voz traductor traducir para mejor itranslate internet ingles gratis google español chrome apple app aplicaciones ios nsuserdefaults ios-app-extension watchkit ios-app-group

ios - traductor - ¿Por qué los grupos de aplicaciones no funcionan dentro de mi extensión WatchKit?



traductor para iphone gratis (3)

¿Intentaste leer la misma clave de la aplicación de iPhone?

Creo que el problema es que no activó el derecho de Grupo de aplicaciones en su extensión WatchKit.

  1. Seleccione su extensión WatchKit en la configuración de su proyecto.

  2. Seleccione la pestaña Capacidades en la extensión WatchKit y busque Grupos de aplicaciones y enciéndala.

  3. Seleccione el mismo identificador de grupo de aplicaciones que creó anteriormente (debería aparecer automáticamente y simplemente marcarlo).

He visto todas las otras publicaciones de SO acerca de compartir datos de NSUserDefaults entre aplicaciones de host y extensiones de aplicaciones, pero la mía todavía no funciona. Aquí está todo lo que he hecho:

  1. Active los Grupos de aplicaciones en la pestaña "Capacidades" de Xcode para la aplicación de extensión y host.
  2. Establezca el nombre del grupo en "group.com.mycompany.foo" y confirmó que la extensión y la aplicación del host se agregaron al grupo.
  3. Se confirmó que existe un archivo de derechos para ambos con la clave "com.apple.security.application-groups" establecida en el nombre de mi grupo de aplicaciones. (Para lo que vale la pena, también estoy usando las capacidades de llavero compartido entre la extensión y la aplicación host, y eso está funcionando, así que no creo que esto sea un problema con los derechos)
  4. Regenera todos los perfiles de aprovisionamiento. De hecho, incluso revocé todos mis certificados y volví a generar todos los perfiles nuevos después de configurar el grupo de aplicaciones.

Y después de todo eso, este código todavía no funciona:

// in the host app NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"]; [testDefaults setObject:@"TEST" forKey:@"foo"]; [testDefaults synchronize];

y entonces:

// in the extension NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"]; NSLog(@"%@", [testDefaults objectForKey:@"foo"]);

lo que resulta en:

(null)

Cuando busco en las preferencias de Xcode, observo estos íconos, ninguno de los cuales tiene el ícono "Grupo de aplicaciones":

Pero como dije antes, fui tan lejos como para limpiar mi llavero, certificados y perfiles de aprovisionamiento después de configurar el grupo de aplicaciones. Entonces, si este es el problema, ¿cómo agrego el derecho a los perfiles?

¿Qué me estoy perdiendo? Estoy sin ideas.

¿Ayuda?

EDITAR : Los grupos de acceso están trabajando en mi extensión de Today & Safari, pero no en la extensión de WatchKit. No tengo idea de por qué, y todas las configuraciones de construcción parecen estar configuradas de la misma manera.

EDIT 2 : para aquellos que insisten en que mis capacidades no están configuradas correctamente, aquí hay una captura de pantalla:


Aquí es lo que hizo el truco para mí. Al parecer, Xcode creó automáticamente un nuevo archivo de Entitlements para la nueva Extensión (probablemente después de que lo configuré desde "Capacidades" pero desafortunadamente el valor de la matriz faltaba ...

En la aplicación Derechos:

En los Derechos de extensión, el valor faltaba de la matriz:

También es importante asegurarse de que el grupo aparezca en la pestaña "Capacidad" para ambos objetivos (aplicación y Extensión) y que las 3 marcas de verificación estén en verde, ver ejemplo:

App Target

Objetivo de extensión


Tuve el problema similar. Lo que noté es que mi aplicación WatchKit Extension y WatchKit tenían identificadores de paquete iguales. Cambié la identificación del paquete de mi aplicación WatchKit. Además, no olvidé cambiar NSExtensionAttributes / WKAppBundleIdentifier en la lista de información de Extensión para que coincida con ese ID. Ahora todo funciona. ¡Espero que esto ayude!

En breve: ¡Los identificadores de paquetes de la aplicación y extensión WatchKit deberían ser diferentes!