2009-12-12 16 views
10

मैं एक क्यूआर कोड बनाने की कोशिश कर रहा हूं ताकि आईफोन उपयोगकर्ता मेरी पता पुस्तिका जानकारी आयात कर सकें।आईफोन: वीकार्ड को पहचानने के लिए सफारी कैसे प्राप्त करें?

  • मेरे वेब सर्वर
  • एक QR छवि है कि यह URL बनाने पर एक वीसीएफ (vCard) फ़ाइल डाल: मैं द्वारा यह कर रहा हूँ।

http://markharrison.net/mh-vcf-small.png

यह मेरा डेस्कटॉप ब्राउज़र पर काम कर रहा है (यह पता पुस्तिका एप्लिकेशन के साथ vCard खुलता है)।

आईफोन पर, क्यूआर रीडर सफलतापूर्वक वार्डका तक पहुंचने के लिए सफारी को बताता है, लेकिन फिर सफारी शिकायत करता है कि यह vcard को संभालने का तरीका नहीं जानता है। मैंने पुष्टि की है कि Content-Type: text/x-vcard भेजा जा रहा है।

तो, मेरे सवालों का:

  • मैं कैसे सफारी मेरी vcard पहचान करने के लिए मिलता है?
  • क्या सफारी पहचानने वाला कोई अन्य कार्ड प्रारूप है?
+0

आप इस देखा? http://stackoverflow.com/questions/1773876/how-to-add-a-contact-to-the-iphones-address-book-from-a-web-page – wkw

+0

मुझे जोड़ना चाहिए था, जबकि यह नहीं था अपनी समस्या का समाधान करें, कोई और ऐसा करने की कोशिश कर रहा था और पाया कि यह एक ईमेल संदेश से (स्पष्ट रूप से) काम करता है। तो ... हमम। – wkw

+0

VCARD .vcf फ़ाइलें अब आईओएस 7 में सीधे समर्थित हैं, इसलिए उस ओएस के लिए नीचे मेरा उत्तर आवश्यक नहीं है। अधिक जानकारी के लिए http://mobicontact.info/iphone/ios7-supports-vcard-vcf-download-at-last/ पर जाकर देखें। इसके अलावा अब आप अपनी वेबसाइट पर एक वीसीएआर फाइल होस्ट कर सकते हैं और क्यूआर कोड के माध्यम से एक लिंक भी प्रदान कर सकते हैं और इसे काम करना चाहिए। –

उत्तर

13

[अपडेट - सितम्बर 2013 - iOS7 अब देशी संपर्क में VCARD फ़ाइलों के सीधे डाउनलोड और आयात का समर्थन करता है आवेदन]

function isiOS7($user_agent=NULL) { 
    if(!isset($user_agent)) { 
     $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; 
    } 
    return (strpos($user_agent, 'OS 7') !== FALSE); 
} 

# Output file contents - simple version 
if(!isIphone() || isiOS7()) { 
    # Send correct headers  
    header("Content-type: text/x-vcard; 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.vcf\";"); 
    # Output file contents 
    echo file_get_contents("iphonecontact.vcf"); 
    exit(); 
} 

क्या इस प्रकार मोबाइल सफारी के माध्यम से एक iPhone करने के लिए एक वेब पेज से संपर्कों को डाउनलोड करना के लिए एक वैकल्पिक पद्धति का पूरा विवरण है। बुनियादी विचार है कि आवश्यक संपर्क जानकारी को एक कैलेंडर ईवेंट में फ़ाइल के रूप में संलग्न करना है जिसे मोबाइल सफारी द्वारा संभाला जाता है। संपर्क फ़ाइल स्वयं एक साधारण PHP स्क्रिप्ट का उपयोग कर फ्लाई पर कैलेंडर फ़ाइल में एन्कोडेड बेस 64 है। तो पर पढ़ें ...

Basic layout of embedded VCARD in VCALENDAR file

