如何将联系人添加到iPhone的地址簿?

问题描述:

在桌面Mac世界中,如果我点击链接到VCF文件的网页中的链接,该文件将在地址簿应用程序中打开。然而,在iPhone世界中,这样做会导致显示消息“下载失败。Safari无法下载此文件”。所以,我的问题是,是否可以从网页添加联系人到iPhone的地址簿?如何将联系人添加到iPhone的地址簿?

我有原始的VCF文件和hCard微格式版本的数据可供我使用,因此解决方案不必绑定到下载原始文件 - 我可以根据需要重新处理数据。唯一的要求是将联系人添加到从Mobile Safari内查看的网页的iPhone地址簿中。

那么,有什么想法?

虽然略微的我原来要求的范围之外,我已经找到了解决方案,我可以正常工作的问题。

事实证明,如果您收到附有vCard的电子邮件作为附件,则可以打开该附件并将其添加到您的地址簿中。因此,如果您不是向iPhone用户提供vcard下载链接,而是向他们提供一种通过电子邮件发送vcard的方式,那么他们可以将该卡添加到他们的地址簿中。

一个稍微迂回的解决方案,但是我能够提出最好的解决方案,而苹果公司不允许你在本地生产。当然,这是一个比没有做任何事情更好的解决方案。

我最后写一篇博客文章如下:Adding a vCard to your iPhone Address Book from a web page

+2

如果链接死亡会发生什么?那么这个答案不会对其他人有用。请在这里包括相关部分。 – 2012-07-09 21:22:58

+0

你介意发布PHP代码作为附件发送给VCARD吗? – donturner 2012-07-12 22:49:02

根据参考库添加联系人的iPhone的地址簿是不可能的。 可用的计划是:邮件,电话,文本,地图,youtube和iTunes链接。

Iphone URL Scheme Reference

[增订日 - 9月2013 - iOS7现在支持我们页面和进口电子名片到本地联系人应用程序直接下载,所以你只需要在下面,而iOS6的解决方案下面仍然不支持它 - 这可能会改变,现在,苹果已经接受了该功能]

[已更新2013年1月 - 现在已添加用户代理嗅探并组合成一个单一的download.php文件,它检测iOS, Mobile Safari,UiWe​​bView方案以防止“Farme Load Interrupted”错误,并将.vcf文件提供给所有在.ics中嵌入.vcf的Apple设备。]

See the updated complete solution

下面是下载从网页联系人通过移动Safari浏览器在iPhone的替代方法的完整描述。基本的想法是将所需的联系信息作为文件附加到由移动Safari浏览器处理的日历事件中。联系人文件本身是使用简单的PHP脚本在日历文件中进行base64编码的。因此,阅读...

Basic layout of embedded VCARD in VCALENDAR file

只是想的源代码?在此处下载它[iphone-contact-download-demo],您可以免费复制和复制完整正常工作的HTML5 Web应用程序,或转至http://iphone.mobicontact.info进行演示。该演示使用HTML5缓存清单,将内容下载到您的iPhone或支持HTML5的浏览器以供离线时使用。请谷歌了解更多关于“离线网络应用程序”的细节,如果你想知道更多。

用于iPhone的VCALENDAR中的嵌入式VCARD下载 您可能已经阅读过使用Mobile Safari从网页直接将联系人文件(VCARD格式数据作为.vcf文件)下载到您的iPhone上的可能性。浏览器无法识别.vcf扩展名和MIME类型(文本/ x-vcard)作为它应该处理的内容。另外,Android和大多数其他移动设备应该能够轻松处理VCARD文件 - 标准本身就像山丘一样古老!

您也许已经阅读过,可以通过请求用户的电子邮件地址,然后通过电子邮件向联系人文件发送电子邮件或创建指向Google Map条目的链接并从中提取联系人信息(Google Map条目需要数周才能在英国获得)。

虽然这些都是可行的解决方案,但它们并不是我称之为用户友好型的,我试图让我的客户接受他们中的任何一个,以便在移动网络应用程序上联系下载。

