Comment ajouter un contact au carnet d'adresses de l'iPhone à partir d'une Page web?

dans le monde Mac de bureau, si je devais cliquer sur un lien dans une page Web qui renvoie à un fichier VCF, ce fichier serait ouvert dans l'application Carnet d'adresses. Dans le monde de l'iPhone, cependant, faire cela se traduit dans le message "Download failed. Safari ne peut pas télécharger ce fichier" étant affiché. Donc, ma question Est, est - il réellement possible d'ajouter un contact au carnet d'adresses de votre iPhone à partir d'une page web?

j'ai à la fois le fichier VCF original et une version microformatée de hCard les données disponibles pour moi, la solution ne doit pas être liée à télécharger le fichier original - je suis capable de retraiter les données si nécessaire. La seule exigence est d'ajouter le contact au carnet d'adresses de l'iPhone à partir d'une page Web vue depuis Mobile Safari.

Alors, des idées?

24
demandé sur NeilCrosby 2009-11-21 02:32:03

4 réponses

[UPDATED-Sep 2013-iOS7 now supports direct download of VCARDs from we page and import into native contact application so you only need the solution below while iOS6 and below still do not support it - that may change in future now that Apple have accepted the feature ]

[mise à JOUR: JAN 2013 - maintenant ont ajouté l'utilisateur de l'agent sniffing et combinés en un seul téléchargement.fichier php qui détecte iOS, Safari Mobile, scénarios UiWebView pour empêcher " Farme charge interrompue" les erreurs et fournit la .fichier vcf à tous bnut les appareils d'Apple qui se de la .VCF intégré dans le .ics.]

voir la solution complète mise à jour

ce qui suit est une description complète d'une méthode alternative pour télécharger des contacts à partir d'une page web vers un iPhone via un Safari Mobile. L'idée de base est de joindre les informations de contact requises sous forme de fichier dans un événement de calendrier qui est géré par mobile safari. Le fichier de contact lui-même est base64 encodé dans le le dossier de calendrier à la volée en utilisant un script PHP simple. Alors lisez la suite...

Basic layout of embedded VCARD in VCALENDAR file

vous voulez juste le code source? Téléchargez-le ici [iphone-contact-download-demo] pour une application web HTML5 entièrement fonctionnelle que vous êtes libre de copier et reproduire ou aller à http://iphone.mobicontact.info for a working demo. La démo utilise le HTML5 cache manifest qui télécharge le contenu sur votre iphone ou HTML5 supportant le navigateur pour une utilisation hors ligne. Merci google pour plus de détails sur "Applications Web hors ligne" si vous voulez en savoir plus.

embarqué VCARD dans VCALENDAR pour le téléchargement iPhone Vous avez peut-être lu qu'il n'est pas possible de télécharger des fichiers de contact (vCard format data as .VCF file) directement sur votre iPhone à partir d'une page Web en utilisant Mobile Safari. Le navigateur ne reconnaît pas le .VCF extension et type mime (text / x-vcard) comme quelque chose qu'il devrait gérer. Comme un côté, Android et la plupart des autres appareils mobiles devraient être en mesure de traiter des fichiers VCARD assez facilement, la norme elle-même est aussi vieux que les collines!

vous avez peut-être aussi lu qu'il est possible d'obtenir quelque chose de réalisable en demandant aux utilisateurs l'adresse e-mail et ensuite leur envoyer le fichier de contact ou en créant un lien vers une entrée Google Map et en extraire les informations de contact (Google Map entry nécessite des semaines pour atteindre au Royaume-Uni).

bien qu'il s'agisse de deux solutions viables, elles ne sont pas ce que j'appellerais conviviales et j'ai essayé, sans succès, pour obtenir un de mes clients d'accepter l'un d'eux pour leur téléchargement de contact sur une application web mobile.

maintenant à ce point je devrais également mentionner que vous pouvez télécharger des applications tierces qui ajoutent le soutien pour VCARD (.vcf) - comme QRAFTER et VCARD GETTER à la fois de Kerem Erkan's excellent QR reader et son blog sur le sujet et iPad solution, et HIPSCAN vCard importateur. Mais en supposant que vos lecteurs ont ces applications installées est un pas de trop à mon avis alors j'ai cherché pour une solution alternative au courriel, à google maps et aux applications tierces.

avant de continuer, il y a de nombreux liens qui décrivent le problème plus en détail:

le débordement de la pile a plusieurs fils sur le sujet Forcer le téléchargement vCard (thesheep.co.Royaume-Uni) La solution de courrier électronique et blog associé du train de Code ici vCard options pour télécharger Il existe également une solution possible en utilisant Google Maps ici. Et c'est également couvert par cet article de Dataplex. Jonas Schmid parle de servir les types de fichiers correctement. MacRumours thread

puis j'ai pensé, iPhone ne prend en charge les fichiers vCalendar téléchargés à partir d'une page web à partir de IOS5. Les fichiers VCALENDAR ont généralement un .ics extension et sont traités par mobile safari apporter une fenêtre où le fichier peut être ouvert et enregistré au calendrier. Je trouve incroyable que Apple et Mobile Safari prennent en charge les fichiers VCAL mais pas les fichiers VCARD, mais c'est exactement comme ça. Et si je pouvais joindre un fichier VCARD à un dossier VCALENDAR?

le premier obstacle est d'obtenir une pièce jointe sur un événement du calendrier...

J'ai D'abord essayé d'ajouter une pièce jointe à un rendez-vous Calendrier Outlook dans Windows qui, bien que possible, ne s'est pas téléchargé correctement lorsqu'il était lié à partir d'une page Web et n'a certainement pas donné le résultat que j'étais après. Donc, j'ai décidé d'essayer D'utiliser le logiciel Apple car, après tout, nous essayons de télécharger sur un iPhone. En utilisant le calendrier D'application par défaut D'Apple "iCal" présente un problème fondamental - vous ne pouvez pas ajouter des pièces jointes à un rendez-vous événement/Calendrier! J'ai donc cherché sur Google "ajouter des pièces jointes à des événements de calendrier dans OSX" ou similaire et trouvé cet excellent article qui m'a pointé dans la bonne direction.

ajout de pièces jointes aux rendez-vous du calendrier dans OSX.

donc quelques minutes plus tard et avec une copie de BusyCal installée, j'ai pu créer un événement et y attacher un fichier VCARD (précédemment sauvegardé / exporté à partir de mes contacts in OSX). Cette étape est seulement nécessaire pour comprendre le format du fichier créé lorsqu'une pièce jointe est ajoutée à un élément du calendrier - vous n'avez pas besoin d'installer BusyCal pour mettre en œuvre la solution décrite ci-dessous, mais je l'inclus pour référence afin que vous puissiez voir comment la VCARD est intégrée dans le VCALENDAR/VEVENT (.ics) fichier.

Les étapes que j'ai utilisés étaient sur un Apple iMac OSX Lion:

exportez un contact à partir de vos Contacts/carnet D'adresses pour créer un fichier VCARD (.vcf) - vous peut éditer ce fichier avec un éditeur de texte pour supprimer tous les éléments supplémentaires tels que UID et PROD-ID si vous le souhaitez.BEGIN:VCARD Version: 3.0 N: Contact; iPhone;;; FN: contact iPhone Courriel; type=INTERNET;type=travail;type=pref:iphone@mobicontact.info TEL;type=CELLULE;type=une VOIX;type=pref:012-345-6789 END:VCARD Créez un nouveau calendrier - appelez - le comme vous voulez, j'ai utilisé "vcal" - dans la zone "sur mon Mac" de sorte que lorsque vous exportez ce calendrier pour générer le .fichier ics, tout ce que vous obtenez est l'événement unique avec la carte jointe plutôt que de tous les événements que vous pourriez avoir si vous utilisez un calendrier existant. Créez un nouvel événement - appelez - le comme vous voulez-et donnez-lui une date et une heure arbitraires. Attachez le fichier VCARD de (1) à ce nouvel événement - Voir screenshot.BusyCal on iMac allows attachements to VCALENDAR appointments Enregistrer l'événement dans le calendrier. Dans le menu principal de BusyCal, exportez le calendrier vers an .fichier ics sur votre disque local-téléchargez le fichier zip ici -- > Événement du calendrier Apple avec fichier contact joint. Vous pouvez maintenant utiliser votre éditeur de texte favori pour examinez comment Apple stocke les pièces jointes dans les événements de calendrier et le résultat est l'utilisation de: ATTACH;valeur=binaire;encodage=BASE64;FMTTYPE=texte / répertoire; X-APPLE-FILENAME=iPhone Contact.vcf: QkVHSU46VkNBUkQNClZFUlNJT046M...etc... [base64 encoded VCARD] J'ai donc retiré toutes les choses supplémentaires dont je n'avais pas besoin (essais et erreurs ici) jusqu'à ce que j'ai eu le minimum absolu qui était encore reconnu par l'iPhone comme un événement de calendrier valide avec pièce jointe. La raison pour faire ceci est de faire le fichier PHP qui crée le calendrier sur la page Web finale aussi facile que possible - voici le vcal-minimal de ce que je l'ai réduit à.

donc tout ce qui précède, comme je l'ai dit, n'est pas nécessaire pour mettre en œuvre la solution de téléchargement de contact - je voulais juste vous montrer comment je suis arrivé à comprendre comment Apple attache fichiers en utilisant la ligne de contact X-APPLE-nom de fichier. Et bien sûr, comment ils encodent les données VCARD en utilisant l'encodage base64. Donc maintenant nous avons toutes les informations dont nous avons besoin pour créer Vévents à la volée et attacher VCARDs à ceux qui peuvent être téléchargés directement sur un iPhone via Safari Mobile.

1)Télécharger le fichier de contacts (.vcf) vous voulez être téléchargé - vous aurez besoin de ce fichier de sorte que vous pouvez soit le télécharger directement vers les non-iphones ou base64 Encoder pour l'iPhone.

