web-dev-qa-db-ja.com

WebページからiPhoneのアドレス帳に連絡先を追加する方法

デスクトップのMacの世界では、VCFファイルにリンクされているWebページのリンクをクリックすると、このファイルはアドレス帳アプリケーションで開かれます。ただし、iPhoneの世界では、「ダウンロードに失敗しました。Safariはこのファイルをダウンロードできません」というメッセージが表示されます。だから、私の質問は、Webページから実際にiPhoneのアドレス帳に連絡先を追加することは可能ですか?

元のVCFファイルとhCardマイクロフォーマットバージョンのデータの両方を使用できるので、ソリューションを元のファイルのダウンロードに関連付ける必要はありません。必要に応じて、データを再処理できます。唯一の要件は、Mobile Safari内から表示されているWebページから連絡先をiPhoneのアドレス帳に追加することです。

それで、何かアイデアはありますか?

27
NeilCrosby

私の元の要件の範囲から少し外れながら、私が取り組むことができる問題の解決策を見つけました。

結局のところ、vcardが添付されたメールを受け取った場合は、この添付ファイルを開いてアドレス帳に追加できます。したがって、iPhoneユーザーにvcardダウンロードリンクを提供する代わりに、vcardを電子メールで送信する方法をユーザーに提供すると、アドレス帳にカードを追加できます。

やや回り道のある解決策ですが、Appleを使用してネイティブで行うことはできません。ただし、何もしないよりも優れた解決策です。

私はこれについてブログ投稿を書いてしまいました: WebページからiPhoneのアドレス帳にvCardを追加する

9
NeilCrosby

[更新-2013年9月-iOS7は、ページからVCARDを直接ダウンロードしてネイティブの連絡先アプリケーションにインポートできるようになりました。そのため、以下のソリューションのみが必要ですが、iOS6以下ではまだサポートされていません。Appleは機能を受け入れました]

[2013年1月更新-ユーザーエージェントスニッフィングを追加し、iOS、モバイルSafari、UiWebViewシナリオを検出する単一のdownload.phpファイルに結合して、「Farme Load Interrupted」エラーを防止し、すべてのbnutに.vcfファイルを提供するAppleです。]

更新された完全なソリューションを参照

以下は、モバイルサファリを介してWebページからiPhoneに連絡先をダウンロードする別の方法の完全な説明です。基本的なアイデアは、必要な連絡先情報をカレンダーイベントのファイルとして添付することです。これは、ISモバイルサファリによって処理されます。連絡先ファイル自体は、簡単なPHPスクリプト。読み続けてください...

Basic layout of embedded VCARD in VCALENDAR file

ソースコードが欲しいだけですか?完全に機能するHTML5 Webアプリについては、ここ[iphone-contact-download-demo]からダウンロードして、自由にコピーして複製するか、または http://iphone.mobicontact.info にアクセスしてデモを実行してください。 。デモはHTML5キャッシュマニフェストを使用して、オフラインで使用するためにコンテンツをiPhoneまたはHTML5対応ブラウザーにダウンロードします。詳細については、「オフラインWebアプリ」の詳細をググってください。

IPhoneダウンロード用のVCALENDARに埋め込まれたVCARDダウンロードMobile Safariを使用して、WebページからiPhoneに直接連絡先ファイル(VCARD形式のデータを.vcfファイルとして)をダウンロードすることができないことをお読みになったかもしれません。ブラウザは、.vcf拡張子とMIMEタイプ(text/x-vcard)を処理する必要があるものとして認識しません。余談ですが、Androidと他のほとんどのモバイルデバイスはVCARDファイルを十分に簡単に処理できるはずです-標準自体は丘と同じくらい古いです!

また、ISユーザーのメールアドレスをリクエストして連絡先ファイルをメールで送信することにより、実行可能な何かを達成することが可能であることを読んだかもしれませんOR Google Mapエントリを入力し、そこから連絡先情報を抽出します(Google Mapエントリは、英国で到達するのに数週間かかります)。

これらはどちらも実行可能なソリューションですが、ユーザーフレンドリーとは言えません。モバイルWebアプリで連絡先をダウンロードするために私のクライアントにどちらか一方を受け入れさせることはできませんでした。