बस स्रोत कोड चाहते हैं? एक पूरी तरह से काम कर रहे एचटीएमएल 5 वेब ऐप के लिए इसे यहां [iphone-contact-download-demo] डाउनलोड करें, जिसे आप प्रतिलिपि बनाने और पुन: पेश करने के लिए स्वतंत्र हैं या http://iphone.mobicontact.info पर काम करने वाले डेमो के लिए जा सकते हैं। डेमो एचटीएमएल 5 कैश मैनिफेस्ट का उपयोग करता है जो ऑफ़लाइन होने पर आपके आईफोन या एचटीएमएल 5 सहायक ब्राउजर को सामग्री डाउनलोड करता है। यदि आप और जानना चाहते हैं तो कृपया "ऑफ़लाइन वेब ऐप्स" के बारे में अधिक जानकारी के लिए Google पर जाएं।

आईफोन डाउनलोड के लिए VCALENDAR में एम्बेडेड वीसीएडी आपने पढ़ा होगा कि संपर्क फ़ाइलों को डाउनलोड करना संभव नहीं है (वीसीएआर प्रारूप डेटा के रूप में।वीसीएफ फ़ाइल) मोबाइल सफारी का उपयोग कर एक वेब पेज से अपने आईफोन पर सीधे। ब्राउजर सिर्फ .vcf एक्सटेंशन और माइम प्रकार (टेक्स्ट/एक्स-वीकार्ड) को पहचानने के लिए कुछ नहीं पहचानता है। एक तरफ, एंड्रॉइड और अधिकांश अन्य मोबाइल डिवाइस आसानी से वीसीएआर फाइलों को संभालने में सक्षम होना चाहिए - मानक खुद ही पहाड़ियों के रूप में पुराना है!

आपने यह भी पढ़ा होगा कि उपयोगकर्ताओं के ईमेल पते का अनुरोध करके कुछ काम करने योग्य हासिल करना संभव है और फिर उन्हें संपर्क फ़ाइल ईमेल करें या Google मानचित्र प्रविष्टि के लिए एक लिंक बनाएं और उस से संपर्क जानकारी निकालें (Google मानचित्र प्रविष्टि ब्रिटेन में प्राप्त होने के लिए सप्ताहों की आवश्यकता है)।

जबकि ये दोनों व्यवहार्य समाधान हैं, वे नहीं हैं जो मैं उपयोगकर्ता के अनुकूल कहूंगा और मैंने कोशिश की, असफल रूप से, मेरे एक ग्राहक को मोबाइल वेब ऐप पर उनके संपर्क डाउनलोड के लिए स्वीकार करने के लिए।

अब इस बात मैंने देखा कि आपने किसी तीसरे पक्ष कि vCard (.vcf) फ़ाइलों के लिए समर्थन जोड़ने क्षुधा डाउनलोड कर सकते हैं उल्लेख करना चाहिए पर - विषय पर इस तरह के QRAFTER और VCARD मनुष्य के रूप में दोनों Kerem एर्कान उत्तम QR रीडर से और अपने ब्लॉग और आईपैड समाधान, और HIPSCAN vcard आयातक। लेकिन मानते हैं कि आपके पाठकों को ये ऐप्स इंस्टॉल हैं, मेरी राय में एक कदम बहुत दूर है इसलिए मैंने ईमेल, Google मानचित्र और तृतीय पक्ष ऐप्स के वैकल्पिक समाधान की खोज की।

ढेर अतिप्रवाह विषय जबरदस्ती vCard डाउनलोड पर कई सूत्र है (thesheep.co.uk) ईमेल समाधान और से जुड़े ब्लॉग:

इससे पहले कि मैं जारी रखने के लिए, वहाँ कई और अधिक विस्तार से समस्या का वर्णन लिंक हैं कोड डाउनलोड करने के लिए यहां vCard विकल्प कोड ट्रेन यहां Google मानचित्र का उपयोग करके एक संभावित समाधान भी है। और यह डेटाप्लेक्स से इस लेख द्वारा भी कवर किया गया है। जोनास श्मिट फ़ाइल प्रकारों को सही ढंग से सेवा देने के बारे में बात करता है। MacRumours थ्रेड