2)Créer un lien vers un fichier PHP qui générera l'Événement du calendrier à la volée tel que: Télécharger contact iPhone peut-être dans une application mobile HTML5 comme ci-dessous: Simple link to the PHP file to download the contact within VCALENDAR

3)Créer ou télécharger le vcal.php avec le code ici iphonecontact-code source. Ce fichier PHP applique le type d'en-tête/contenu correct pour le fichier calendar à télécharger alors vous avez le choix soit d'obtenir le contenu du fichier calendar directement " iphonecontact.ics" comme le fait le "vcal-de-fichier.php" ou de générer le calendrier à la volée comme indiqué dans "vcal.php". Ce dernier est ma méthode préférée parce que vous obtenez un événement Calendrier horodaté montrant l'heure et la date du téléchargement.

4)c'est ça! Vous êtes tous ensemble - maintenant, accédez à la page web sur votre iphone et cliquez sur le lien pour exécuter "vcal.php". Votre navigateur devrait maintenant afficher l'iphonecontact.ics fichier et vous demander de l'ouvrir dans l'application phones Calendar Calendar appointment downloaded from web page

5)sélectionnez "Ouvrir"..."et vous serez présenté avec le calendrier rendez-vous et le fichier de contact ci-joint. Calendar event with attached contact file

