Partager entre un iOS extension et contenant de l'application avec le trousseau de clés?
Je comprends, je peux partager des données entre mon action de vulgarisation et de son contenant de l'application par l'activation de l'app groupes et à l'aide de NSUserDefaults (voir Le partage de données entre un iOS 8 part de l'extension et de l'application principale).
Cependant, les données que je suis le stockage est sensible, j'ai donc espéré utiliser le trousseau de clés. Sorte que l'utilisateur puisse entrer des informations de compte dans le contenant de l'application, puis de la part de l'extension de lire que les données pour effectuer le but le partage d'action.
Personne ne sait si cela est possible? Ma première fissure à elle suggère que l'extension et le contenant de l'application ont séparé de porte-clés (de l'enregistrement des données avec une clé dans le contenant de l'application renvoie la valeur null lorsque l'on tente de renvoyer des données de cette clé dans l'extension).
Merci!
P. S. à l'Aide de boîtes pour le Trousseau d'accès, mais j'ai pu fossé si c'est trop beaucoup d'une abstraction pour le faire fonctionner. https://github.com/granoff/Lockbox
Vous devez vous connecter pour publier un commentaire.
À faire le Trousseau de clés partagées dans Xcode 8.
1) Dans votre Application cible dans les Capacités de trouver et activer "Trousseau de Partage", ajouter un Trousseau de clé de Groupe (un domaine inversé chaîne de style comme com.myappdomain.myappname)
2) Faire exactement la même chose pour l'extension de la cible. Assurez-vous que le Trousseau de clés du Groupe est le même pour les deux - l'application et l'extension.
Ajouter et récupérer des données à partir de porte-clés dans votre façon habituelle, n ° spécial les changements nécessaires dans le code. Par exemple, voici comment j'ai mis des données en porte-clés dans l'application principale (un peu à l'ancienne, mais encore les œuvres de Swift 3):
Et ensuite le récupérer dans l'extension:
Noter que vous aurez besoin de passer "login" et "domaine" au fil de l'extension afin d'identifier l'enregistrement correct. Ceci peut être fait via NSUserDefaults. Voir cette réponse sur la façon de le faire.
Cela peut être fait. C'est une combinaison de la création d'un cadre pour faire le Trousseau d'accès, et en tournant sur "Activer le Trousseau de Partage" de la section "Capacités". Ce lien m'a dit que j'avais besoin de savoir: http://swiftandpainless.com/ios8-share-extension-with-a-shared-keychain/
L'aide de la norme Objective-C KeychainItemWrapper classe et avec une entrée de #import "KeychainItemWrapper.h" dans la transition de l'en-tête:
Sur la Montre extension latérale (Swift):
En Objective-C, watchkit extension:
N'oubliez pas d'activer les "Trousseau de Partage" sous les "Capacités" pour l'application de téléphone et de regarder kit d'extension pour la même trousseau groupe: "le groupe.com.yourcompany.appid"
Utilisation KeychainItemWrapper Classe à partir du lien suivant et passer votre identificateur de groupe comme accessgroup.
https://developer.apple.com/library/ios/samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_m.html