तब मुझे सोच रहा था, आईओएस 5 के रूप में वेबपृष्ठ से डाउनलोड की गई vcalendar फ़ाइलों का समर्थन करता है। VCALENDAR फ़ाइलों में आम तौर पर एक .ics एक्सटेंशन होता है और मोबाइल सफारी द्वारा एक विंडो लाया जाता है जहां फ़ाइल को खोला जा सकता है और कैलेंडर में सहेजा जा सकता है। मुझे यह अविश्वसनीय लगता है कि ऐप्पल और मोबाइल सफारी वीसीएएल फाइलों का समर्थन करते हैं लेकिन वीसीएडी फाइल नहीं, लेकिन यह वही है। तो क्या होगा यदि मैं एक VCALENDAR फ़ाइल में एक वीसीएआर फ़ाइल संलग्न कर सकता हूं?

प्रथम बाधा एक कैलेंडर ईवेंट पर एक लगाव हो रही है ...

शुरू में मैं Windows में एक Outlook कैलेंडर नियुक्ति जब वेबपृष्ठ से जुड़ा हुआ है और निश्चित रूप से 'नहीं था जो, जबकि संभव सही ढंग से डाउनलोड नहीं किया में एक अटैचमेंट जोड़ने की कोशिश की परिणाम के बाद मैं परिणाम मिला। इसलिए, मैंने ऐप्पल सॉफ्टवेयर का उपयोग करने का प्रयास करने का फैसला किया, आखिरकार, हम एक आईफोन पर डाउनलोड करने की कोशिश कर रहे हैं। ऐप्पल के डिफ़ॉल्ट कैलेंडर एप्लिकेशन का उपयोग करना "iCal" एक मौलिक समस्या प्रस्तुत करता है - आप किसी ईवेंट/कैलेंडर अपॉइंटमेंट में अनुलग्नक नहीं जोड़ सकते हैं! इसलिए मैंने "ओएसएक्स में कैलेंडर घटनाओं में अनुलग्नक जोड़ना" या इसी तरह से जाना और इस उत्कृष्ट लेख को पाया जो मुझे सही दिशा में इंगित करता था।

ओएसएक्स में कैलेंडर अपॉइंटमेंट में अनुलग्नक जोड़ना।

तो कुछ मिनट बाद और BusyCal की एक प्रति स्थापित करने के साथ, मैं एक ईवेंट बनाने में सक्षम था और इसे एक वीसीएआर फ़ाइल संलग्न करता था (पहले ओएसएक्स में मेरे संपर्कों से सहेजा/निर्यात किया गया था)। यह चरण केवल कैलेंडर आइटम में अनुलग्नक जोड़े जाने पर बनाई गई फ़ाइल के स्वरूप को समझना आवश्यक है - आपको नीचे वर्णित समाधान को लागू करने के लिए BusyCal स्थापित करने की आवश्यकता नहीं है, लेकिन मैं इसे संदर्भ के लिए शामिल करता हूं ताकि आप देख सकें कि VCARD VCALENDAR/VEVENT (.ics) फ़ाइल में एम्बेड किया गया है।

चरणों मैं एक एप्पल iMac चल OSX शेर पर थे इस्तेमाल किया:

