Как я могу получить iPhone, чтобы загрузить карточку контакта через URL перенаправления - PullRequest
1 голос
/ 07 декабря 2011

Я работаю над инструментом отслеживания, и мне интересно, если кто-нибудь знает, как заставить iPhone загрузить карточку контакта с помощью перенаправления URL-адреса.iPhone не будет загружать карточки контактов из Интернета.Кто-нибудь придумал способ обойти это?В других случаях с большинством мобильных телефонов я могу перенаправить их на vcard или подобный файл, и, используя правильные заголовки http, получить телефон для загрузки.iPhone не позволяет загружать vcard, так как можно получить vcard на iPhone через веб-браузер?

Ответы [ 2 ]

2 голосов
/ 09 июля 2012

Я только что опубликовал альтернативное решение в своем блоге, в котором описано, как прикрепить файл контакта в виде вложения к файлу календаря, который обрабатывается мобильным сафари

http://mobicontact.info/iphone/download-contact-from-web-page/

ВозможноЗдесь есть кое-что, с чем вы можете работать.Специально не решает вопрос о перенаправлении, но позволяет пользователю открывать контакт сразу после прохождения через приложение календаря.

В блоге представлено полное решение, включая исходный код и изображения всего процесса, и поэтомунамного легче читать, чем то, что я могу поместить здесь в Переполнение стека, и я пытался предотвратить дублирование между многими такими форумами.Главное, на что следует обратить внимание, это то, что Apple использует:

ATTACH;VALUE=BINARY;ENCODING=BASE64;FMTTYPE=text/directory;
X-APPLE-FILENAME=iPhone Contact.vcf:
QkVHSU46VkNBUkQNClZFUlNJT046M…etc… [base64 encoded VCARD]

для встроенной VCARD в файлах VCALENDAR.Создайте файл VCALENDAR, а затем закодируйте в нем base64 свою VCARD - фрагмент кода ниже (подробности в моем блоге)

<?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 голос
/ 03 января 2012

Вы можете попробовать перенаправить на сайт .tel.

Например, мой QR-код перенаправляет iPhone на http://edent.tel/

Или, если вы не хотите покупать .tel, вы можете создать простой веб-сайт, который содержит нужный номер телефона со ссылкой «нажмите для вызова».

<a href=”tel:123456798″>Call me on 123456789</a>
...