6)notez comment j'ai placé le titre de l'Événement du calendrier à quelque chose d'utile pour dire à l'utilisateur ce qu'il doit faire avec le fichier de contact intégré (vous pouvez voir la ligne dans vcal.php qui définit le champ de résumé de l'événement). Alors maintenant, cliquez sur le joint le fichier de contacts... Opened contact file

7) puis "Créer un nouveau Contact" et vous y êtes presque... Contact SAVED!!!

sauvez le contact et maudissez sous votre souffle les cerceaux Qu'Apple vous a fait traverser!

maintenant il y a quelques points que je voudrais mentionner ici basé sur mes expériences en utilisant cette technique sur le web HTML5 applications:

Utilisation du Manifeste de cache - j'ai eu un comportement inattendu / des problèmes avec le fichier calendar (iphonecontact.ics) si elle avait été mise en cache - Je n'ai tout simplement pas pu la faire fonctionner alors je l'exclus du manifeste ce qui signifie qu'elle est toujours téléchargée - code source est inclus dans ce fichier zip iphonecontact-code source.

j'ai ajouté un certain agent utilisateur reniflant pour détecter dans le " vcal.php" ou peu importe comment vous l'appelez (télécharger.php dans le dernier exemple en ligne) fichier PHP si servir le fichier VCALENDAR à un iPhone et le fichier VCARD lui-même à tous les autres navigateurs.