निर्यात आपके संपर्क से कोई संपर्क/बुक पता किसी vCard फ़ाइल (.vcf) बनाने के लिए - आप के लिए एक पाठ संपादक के साथ इस फ़ाइल को संपादित कर सकते हैं यदि आप चाहें तो यूआईडी और प्रोडी-आईडी जैसे सभी अतिरिक्त सामानों को बाहर निकालें। 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 नया कैलेंडर बनाएं - इसे "कॉल करें" - "मेरे मैक" क्षेत्र में "vcal" का उपयोग करें ताकि जब आप इस कैलेंडर को .ics फ़ाइल जेनरेट करने के लिए निर्यात करते हैं, तो आपको केवल एक ही ईवेंट मिलता है यदि आप मौजूदा कैलेंडर का उपयोग करते हैं तो आपके पास होने वाली सभी घटनाओं के बजाय संलग्न कार्ड। एक नया कार्यक्रम बनाएं - इसे अपनी पसंद के कुछ भी कॉल करें - और इसे मनमाने ढंग से समय और दिनांक दें। इस नई घटना में (1) से VCARD फ़ाइल संलग्न करें - स्क्रीनशॉट देखें। BusyCal on iMac allows attachements to VCALENDAR appointments ईवेंट को कैलेंडर में सहेजें। BusyCal के मुख्य मेनू से, कैलेंडर को अपनी स्थानीय डिस्क पर एक .ics फ़ाइल में निर्यात करें - यहां ज़िप फ़ाइल डाउनलोड करें -> संलग्न कैलेंडर फ़ाइल के साथ ऐप्पल कैलेंडर ईवेंट। अब आप कैलेंडर ईवेंट में ऐप्पल स्टोर संलग्नक की जांच करने के लिए अपने पसंदीदा टेक्स्ट एडिटर का उपयोग कर सकते हैं और परिणाम इसका उपयोग कर रहा है: ATTACH; VALUE = बिनरी; एनकोडिंग = BASE64; FMTTYPE = टेक्स्ट/निर्देशिका; एक्स-ऐप्पल-फ़ाइल नाम = आईफोन संपर्क.वीसीएफ: क्यूकेवीएचएसयू 46 वीकेएनबीयूकेक्यूएनक्लजेएफयूएलएनजेटी 046 एम ... आदि ... [बेस 64 एन्कोडेड वीसीएआरडी] तो मैंने तब तक उन अतिरिक्त सामानों को तोड़ दिया जिन्हें मुझे आवश्यकता नहीं थी (परीक्षण और त्रुटि यहां तक) जब तक कि मेरे पास नहीं था पूर्ण न्यूनतम जो अभी भी आईफोन द्वारा संलग्नक के साथ वैध कैलेंडर ईवेंट के रूप में पहचाना गया था। ऐसा करने का कारण PHP फ़ाइल बनाना है जो अंतिम वेबपृष्ठ पर कैलेंडर ईवेंट को यथासंभव आसान बनाता है - यहां मैंने जो कुछ भी कम किया है, उसके बारे में vcal-minimal है।

तो उपरोक्त सभी उपरोक्त, जैसा कि मैंने कहा था, संपर्क डाउनलोड समाधान को लागू करने के लिए आवश्यक नहीं है - मैं बस आपको यह दिखाना चाहता था कि ऐप्पल एक्स-ऐप्पल-फ़ाइल नाम संपर्क लाइन का उपयोग करके फ़ाइलों को कैसे संलग्न करता है। और निश्चित रूप से, वे बेस 64 एन्कोडिंग का उपयोग कर वीसीएआर डेटा को कैसे एन्कोड करते हैं। तो अब हमारे पास मक्खी पर VEVENTs बनाने के लिए आवश्यक सभी जानकारी है और उन्हें VCARDs संलग्न करें जिन्हें मोबाइल सफारी के माध्यम से सीधे आईफोन में डाउनलोड किया जा सकता है।

1) संपर्क फ़ाइल (.vcf) अपलोड करें जिसे आप डाउनलोड करना चाहते हैं - आपको इस फ़ाइल की आवश्यकता होगी ताकि आप इसे सीधे आईफोन के लिए गैर-आईफ़ोन या बेस 64 एन्कोड पर डाउनलोड कर सकें।

2) कि मक्खी पर कैलेंडर इवेंट उत्पन्न होगा एक PHP फ़ाइल के लिए एक लिंक बनाएं, जैसे: डाउनलोड संपर्क iPhone शायद नीचे की तरह एक एचटीएमएल 5 मोबाइल एप्लिकेशन में: Simple link to the PHP file to download the contact within VCALENDAR

3) या अपलोड icalcontact-source-code कोड के साथ vcal.php। यह PHP फ़ाइल कैलेंडर फ़ाइल को डाउनलोड करने के लिए सही हेडर/सामग्री प्रकार लागू करती है, तो आपके पास कैलेंडर फ़ाइल सामग्री को सीधे "iphonecontact.ics" प्राप्त करने का विकल्प होता है जैसा कि "vcal-from-file.php" में किया जाता है या उत्पन्न करता है "vcal.php" में दिखाए गए अनुसार फ्लाई पर कैलेंडर। उत्तरार्द्ध मेरी पसंदीदा विधि है क्योंकि आपको डाउनलोड का समय और तिथि दिखाते हुए एक अच्छा टाइमस्टैम्प कैलेंडर कार्यक्रम मिलता है।

