我正在研究跟踪工具,我想知道是否有人知道如何通过URL重定向让iPhone下载联系人卡片。 iPhone不会从网上下载联系人卡片。有没有人想出办法解决这个问题?在大多数手机的其他情况下,我可以将它们重定向到vcard或类似文件,并使用正确的http标头,让手机下载它。 iPhone不允许vcard下载,那么如何通过网络浏览器将vcard送到iPhone上?
答案 0 :(得分:2)
我刚刚在我的博客上发布了另一种解决方案,该解决方案描述了如何将联系人文件作为附件附加到由移动版Safari处理的日历文件
http://mobicontact.info/iphone/download-contact-from-web-page/
也许这里有一些你可以使用的东西。没有具体解决重定向问题,但它确实允许用户在浏览日历应用程序后直接打开联系人。
博客显示完整的解决方案,包括整个过程的源代码和图像,因此比我在Stack Overflow上可以放置的更容易阅读,我试图防止许多此类论坛之间的重复。需要注意的主要问题是Apple使用:
ATTACH;VALUE=BINARY;ENCODING=BASE64;FMTTYPE=text/directory;
X-APPLE-FILENAME=iPhone Contact.vcf:
QkVHSU46VkNBUkQNClZFUlNJT046M…etc… [base64 encoded VCARD]
用于VCALENDAR文件中的嵌入式VCARD。创建一个VCALENDAR文件,然后在其中对您的VCARD进行base64编码 - 下面的代码片段(我博客上的完整详细信息)
<?php
# Send correct headers
header("Content-type: text/x-vcalendar; charset=utf-8");
# Alternatively: application/octet-stream
# Depending on the desired browser behaviour
# Be sure to test thoroughly cross-browser
header("Content-Disposition: attachment; filename=\"iphonecontact.ics\";");
# Output file contents - simple version
#echo file_get_contents("iphonecontact.ics");
# Generate file contents - advanced version
# BEGIN:VCALENDAR
# VERSION:2.0
# BEGIN:VEVENT
# DTSTART;TZID=Europe/London:20120617T090000
# DTEND;TZID=Europe/London:20120617T100000
# SUMMARY:iPhone Contact
# DTSTAMP:20120617T080516Z
# ATTACH;VALUE=BINARY;ENCODING=BASE64;FMTTYPE=text/directory;
# X-APPLE-FILENAME=iphonecontact.vcf:
# QkVHSU46VkNBUkQNClZFUlNJT046My4wDQpOOkNvbnRhY3Q7aVBob25lOzs7DQpGTjppUGhvbm
# UgQ29udGFjdA0KRU1BSUw7VFlQRT1JTlRFUk5FVDtUWVBFPVdPUks6aXBob25lQHRoZXNpbGlj
# b25nbG9iZS5jb20NClRFTDtUWVBFPUNFTEw7VFlQRT1WT0lDRTtUWVBFPXByZWY6KzQ0MTIzND
# U2Nzg5MA0KRU5EOlZDQVJE
# END:VEVENT
# END:VCALENDAR
echo "BEGIN:VCALENDAR\n";
echo "VERSION:2.0\n";
echo "BEGIN:VEVENT\n";
echo "SUMMARY:Click attached contact below to save to your contacts\n";
$dtstart = date("Ymd")."T".date("Hi")."00";
echo "DTSTART;TZID=Europe/London:".$dtstart."\n";
$dtend = date("Ymd")."T".date("Hi")."01";
echo "DTEND;TZID=Europe/London:".$dtend."\n";
echo "DTSTAMP:".$dtstart."Z\n";
echo "ATTACH;VALUE=BINARY;ENCODING=BASE64;FMTTYPE=text/directory;\n";
echo " X-APPLE-FILENAME=iphonecontact.vcf:\n";
$vcard = file_get_contents("iphonecontact.vcf"); # read the file into memory
$b64vcard = base64_encode($vcard); # base64 encode it so that it can be used as an attachemnt to the "dummy" calendar appointment
$b64mline = chunk_split($b64vcard,74,"\n"); # chunk the single long line of b64 text in accordance with RFC2045 (and the exact line length determined from the original .ics file exported from Apple calendar
$b64final = preg_replace('/(.+)/', ' $1', $b64mline); # need to indent all the lines by 1 space for the iphone (yes really?!!)
echo $b64final; # output the correctly formatted encoded text
echo "END:VEVENT\n";
echo "END:VCALENDAR\n";
?>
答案 1 :(得分:1)
您可以尝试重定向到.tel网站。
例如,我的二维码将iPhone重定向到http://edent.tel/
或者,如果您不想购买.tel,您可以通过“点击通话”链接创建一个包含所需电话号码的简单网站。
<a href=”tel:123456798″>Call me on 123456789</a>