soyez également prudent, si vous regardez à travers une application UiWebView, alors je redirigerai l'utilisateur vers une page qui dit ouvrir avec un Safari Mobile (comme suggéré par quelqu'un sur mon blog) sinon vous obtenez l'erreur redoutée "Frame Load Interrupted".

je pense que c'est ce sujet - donc pour résumer:

Mobile safari ne supporte pas la VCARD (.vcf) les fichiers directement, mais ne supporte pas VCALENDAR (.ics) des fichiers.

  • les meilleures solutions actuelles sont d'envoyer un e-mail à la personne-ressource en demandant l'adresse e-mail de l'utilisateur ou d'intégrer la personne-ressource dans un lien google map ou de télécharger une application qui gère VCARDS.
  • Apple supporte les pièces jointes aux fichiers de calendrier mais pas facilement, donc une fois que nous savons comment faire, nous pouvons le faire en PHP.
  • intégration d'une VCARD dans un fichier VCALENDAR pour permettre à un utilisateur de sauvegarder un contact à son carnet d'adresses avec juste un un ou deux clics supplémentaires.

j'espère que vous aimez cette solution, il est aussi bon que je pense que nous allons nous en sortir jusqu'à ce que Apple se relâcher et de permettre au Mobile de Safari pour accepter les fichiers VCARD.

Jusqu'à la prochaine fois...

16
répondu Steve Grove 2013-09-19 11:20:22

bien que légèrement en dehors du cadre de mes exigences initiales, j'ai trouvé une solution au problème avec lequel je peux travailler.

Comme il s'avère, si vous recevez un e-mail avec une carte de visite en tant que pièce jointe, alors vous êtes en mesure d'ouvrir cette pièce jointe et l'ajouter à votre carnet d'adresses. Donc, si au lieu d'offrir un lien de téléchargement vcard aux utilisateurs iPhone vous leur fournissez un moyen d'être envoyé la vcard par e-mail à la place, alors ils sont en mesure d'ajouter la carte à leur adresse livre.

une solution un peu détournée, mais à peu près ce que je peux trouver de mieux alors Qu'Apple ne vous permet pas de le faire de façon native. C'est certainement une meilleure solution que de ne rien faire du tout.

j'ai fini par écrire un billet de blog à ce sujet: ajouter une vCard à votre carnet d'adresses iPhone à partir d'une page web

9
répondu NeilCrosby 2011-03-29 11:35:39

pour les googleurs, à partir de ce post, dans iOS 7 (beta 6) le fichier peut être ouvert directement dans l'application contacts et enregistré.

enter image description here

4
répondu xdumaine 2013-08-28 16:50:13

selon la bibliothèque de référence ajouter contact au carnet d'adresses de l'iPhone n'est pas possible.. Les schémas disponibles sont: mail, téléphone, texte, carte, youtube et liens iTunes.

Iphone Schéma d'URL de Référence

1
répondu zZzZ 2009-11-21 00:45:28