4) यही वह है! आप सब तैयार हैं - अब अपने आईफोन पर वेब पेज पर ब्राउज़ करें और "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) अगर इसे कैश किया गया था - मैं इसे काम करने के लिए नहीं मिला, इसलिए मैं इसे मैनिफेस्ट से बाहर कर देता हूं जिसका अर्थ है कि यह हमेशा डाउनलोड होता है - स्रोत कोड को इस ज़िप फ़ाइल iphonecontact-source-code में शामिल किया गया है।

आप निश्चित रूप से कुछ उपयोगकर्ता एजेंट को "vcal.php" PHP फ़ाइल में पहचानने के लिए स्नीफिंग कर सकते हैं चाहे एक आईफोन में VCALENDAR फ़ाइल और VCARD फ़ाइल को अन्य सभी ब्राउज़रों में सेवा प्रदान करें। यह Google की खोज के माध्यम से एक साधारण पर्याप्त जांच और अच्छी तरह से प्रलेखित है, इसलिए यदि आप ऐसा करते हैं तो कोड को पोस्ट करने के लिए आपको स्वतंत्र महसूस करने की आवश्यकता है, तो मैं इसे समझने के लिए इसे छोड़ दूंगा।

मुझे लगता है कि इसके बारे में - तो संक्षेप में प्रस्तुत करने के लिए:

मोबाइल सफारी VCARD का समर्थन नहीं करता (.vcf) फ़ाइलों को सीधे लेकिन समर्थन VCALENDAR (.ics) फ़ाइलों करता है।

  • वर्तमान सर्वोत्तम समाधान उपयोगकर्ता ईमेल पते का अनुरोध करके या Google मानचित्र लिंक में संपर्क एम्बेड करके संपर्क को ईमेल करना या वीसीएआरडीएस को संभालने वाला ऐप डाउनलोड करना है।
  • ऐप्पल कैलेंडर फ़ाइलों को अनुलग्नकों का समर्थन करता है लेकिन आसानी से नहीं तो एक बार जब हम जानते हैं कि यह कैसे किया जाता है तो हम इसे PHP में कर सकते हैं।
  • एक VCALENDAR फ़ाइल में एक वीसीएडी एम्बेड करें ताकि उपयोगकर्ता को एक अतिरिक्त क्लिक या दो के साथ अपनी पता पुस्तिका में संपर्क सहेजने की अनुमति मिल सके।

मुझे आशा है कि आपको यह समाधान पसंद आएगा - यह उतना अच्छा है जितना मुझे लगता है कि जब तक ऐप्पल रिलेन्ट नहीं हो जाता है और मोबाइल सफारी को वीसीएआर फाइलों को स्वीकार करने की अनुमति नहीं मिलती है।

अगली बार तक ...

9

मैंने अभी अपने ब्लॉग पर एक वैकल्पिक समाधान प्रकाशित किया है जो वर्णन करता है कि संपर्क फ़ाइल को कैलेंडर फ़ाइल में अटैचमेंट के रूप में कैसे संलग्न किया जाए, जिसे आईओएस 5 से मोबाइल सफारी द्वारा संभाला जाता है।

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

ब्लॉग स्रोत कोड और पूरी प्रक्रिया की छवियों और सहित पूर्ण समाधान से पता चलता इस तरह के एक बहुत क्या मैं यहाँ स्टैक ओवरफ़्लो पर डाल सकते हैं की तुलना में आसान को पढ़ने के लिए है के रूप में। ध्यान देने योग्य मुख्य बात यह है कि ऐप्पल का उपयोग:

ATTACH;VALUE=BINARY;ENCODING=BASE64;FMTTYPE=text/directory; 
X-APPLE-FILENAME=iPhone Contact.vcf: 
QkVHSU46VkNBUkQNClZFUlNJT046M…etc… [base64 encoded 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"; 
?>