Extension iOS 8 : Document Provider
Sel
Membre
Bonjour,
Je me penche un peu sur les extensions et leurs possibilités sous iOS 8.
Document provider a particulièrement attiré mon attention. Il permet à d'autres applications d'importer ou ouvrir des fichiers, les télécharger à partir de votre serveur si nécessaire & cie. Les applications peuvent également exporter ou déplacer leurs documents dans le "conteneur partagé".
Pourrait-il permettre de partager une base de données entre 2 applications par exemple ?
J'ai du mal à trouver de la documentation (mise à part la documention Apple) sur Document Provider si vous trouvez, je suis intéressé. Tutoriels ou autre.
Merci
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
En première approximation si la base de données est un document SQLite, cela devrait fonctionner en toute transparence.
Si la base de données est composée de plusieurs fichiers, il risque de se poser le problème de la garantie de synchronisation entre tous ces fichiers.
Ca reste à confirmer car j'ai pas fait de tests encore sur des extensions Documents Provider et la doc est un peu loin, mais si c'est le cas, et donc que le document ouvert par A est une copie du document de B, ne t'attends donc pas à ce que A puisse ajouter des entrées dans ta base SQL que tu aurais "partagé" et que B puisse voire lesdites entrée rajoutées par A... car dans ce cas ça serait une copie de la base SQLite que tu aurais et non un accès direct (du point de vue sécurité en tout cas ça me semblerait bien plus logique " et bien plus rassurant pour éviter les injections " donc j'imagine qu'Apple a plutôt implémenté ça comme ça).
Et même si jamais ô grand jamais Apple avait pas fait une copie du fichier dans la InBox de l'appli A, mais avait directement donné l'accès à l'appli A pour aller farfouiller dans la sandbox de l'appli B (ça me paraà®trait gros quand même), faudrait prendre soin d'utiliser un NSFileCoordinator (bon sauf si tu fais du CoreData et que tu utilises un NSPersistentStoreCoordinator qui gère déjà les mécanismes d'accès concurrents pour toi) pour gérer les accès concurrents à ton fichier par les 2 process.
Sinon si tes 2 applications A et B sont des applis à toi et que tu veux partager des fichiers entre elles, faut plutôt utiliser les AppGroups (et du coup avoir une Sandbox commune à toutes tes apps qui sont dans le mm AppGroup)
En gros, d'après mes souvenirs, le document provider sert à faire Dropbox et iCloud Drive.
Si tu es l'auteur des deux apps, le meilleur moyen de partager des données est via les app groups.
Je vous remercie pour vos réponses (désolé pour ma réponse tardive...)
Je laisse de côté Document Provider mais si vous avez plus d'informations, je reste intéressé.
Justement, je suis dans le cas où j'ai deux applications dont je suis l'auteur. J'aimerais pourvoir partager une base de données entre elles deux. Un App Group comme "com.sd.shareapps" peut me permettre de partager une sandbox commune.
Pour le moment, j'ai une application iOS, nommée "A", développée en Swift et j'ai mis en oe“uvre le partage des données entre mon Action Extension iOS 8 et mon containing app via les App Groups et un framework dynamique.
Par contre, une fois, l'application, nommée "B", ajoutée à l'App Groups, je ne vois pas comment m'y prendre.
Comment mettre en place CoreDate dans l'application "B" afin de pouvoir de nouveau manipuler des entités etc. ?
La partie ore Data stack de mon AppDelegate de l'application A et idem pour l'application B
J'ai ajouté un dans l'application B, les fichiers suivant :
KeepFive.xcdatamodeld
Contact.swift
ContactDetails.swift
Je me permets de revenir sur ce post car ma situation a évolué.
Suivant l'ordre dans lequel j'ouvre mes application ( A et B ), j'obtiens différentes erreurs.
Lorsque les Fetches sont en cause j'obtiens cette erreur :
Lorsque je tente de sauver une entité :
Ou :