28 votos

Los valores no siempre persistió en Aplicación de grupo entre el compañero de aplicación y extensión de la aplicación

De vez en cuando, pero no siempre (he tenido esta trabajando para un poco), la aplicación/extensión se pone en un estado en el que no se puede leer una marca en mi App de Grupo entre mi compañero app y mi extensión de la aplicación. No sé cómo se pone en este estado o por qué difieren los valores, pero es crítico para mi aplicación de estos siempre sincronizadas.

Aplicación complementaria viewDidLoad:

NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];

.....

[myAppSettings setBool:true forKey:@"myBool"];

[myAppSettings synchronize];

NSLog([myAppSettings boolForKey:@"myBool"] ? @"Companion app - bool TRUE" : @"Companion app - bool FALSE");

Extensión de la aplicación viewDidLoad

NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];

[myAppSettings synchronize];

NSLog([myAppSettings boolForKey:@"myBool"] ? @"App extension app - bool TRUE" : @"App extension - bool FALSE");

La salida de la consola

Companion app - bool TRUE
App extension - bool FALSE

Yo también sincronizar antes de que mi compañero de la aplicación entrará en el fondo. Tengo mi app de un grupo en el portal, etc.

¿Qué estoy haciendo mal?

EDITAR

Al parecer, otros que tienen este problema: https://devforums.apple.com/message/977151#977151

"Creo que esto es muy lento.

A veces, el intercambio de datos de obras, luego de un cambio y, de repente, el widget no puede ver los datos compartidos (tanto en el Simulador y dispositivo).

Molesto y espero que sea un poco más confiable en la próxima beta!"

EDIT 2 Se parece a otra persona que ha informado de este problema exacto así:

"También me di cuenta de lo mismo.Esto no sólo sucede a la NSUserDefaults, sino también todos los archivos en el contenedor de la carpeta. El extensión del teclado de repente se pierde de lectura/escritura pemission a la contenedor de carpeta después de usar el teclado por un tiempo."

EDICIÓN 3 Más pruebas: https://devforums.apple.com/message/1028078#1028078

Después de actualizar a la beta 3, me di cuenta de que a veces el teclado no se pudo abrir la base de datos porque no se ha podido acceder a la base de datos archivo. El teclado ha sido capaz de acceder al archivo antes.

enter image description hereenter image description here

EDICIÓN 4

Parece que esto podría ser debido a que el teclado pierde la RequestsOpenAccess bandera. Pero no puedo reproducirlo, y no hay manera para mí para saber con certeza.

EDICIÓN 5

Parece que los demás están informando de esto en el iOS8 GM build:

Este problema aún persiste para mí en el GM. Parece relacionado con un teclado accidente.. pero también parece que hay cierta disputa entre el teclado y el que contiene la aplicación en términos de quién crea la suite en lo que orden. Creo que es un problema de Apple final. Confía en mí, yo QUIERO que por mi culpa, pero me he pasado un sinnúmero de horas de ensayo y error. No importa lo que haga en el código y verificar con NSLog, que va a terminar en este estado con el tiempo. Esperando que alguien encuentra una píldora mágica. :S

Alguien ha solucionado esto?

2voto

Joey Puntos 2141

Al parecer, usted DEBE solicitar el acceso a la red para el acceso compartido NSUserDefaults (¿por qué, no sé...). Es declarado directamente en la Extensión de la Aplicación guía de Programación:

De forma predeterminada, un teclado no tiene acceso a la red y no se puede compartir un recipiente que contiene su aplicación. Para habilitar estas cosas, establezca el valor de la RequestsOpenAccess Booleano clave en la Info.plist archivo en SÍ.

Asegúrate de cambiar el RequestsOpenAccess campo YES. Usted encontrará en el teclado de la Información.plist > NSExtension > NSExtensionAttributes > RequestOpenAccess. A continuación, retire el teclado en la Configuración, eliminar la aplicación, ejecute de nuevo, y agregar el teclado de nuevo. Después de agregar, debe pulsar en el teclado el nombre y, a continuación, mueva el interruptor para Permitir el Acceso Completo. Se advertirá que usted (y sus usuarios) el teclado ahora puede transmitir datos a través de la red, incluyendo números de tarjetas de crédito de entrar... Pero bueno, ahora usted puede compartir los datos como se esperaba. Usted tendrá que instruir a los usuarios a seguir los mismos pasos que para el acceso a la subvención, a continuación, asegúreles que no está mal, de lo contrario, simplemente no va a funcionar y nunca vas a obtener la información que está almacenada en tu compartida preferencias.

Esta situación es muy lamentable y me gustaría pedirle que envíe un informe de error a Apple y la solicitud, no necesitan pedir para tener acceso completo a fin de compartir los datos entre la aplicación y la extensión.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X