ここで、この時点で、VCAF(.vcf)ファイルのサポートを追加するいくつかのサードパーティアプリ(QRAFTERやVCARD GETTERなど)を、Kerem Erkanの優れたQRリーダーと件名とiPadソリューションに関する彼のブログからダウンロードできることにも触れておきます。およびHIPSCAN vcardインポーター。しかし、読者がこれらのアプリをインストールしていると想定することは、私の考えでは一歩遠すぎるので、メール、Googleマップ、サードパーティアプリの代替ソリューションを探しました。

続行する前に、問題をより詳細に説明する多くのリンクがあります。

スタックオーバーフローは、件名にいくつかのスレッドがあります。vCardの強制ダウンロード(thesheep.co.uk)EMAILソリューションおよび関連するブログ(コードトレインはこちら)vCardのダウンロードオプションここには、Googleマップを使用した解決策もあります。これについては、Dataplexのこの記事でも取り上げています。 Jonas Schmidがファイルの種類を正しく提供することについて語っています。 MacRumoursスレッド

その後、iPhone 5は、IOS5の時点でWebページからダウンロードされたvcalendarファイルをサポートしています。 VCALENDARファイルには通常.ics拡張子が付いており、ファイルを開いてカレンダーに保存できるウィンドウを表示するモバイルサファリによって処理されます。 AppleとMobile SafariはVCALファイルをサポートしていますがVCARDファイルはサポートしていませんが、それはまさにそれです。VCARDファイルをVCALENDARファイルに添付できるとしたらどうでしょうか?

最初の障害は、カレンダーイベントの添付ファイルを取得することです...

最初に、WindowsのOutlook予定表の予定に添付ファイルを追加しようとしましたが、Webページからリンクされていると、正しくダウンロードできず、目的の結果が得られませんでした。したがって、私はAppleソフトウェアを使用してみることにしました。結局のところ、私たちはiPhoneにダウンロードしようとしているからです。Appleのデフォルトのカレンダーアプリケーション「iCal」を使用すると、1つの根本的な問題が発生します-追加できません。イベント/カレンダーの予定への添付ファイルなので、「OSXでカレンダーイベントに添付ファイルを追加する」などの検索を行ったところ、この優れた記事が正しい方向を示してくれました。

OSXでカレンダーの予定に添付ファイルを追加します。

したがって、数分後、BusyCalのコピーがインストールされた状態で、イベントを作成し、それにVCARDファイルを添付することができました(以前はOSXの連絡先から保存/エクスポートされていました)。この手順は、添付ファイルがカレンダーアイテムに追加されたときに作成されるファイルの形式を理解するためにのみ必要です-以下で説明するソリューションを実装するためにBusyCalをインストールする必要はありませんが、VCARDがどのように見えるかを確認できるように、参考のためにそれを含めますVCALENDAR/VEVENT(.ics)ファイルに埋め込まれています。

私が使用した手順は、Apple OSX Lionを実行しているiMacでした:

連絡先/アドレス帳から連絡先をエクスポートしてVCARDファイル(.vcf)を作成します-このファイルをテキストエディターで編集して、必要に応じてUIDやPROD-IDなどの余分なものをすべて削除できます。BEGIN:VCARD VERSION :3.0 N:連絡先; 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新しいカレンダーを作成-このカレンダーをエクスポートして.icsファイルを生成すると、すべてのイベントではなく、カードが接続された単一のイベントのみが得られるように、「On my Mac」領域で「vcal」を使用しました。既存のカレンダーを使用する場合に必要になることがあります。新しいイベントを作成し、好きな名前を付けて、任意の日時を指定します。 (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 ... etc ... [base64エンコードされたVCARD]それで、iPhoneでまだ認識されている絶対的な最小値が得られるまで、必要のないすべてのもの(ここでは試行錯誤)を取り除きました添付ファイル付きの有効なカレンダーイベントとして。これを行う理由は、最終的なWebページにカレンダーイベントを作成するPHPファイルをできるだけ簡単にするためです。ここに、vcal-minimalに減らしました。

したがって、前述のように、連絡先のダウンロードソリューションを実装する必要はありません。私はApple X-Apple-を使用してファイルを添付する方法を理解する方法を理解した方法をお見せしたかっただけです。 FILENAME連絡先ライン。もちろん、base64エンコーディングを使用してVCARDデータをエンコードする方法です。これで、VEVENTをオンザフライで作成し、モバイルSafariを介してiPhoneに直接ダウンロードできるVCARDを添付するために必要なすべての情報が揃いました。

1)ダウンロードする連絡先ファイル(.vcf)をアップロードします。このファイルは、iPhone以外に直接ダウンロードするか、iPhone用にbase64エンコードするために必要です。

