91 votes

Communication et conservation de données entre des applications avec des groupes d'applications

iOS 8 a révélé une nouvelle API hier concernant l'Application des Groupes. C'était une sorte de désordre avant de partager des données et la communication entre les applications et je crois que c'est précisément ce que l'App Groupes est destiné à corriger.

Dans mon application j'ai activé App Groupes et a ajouté un nouveau groupe, mais j'ai juste ne pouvez pas trouver toute la documentation sur la façon de l'utiliser. La Documentation et les références API seul état comment ajouter un groupe.

Alors, quel App Groupes est vraiment destiné à faire ? Est-il de la documentation, quelque part sur la façon de l'utiliser ?

86voto

Santa Claus Points 4237

Un autre avantage de l'App Groupes est la possibilité de partager une NSUserDefaults de la base de données. Cela fonctionne aussi pour l'Application des Extensions (les widgets du centre de notifications, de la coutume, claviers, etc).

Initialiser votre NSUserDefaults objet comme ça dans toutes les applications dans l'app groupe et ils vont partager la base de données:

Objective-C:

[[NSUserDefaults alloc] initWithSuiteName:@"<group identifier>"];

Swift:

NSUserDefaults(suiteName: "<group identifier>");

Gardez à l'esprit tout de l' [NSUserDefaults standardUserDefaults] de la base de données pour chaque application ne sera pas reporté dans la base de données.

La documentation donne un exemple correct (aussi bien de la Bêta 3).

Et n'oubliez pas de synchroniser la base de données:

[yourDefaults synchronize];

37voto

Wayne Hartman Points 8701

Les groupes d'Application, selon mon interprétation de la documentation existante, sont principalement destinés pour les extensions, plus spécifiquement, pour les widgets. Les Widgets sont de leur propre paquet d'application, qui cohabitent avec votre application. Depuis qu'ils sont d'une application distincte et ont donc leur propre bac à sable, vous aurez besoin d'utiliser l'App Groupes pour partager des fichiers.

Après quelques grep-tête require, je crois que j'ai trouvé l'API nécessaire, mais il a été fait dans le cadre de l'iOS 7.

NSFileManager a une méthode containerURLForSecurityApplicationGroupIdentifier: où vous pouvez passer de l'identifiant que vous avez créé lors de la mise sur l'App Groupes pour vos applications:

NSURL *containerURL = [[NSFileManager defaultManager] 
           containerURLForSecurityApplicationGroupIdentifier:@"group.com.company.app"];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X