现在我应该提及您可以下载一些第三方应用程序,它们可以添加对VCARD(.vcf)文件的支持 - 例如QRer和QRer GETTER都来自Kerem Erkan出色的QR阅读器和他的关于该主题的博客和iPad解决方案以及HIPSCAN vcard导入器。但假设您的读者安装了这些应用程序,我认为这太过分了,所以我搜索了另一种电子邮件,谷歌地图和第三方应用程序的解决方案。

我继续之前,有许多环节描述更详细的问题:

堆栈溢出,关于这个问题的 强制电子名片下载线程数(thesheep.co.uk) 的电子邮件解决方案,并从相关博客此处的代码训练电子名片选项可供下载 此处还有一个使用Google地图的可能解决方案。 Dataplex的这篇文章也介绍了这一点。 Jonas Schmid谈到正确地提供文件类型。 MacRumours线程

然后我想到了,iPhone支持从iOS5以上的网页下载vcalendar文件。 VCALENDAR文件通常具有.ics扩展名,并通过移动Safari浏览器处理,打开一个窗口,可在其中打开文件并将其保存到日历中。我发现Apple和Mobile Safari支持VCAL文件但不支持VCARD文件是令人难以置信的,但事实就是如此。那么,如果我可以将VCARD文件附加到VCALENDAR文件?

第一个障碍是获得一个日历事件的附件...

起初我尝试添加附件在Windows Outlook日历约会,而这可能从一个网页链接,肯定没”时,没有正确下载吨产生我以后的结果。所以,我决定尝试使用Apple软件,因为毕竟我们正试图下载到iPhone上。使用Apple的默认日历应用程序“iCal”存在一个基本问题 - 您无法将附件添加到事件/日历约会中!所以我搜索了一下“向OSX中的日历事件添加附件”或类似内容,并发现了这篇出色的文章,指出了我的正确方向。

将附件添加到OSX中的日历约会中。

所以几分钟后,安装了BusyCal的一个副本后,我能够创建一个事件并附加一个VCARD文件(之前从OSX中的联系人保存/导出)。此步骤仅用于了解将附件添加到日历项目时创建的文件的格式 - 您不需要安装BusyCal来实现下面所述的解决方案,但是我将其包含在内以供参考,以便您可以看到VCARD嵌入在VCALENDAR/VEVENT(.ics)文件中。

的步骤我以前是在一台苹果电脑运行的是OSX狮子:

出口从通讯录中联系人/地址簿创建vCard文件(的.vcf) - 你可以用文本编辑器编辑这个文件删除所有额外的东西,如UID和PROD-ID,如果你喜欢的话。BEGIN:VCARD VERSION:3.0 N:Contact; iPhone ;;; FN:iPhone Contact EMAIL; type = INTERNET; type = WORK; type = pref:[email protected] TEL; type = CELL; type = VOICE; type = pref:012-345-6789 END:VCARD 创建一个新的日历 - 在“我的Mac”区域中使用“vcal” - 创建一个新日历,这样当您导出此日历以生成.ics文件时,您所获得的只是带有连接卡的单个事件而不是您使用现有日历时可能遇到的所有事件。 创建一个新事件 - 将其称为任何你喜欢的事物 - 并给它任意的时间和日期。 将(1)中的VCARD文件附加到此新事件中 - 请参见截图。 BusyCal on iMac allows attachements to VCALENDAR appointments 将活动保存到日历。 从BusyCal的主菜单中,将日历导出到本地磁盘上的.ics文件 - 在此处下载zip文件 - >附带联系人文件的Apple日历事件。 现在,您可以使用自己喜欢的文本编辑器来检查Apple如何在日历事件中存储附件,结果是使用:ATTACH; VALUE = BINARY; ENCODING = BASE64; FMTTYPE = text/directory; X-APPLE-FILENAME = iPhone Contact.vcf: QkVHSU46VkNBUkQNClZFUlNJT046M ...等等... [base64编码的VCARD] 所以我然后剥去了所有额外的东西,我不需要(这里试验和错误),直到我有iPhone仍然将其视为具有附件的有效日历活动的绝对最小值。这样做的原因是让PHP文件在最终的网页上尽可能简单地创建日历事件 - 这里是我简化它的vcal-minimal。