2)PHPファイルへのリンクを作成します。これにより、次のようなカレンダーイベントがオンザフライで生成されます。 Simple link to the PHP file to download the contact within VCALENDAR

3)ここにコードiphonecontact-source-codeを付けてvcal.phpを作成またはアップロードします。このPHPファイルは、ダウンロードする予定表ファイルに正しいヘッダー/コンテンツタイプを適用します。その後、「vcal-」で行われるように、予定表ファイルのコンテンツを直接「iphonecontact.ics」として取得するかを選択できます。 from-file.php "または" vcal.php "に示されているようにオンザフライでカレンダーを生成します。ダウンロードの日時を示すタイムスタンプ付きの素敵なカレンダーイベントが表示されるため、後者の方法が推奨されます。

4)以上です!これで準備は完了です。iPhoneのWebページを参照し、リンクをクリックして「vcal.php」を実行します。これでブラウザにiphonecontact.icsファイルが表示され、電話のカレンダーアプリケーションで開くように求められます。 Calendar appointment downloaded from web page

5)[開く...]を選択すると、カレンダーの予定と添付された連絡先ファイルが表示されます。 Calendar event with attached contact file

6)カレンダーイベントのタイトルを、埋め込まれた連絡先ファイルをどうするかをユーザーに伝えるのに役立つ何かに設定する方法に注意してください(イベントのSUMMARYフィールドを設定するvcal.phpの行を確認できます)。添付された連絡先ファイルをクリックしてください... Opened contact file

7)それから「新しい連絡先を作成」して、あなたはほとんどそこにいます... Contact SAVED!!!

連絡先を保存し、フープで息をのむように呪いAppleジャンプさせた!

ここで、HTML5 Webアプリでこの手法を使用した経験に基づいて、ここで触れておきたい点がいくつかあります。

キャッシュマニフェストの使用-カレンダーファイル(iphonecontact.ics)がキャッシュされていた場合、予期しない動作/問題が発生しました-機能しないため、マニフェストから除外します。つまり、常にダウンロードされます。 -ソースコードは、このZipファイルiphonecontact-source-codeに含まれています。

「vcal.php」またはそれを呼び出すもの(最新のオンライン例ではdownload.php)を検出するためにユーザーエージェントスニッフィングを追加しましたPHPファイルVCALENDARファイルをiPhoneに提供するかどうかVCARDファイル自体を他のすべてのブラウザに送信します。

また、UiWebViewアプリケーションを介して表示した場合、ユーザーをモバイルサファリで開く(私のブログの誰かが提案したように)というページにリダイレクトします。そうしないと、恐ろしい「フレームロードの中断」エラーが発生します。

それはそれについてだと思います-要約すると:

モバイルサファリはVCARD(.vcf)ファイルを直接サポートしていませんが、VCALENDAR(.ics)ファイルをサポートしています。

  • 現在の最善の解決策は、ユーザーのメールアドレスORに連絡先をgoogleマップリンクに埋め込むことを要求して連絡先にメールを送信することですOR VCARDSを処理するアプリをダウンロードします。
  • Appleはカレンダーファイルへの添付ファイルをサポートしていますが、簡単にはできないので、これがどのように行われるかを知ったら、PHPでそれを行うことができます。
  • VCARDをVCALENDARファイルに埋め込むと、ユーザーは1、2回クリックするだけで連絡先をアドレス帳に保存できます。

このソリューションが気に入っていただければ幸いです。Apple relentになり、Mobile SafariがVCARDファイルを受け入れるようになるまでは、これで十分だと思います。

次回まで...

18
Steve Grove

Google社員の場合、この投稿の時点で、iOS 7(ベータ6)の場合、ファイルを連絡先アプリで直接開いて保存できます。

enter image description here

5
xdumaine

参照ライブラリによると、iPhoneのアドレス帳に連絡先を追加することはできません。利用可能なスキームは、メール、電話、テキスト、地図、youtube、iTunesリンクです。

iPhone URLスキームリファレンス

1
zZzZ