Comment puis-je associer des types de fichiers avec une application iPhone?
Sur le sujet de l'association de votre application iPhone avec les types de fichiers.
Dans cette instructif question, j'ai appris que les applications qui pourraient être associés avec une URL personnalisée de protocoles.
Qui a été près d'un an et depuis, Apple a introduit le Document de Soutien", qui va plus loin et permet aux applications de s'associer avec des types de fichiers. Il y a beaucoup de discussions dans le la documentation sur la façon de configurer votre application pour lancer d'autres applications quand il rencontre un type de fichier inconnu. Cela signifie que l'association ne fonctionne pas hors de la boîte pour n'importe quelle application, comme le protocole URL enregistrement n'.
Ce qui m'amène à la question suivante: ai-système des applications comme Safari ou Mail en œuvre de ce système pour le choix des applications associées, ou seront-ils ne font rien, comme avant?
Vous devez vous connecter pour publier un commentaire.
Type de fichier de la manipulation est de nouveau avec l'iPhone OS 3.2, et est différent de celui déjà existant personnalisé schémas d'URL. Vous pouvez enregistrer votre application pour gérer des types de documents particuliers, et toute application qui utilise un contrôleur de document peut confier le traitement de ces documents à votre propre application.
Par exemple, ma demande Les molécules (dont le code source est disponible) gère la .apb et .pdb.gz types de fichiers, si reçu par e-mail ou dans une autre application prise en charge.
Pour vous inscrire soutien, vous aurez besoin d'avoir quelque chose comme ce qui suit dans votre Info.plist:
Deux images qui seront utilisées comme des icônes pour les types pris en charge dans le Mail et d'autres applications permettant de visualiser des documents. Le
LSItemContentTypes
clé qui vous permet de fournir un tableau de Type Uniforme Identificateurs (Ivu) que votre application peut ouvrir. Pour une liste définie par le système, les infections urinaires, voir Apple Type Uniforme Identificateurs De Référence. Plus de détails sur les infections urinaires peuvent être trouvés dans les Apple Type Uniforme Identifiants De Présentation. Ces guides de résider dans le Mac developer center, parce que cette capacité a été porté, en face du Mac.L'une des infections urinaires utilisé dans l'exemple ci-dessus a été définie par le système, mais l'autre était spécifique à une application UTI. L'application spécifique de l'UTI devra être exporté afin que d'autres applications sur le système peut être mis au courant de cela. Pour ce faire, vous ajoutez un article à votre Info.plist comme suit:
Cet exemple en particulier, les exportations de la
com.sunsetlakesoftware.molecules.pdb
UTI avec le .apb extension de fichier, correspondant au type MIMEchemical/x-pdb
.Avec ce lieu, votre application sera en mesure de gérer les documents attachés aux e-mails ou d'autres applications sur le système. Dans Mail, vous pouvez appuyez et maintenez pour afficher une liste des applications qui peuvent ouvrir un attachement particulier.
Lorsque la pièce jointe est ouverte, votre demande sera lancé et vous aurez besoin pour gérer le traitement de ce fichier dans votre
-application:didFinishLaunchingWithOptions:
délégué d'application de la méthode. Il semble que les fichiers chargés de cette manière à partir de la Messagerie sont copiés dans votre demande les Documents du répertoire dans un sous-répertoire correspondant à ce que la boîte e-mail, ils arrivèrent dans. Vous pouvez obtenir l'URL de ce fichier dans l'application délégué méthode utilisant le code suivant:Noter que c'est la même approche que nous avons utilisée pour le traitement personnalisé schémas d'URL. Vous pouvez séparer les Url de fichier à partir d'autres personnes en utilisant le code suivant:
-application:didFinishLaunchingWithOptions:
dans la délégué d'application est appelée uniquement si votre application n'a pas été backgrounded quand il est ouvert pour traiter un dossier.- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
aussi sur iOS 4+Targets
→Build Settings
→Info.plist File
afin de déterminer quels sont les fichiers à modifier.En plus de Brad excellente réponse, j'ai trouvé que (sur iOS 4.2.1 au moins) lors de l'ouverture de fichiers personnalisés à partir de l'application e-Mail, votre application n'est pas déclenché ou de la notification si la pièce jointe a été ouvert avant. Le "ouvrir avec..." popup s'affiche, mais juste ne fait rien.
Cela semble être fixé par la (re)déplacer le fichier à partir de la Boîte de réception répertoire. Une approche sécuritaire semble être à la fois de (re)déplacer le fichier est ouvert (dans
-(BOOL)application:openURL:sourceApplication:annotation:
) ainsi que d'aller à travers les Documents/Boîte de réception répertoire, suppression de tous les éléments, par exemple dansapplicationDidBecomeActive:
. La dernière fourre-tout peuvent être nécessaires pour obtenir l'application dans un état propre à nouveau, dans le cas d'une importation précédent provoque un bug ou est interrompu.-(BOOL)application:openURL:sourceApplication:annotation:
est toujours appelé, même pour les pièces jointes qui ont été déjà ouvert. Chaque fois la pièce jointe est ouverte, un certain nombre est suffixé au nom du fichier et est incrémenté à être unique -- test.texte, test-1.txt, test-2.txt, etc.GROS AVERTISSEMENT: UN seul cent pour CENT sûr que votre poste n'est pas déjà lié à certains type mime.
Nous avons utilisé l'extension '.icz " pour nos fichiers personnalisés pour, au fond, jamais, et Safari juste de ne jamais vous laisser ouvrir eux en disant: "Safari ne peut pas ouvrir ce fichier." peu importe ce que nous avons fait ou essayé avec l'UT trucs ci-dessus.
Finalement j'ai réalisé qu'il y a quelques UT* C fonctions que vous pouvez utiliser pour explorer diverses choses, et tout .icz donne la bonne réponse (notre application):
En application n'a charger au top, il suffit de faire ceci...
et de mettre pause après cette ligne et voir ce que l'UTI et ur sont, dans notre cas, c'était notre identifiant que nous avons voulu), et le bundle url (ur) a été pointant vers notre app du dossier.
Mais le MIME type Dropbox donne-nous de retour pour notre lien, que vous pouvez vérifier en faisant par exemple
Le Content-Type est ce que nous voulons. Dropbox dit que c'est un texte/une entrée de calendrier. Grand. Mais dans mon cas, j'ai DÉJÀ ESSAYÉ de METTRE du texte/calendrier dans mon application types mime, et cela ne fonctionne toujours pas. Au lieu de cela, lorsque j'essaie d'obtenir de l'UTI et bundle url pour le texte/calendrier mimetype,
Je vois "com.apple.ical.ics", comme l'UTI et ".../MobileCoreTypes.bundle/" comme le faisceau d'URL. Pas de notre application, mais Apple. J'ai donc essayer de mettre des com.apple.ical.ics dans le LSItemContentTypes à côté de la mienne, et en UTConformsTo à l'exportation, mais pas y aller.
Donc en gros, si Apple pense qu'ils veulent à un certain point, la poignée d'une certaine forme de type de fichier (qui peut être créé 10 ans après votre application est, vous l'esprit), vous devrez changer l'extension de cause, ils vont tout simplement pas vous permettre de gérer le type de fichier.