因此,正如我所说的,上述所有内容都不需要实现联系人下载解决方案 - 我只是想告诉您如何了解Apple如何使用X-APPLE-FILENAME联系线附加文件。当然,他们如何使用base64编码对VCARD数据进行编码。因此,现在我们拥有了所有需要的信息,以便即时创建VEVENT并将VCARD附加到它们,可以通过Mobile Safari直接下载到iPhone。

1)上传您要下载的联系人文件(.vcf) - 您需要这个文件,以便您可以将其直接下载到非iphones或base64编码为iPhone。

2)创建一个链接到一个PHP文件,将动态生成的日历事件,如: 下载跟iPhone也许在HTML5移动应用程序如下图所示: Simple link to the PHP file to download the contact within VCALENDAR

3)创建或上传vcal.php与代码在这里iphonecontact-source-code。该PHP文件为要下载的日历文件应用正确的标题/内容类型,然后您可以选择直接在“vcal-from-file.php”中获取日历文件内容“iphonecontact.ics”,或者生成在“vcal.php”中显示的日程表。后者是我的首选方法,因为您可以得到一个不错的时间戳日历事件,显示下载的时间和日期。

4)就是这样!你全部设置 - 现在浏览到你的iphone上的网页,点击链接执行“vcal.php”。您的浏览器现在应该显示iphonecontact。ics文件并要求您在电话中打开日历应用程序 Calendar appointment downloaded from web page

5)选择“在...中打开”,您将看到日历约会和附加的联系人文件。 Calendar event with attached contact file

6)注意我是如何设置的日历事件的标题的东西来告诉用户如何处理嵌入的联系人文件(你可以看到在vcal.php,设置摘要字段的行有用事件)。所以,现在单击附加联系人文件... Opened contact file

7)然后在“新建联系人”,你就要成功了...... Contact SAVED!!!

保存在你的呼吸接触和诅咒篮球苹果让你跳过!

现在有几个点,我想基于使用的HTML5网页应用这种技术我的经验在这里提到:

使用缓存清单 - 我有服务于日历一些意想不到的行为/问题文件(iphonecontact.ics) - 如果它已被缓存 - 我只是无法让它工作,所以我排除它从清单,这意味着它总是下载 - 源代码包含在此zip文件iphonecontact源代码。

我已经添加了一些用户代理嗅探来检测“vcal.php”或任何你称之为(download.php最新的在线例子)PHP文件是否将VCALENDAR文件提供给iPhone和VCARD文件本身到所有其他浏览器。

同样要小心,如果通过UiWebView应用程序查看,然后我将用户重定向到一个页面,指出用Mobile Safari打开(如我的博客上的人所建议的),否则会出现可怕的“Frame Load Interrupted”错误。

我认为这就是它 - 这样总结:

移动Safari浏览器不支持电子名片(的.vcf)文件直接但不支持VCALENDAR(的.ics)文件。

  • 目前最好的解决方案是通过请求用户的电子邮件地址向联系人发送电子邮件或嵌入在一个谷歌地图链接中的联络或下载,处理电子名片的应用程序。
  • Apple确实支持日历文件的附件,但不容易,所以一旦我们知道如何做到这一点,我们可以在PHP中完成。
  • 将VCARD嵌入到VCALENDAR文件中,允许用户只需额外点击一两次即可将联系人保存到他们的地址簿中。

我希望你喜欢这个解决方案 - 它和我认为的一样好,直到Apple放松并允许Mobile Safari接受VCARD文件。

直到下一次...

+0

当我删除你的其他答案时,我们仍然在那里。你必须做的不仅仅是发布一个链接到你的博客。否则当你改变URL或你的博客去世时会发生什么?我们失去了宝贵的信息 – 2012-07-09 21:23:37

,让Google,因为这个帖子,在iOS的7(测试版6)的文件可以直接打开成联系人应用程序和保存。

enter image description here