Partage livré actifs entre l'application et l'extension
Ma Photo de Partage des projets d'extension d'utiliser la même conception de l'actif (pour la navigation et pour l'ajout de timbres autocollants " pour la photo).
Comme expliqué dans l'Application Sandbox Guide de Conception, de groupes de bac à sable apps
qui ont besoin de partager des fichiers et d'autres informations peuvent demander un conteneur
annuaire dans le cadre de leurs droits. Ces répertoires sont stockés
dans ~/Bibliothèque/Conteneurs/. https://developer.apple.com/documentation/foundation/nsfilemanager/1412643-containerurlforsecurityapplicati
Actuellement, les actifs sont regroupés dans ou téléchargés et ajoutés à la Documents
dossier. Si je veux utiliser les actifs de Partage de Photo d'extension, ne serait-il judicieux de mettre le tout dans le ~/Library/Group Containers/
et le conteneur d'application et l'extension d'obtenir les actifs à partir de là?
OriginalL'auteur daidai | 2014-08-06
Vous devez vous connecter pour publier un commentaire.
Concernant le partage des données:
Si vous voulez partager des fichiers entre votre iOS8 d'extension et de votre Contenant de l'app, vous voulez graver des fichiers sur un conteneur partagé ou de l'utilisation partagée de l'utilisateur par défaut.
De iOS8 d'Apple actuel de la documentation:
Vous souhaitez créer une Application de Groupe, et d'ajouter votre contenant de l'application et de ses extensions à ce groupe. C'est assez simple, à l'aide de Xcode 6, voici comment le faire dans xcode:
Dans l'app nom du groupe, à l'entrée d'une constante comme:
Cela crée un conteneur partagé pour votre contenant de l'application et de l'extension, ce qui permet:
Partager NSUserDefaults:
Partager un répertoire sur le système de fichiers:
MODIFIER
Cela permettra d'imprimer tous le chemin de combinaisons, nous avons:
MODIFIER - et Swift:
Partager NSUserDefaults:
Partager un répertoire sur le système de fichiers:
J'espère que cela vous aide à vous 🙂
Ressources:
Apple iOS8.0 Développement D'Extensions Guide - https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW1
IOS8 d'Apple.0 NSFileManager Classe De Référence - https://developer.apple.com/documentation/foundation/nsfilemanager/1412643-containerurlforsecurityapplicati
par 'sanctionné' voulez-vous dire que apple a rejeté vos applications en raison de l'utilisation de cette approche ?
Désolé probablement un mauvais choix de mot, j'ai voulu dire, c'est l'approche que Apple dit d'utiliser dans leur documentation.
merci - je suis plus intéressé / inquiet sur les éléments dans le
Documents
dossier. Au lieu de simplement ajouter téléchargé PEI contenu de laDocuments
dossier, puis-je l'ajouter à laGroup Containers
dossier?Ne enregistrement des fichiers dans l'Application répertoire du groupe en sécurité? Tous les fichiers restent à jamais, comme l'enregistrement des fichiers dans
.UserDomainMask
OriginalL'auteur nurxyz
J'ai besoin de partager des ressources groupés entre l'application et l'extension. Au début, je pensais que je pouvais copier dans le groupe lors du premier lancement, mais que faire si l'utilisateur appelle l'extension et de ne jamais lance l'application?
Comme mxcl notes, vous pouvez inclure les actifs dans les deux cibles, mais qui permettra d'élargir la taille de votre final soumis binaire.
J'ai confirmé mettant actifs dans un cadre qui travaille dans Xcode 6.1 (il peut avoir travaillé avant, mais je suis juste en train de l'essayer maintenant):
Vous pouvez avoir autonome vos images dans un cadre ou d'un actif catalogue. Les deux fonctionneront.
Dans le cadre, il suffit de définir une classe avec des méthodes d'accès qui retour
UIImage
objets. Quelque chose comme ceci (Objective-C):Ou Swift:
Noter que depuis le code ci-dessus est à l'intérieur de le cadre, mais qui sera exécuté dans "l'espace de l'application", vous devez spécifier le bundle.
Ensuite, votre application ou de votre extension peut tout simplement un lien dans le cadre, et de les appeler
[AssetService frameworkImageNamed:@"myimage"]
ouAssetService.frameworkImageNamed("myimage")
.Mise en garde: malgré le retour d'une option
UIImage?
le code devient très en colère si il ne peut pas trouver l'image nommé et va se planter. Mais si c'est votre propre cadre de référence, vous devez savoir ce qui est dans là et les attraper ce genre de bug.N'utilisant App Groupes d'aide ? Ou est-ce une solution vraiment mal (je vais essayer avec la version de build maintenant à confirmer).
J'ai utilisé l'app groupes, et une copie de bundle pour l'application conteneur de groupe lors du premier lancement. Cela signifie que l'application doit être lancé avant l'extension.
OriginalL'auteur gregheo
voici les étapes pour résoudre votre problème:
aller à xcode ouvrir votre application qui contient l'application de l'extension de la fonctionnalité
aller à la cible dans votre projet xcode et sélectionnez votre application nom de l'extension de
aller à des phases de construction
élargir la copie ressources de module, puis cliquez sur bouton "+" et ajouter la
des actifs d'image dossier dans le finder.
OriginalL'auteur loganathan
Sonne comme vous voulez utiliser un cadre à la place. Votre cadre sera principalement ressources, plutôt que de code, cependant:
https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPFrameworks/Frameworks.html#//apple_ref/doc/uid/10000183i
Steve, j'ai lu que vous ne pouvez pas ajouter des actifs à un Cadre - est-ce vrai? Si vous le pouvez, comment faites-vous?
Vous devriez créer votre propre Cadre de référence, puis "importer" dans l'autre projet. Ainsi, lorsque vous voulez ajouter plus de fichiers, vous venez de mettre à jour le cadre.
J'ai essayé et ça ne fonctionne pas pour
xcassets
.L'ai eu à travailler avec .xcassets et âgé de plaine images dans le cadre de la cible. Découvrez ma réponse à cette question.
OriginalL'auteur Steve Tauber