黄色の背景に電話があります。

Web 用のContact picker

Contact Picker APIを利用すると、ユーザーが連絡先リストから連絡先を簡単に共有できます。

公開日 更新日

翻訳先言語: English, Português, 한국어, 中文, Pусский

Contact Picker APIとは何ですか?

モバイルデバイス上のユーザーの連絡先へのアクセスは、従来から(ほぼ)iOS / Android アプリの機能となっています。これは、 Web 開発者から寄せられる最も一般的な機能リクエストの 1 つであり、多くの場合、 iOS/Android アプリを構築する主な理由です。

Android版のChrome 80で利用可能なContact Picker APIはユーザーの連絡先リストからエントリを選択し、選択したエントリの限定された詳細をWebサイトと共有できるようにするオンデマンドAPIです。これにより、ユーザーは必要なときに必要なものだけを共有でき、友人や家族と取りやすくなります。

例えば、Webベースの電子メールクライアントは、Contact Picker APIを使用して電子メールの受信者を選択できます。Voice-over-IPアプリは、どの電話番号に電話をかけるかを検索できます。また、ソーシャルネットワークを使用すると、ユーザーがどの友達がすでに参加しているか検出できます。

Caution

Chrome チームは、 ブラウザーがユーザーが選択したものだけを共有できるようになるためContact Picker API の設計と実装に力を入れました。以下のセキュリティとプライバシーセクションを参照してください。

現在のステータス

ステップ状態
1.説明者を作成します完了
2.仕様の初期ドラフトを作成します完了
3.フィードバックを収集し、設計を繰り返します完了
4.Origin trial完了
5.起動Chrome 80
Androidでのみ利用できます。

Contact Picker APIの使用

Contact Picker APIには、必要な連絡先情報のタイプを指定するoptionsパラメーターを指定したメソッド呼び出しが必要です。 2番目の方法は、基盤となるシステムが提供する情報を示します。

特徴の検出

Contact Picker API がサポートされているかどうかを確認するには、次のコマンドを使用します。

const supported = ('contacts' in navigator && 'ContactsManager' in window);

さらに、Androidでは、ContactPickerにはAndroid M またはそれ以降が必要です。

Contact Pickerを開きます

Contact Picker APIのエントリポイントはnavigator.contacts.select()です。呼び出されると、プロミスが返され、連絡先ピッカーが表示されます。これにより、ユーザーはサイトで共有する連絡先を選択できます。共有するものを選択して完了をクリックすると、ユーザーが選択した一連の連絡先でプロミスが解決されます。

select()呼び出すときは、最初のパラメータとして返されるプロパティの配列を指定する必要があります。指定できる値は、 'name''email''tel''address' または'icon'のいずれかです。また、複数の連絡先を 2 番目のパラメータとして選択できるかどうかを指定する必要があります。

const props = ['name', 'email', 'tel', 'address', 'icon'];
const opts = {multiple: true};

try {
const contacts = await navigator.contacts.select(props, opts);
handleResults(contacts);
} catch (ex) {
// Handle any errors here.
}
Caution

'address''icon'をサポートするにはChrome 84またはそれ以降が必要です。

Contacts picker APIは、セキュリティでトップレベル閲覧文脈からのみ呼び出すことができ、他の強力なAPIと同様に、ユーザーのジェスチャーが必要です。

利用可能なプロパティの検出

使用可能なプロパティを検出するには、navigator.contacts.getProperties()を呼び出します。この関数は、使用可能なプロパティを示す文字列の配列で解決するプロミスを返します。例: ['name', 'email', 'tel', 'address'] 。これらの値をselect()渡すことができます。

プロパティが常に使用可能であるとは限らず、新しいプロパティが追加されることに注意してください。将来的には、他のプラットフォームや連絡先ソースによって、共有されるプロパティが制限される可能性があります。

結果の処理

Contact Picker API は連絡先の配列を返し、各連絡先には要求されたプロパティの配列が含まれます。連絡先に要求されたプロパティのデータがない場合、またはユーザーが特定のプロパティの共有をオプトアウトすることを選択した場合、APIは空の配列を返します。 (ユーザーがプロパティを選択する方法については、ユーザーコントロールセクションで説明します。)

たとえば、サイトがnameemail 、およびtelをリクエストし、ユーザーがデータがある名前フィールドに単一の連絡先を選択し、2つの電話番号を提供しているが、電子メールアドレスがない場合、返される応答は次のようになります。

[{
"email": [],
"name": ["Queen O'Hearts"],
"tel": ["+1-206-555-1000", "+1-206-555-1111"]
}]
Caution

連絡先フィールドのラベルおよびその他のセマンティック情報はドロップされます。

セキュリティと権限

Chromeチームは、ユーザーコントロール、透明性、人間工学など、 強力なWebプラットフォーム機能へのアクセスの制御で定義された基本原則を使用して、 Contact Picker APIを設計し実装しました。それぞれ説明します。

ユーザーコントロール

ピッカー経由でユーザーの連絡先へアクセスします。または、セキュア上位レベル閲覧文脈でのみ、ユーザージェスチャを使用して呼び出すことができます。これにより、サイトがページ読み込み時にピッカーを表示できないようにしたり、文脈がないとピッカーをランダムに表示したりすることができなくなります。

スクリーンショットでは、ユーザーは共有するプロパティを選択できます。
ユーザーは、一部のプロパティを共有しないことを選択できます。このスクリーンショットでは、ユーザーは「電話番号」ボタンをオフにします。 サイトが電話番号を要求しても、サイトと共有されることはありません。

すべての連絡先を一括選択するオプションがないため、特定の Web サイトで共有する必要がある連絡先のみを選択することをお勧めします。ユーザーはピッカー上部のプロパティボタンを切り替えることで、サイトで共有するプロパティをコントロールすることもできます。

透明性

共有されている連絡先の詳細を明確にするために、ピッカーには常に連絡先の名前とアイコン、およびサイトが要求したプロパティが表示されます。例えば、 nameemail 、およびtelをリクエストした場合、3つのプロパティすべてがピッカーに表示されます。または、telのみを要求する場合、ピッカーは名前と電話番号のみを表示します。

すべてのプロパティを要求するサイトのピッカーのスクリーンショット。
ピッカー、nameemailtelをリクエストするサイト、 1 つの連絡先が選択されました。
電話番号のみを要求するサイトのピッカーのスクリーンショット。
ピッカー、telのみを要求するサイト、 1 つの連絡先が選択されました。
連絡先が長く押されたときのピッカーのスクリーンショット。
連絡先を長押しした結果

連絡先を長押しすると、その連絡先が選択されている場合に共有されるすべての情報が表示されます。(Cheshire Cat連絡先イメージを参照してください)。

権限の永続性なし

連絡先へのアクセスはオンデマンドであり、永続的ではありません。サイトがアクセスを要求するたびにnavigator.contacts.select()を呼び出す必要があります。また、ユーザーはサイトと共有する連絡先を個別に選択する必要があります。

フィードバック

Chrome チームは、 Contact Picker API の使用体験について知りたいと考えています。

実装に問題がありますか?

Chromeの実装にバグを見つけましたか?それとも、実装は仕様とは異なりますか?

  • https://new.crbug.comでバグを報告してください。できるだけ詳しくバグを再現するための簡単な手順を説明し、Blink>Contactsコンポーネントを設定してください。グリッチは、問題の再現をすばやく簡単に共有するのに最適です。

APIの使用を計画していますか?

Contact Picker APIを使用する予定がありますか?パブリックサポートは、Chrome チームが機能に優先順位を決めること、他のブラウザーベンダーがそのサポートの重要性を分かるように役に立ちます。

参考リンク

お礼

この機能を実装している Finnur Thorarinsson氏 と Rayan Kanso氏、また、恥ずかしいですが、私がデモのために盗んでリファクタリングしたコードを持つPeter Beverloo氏に感謝します。

追伸:Contact pickerの名前は、不思議の国のアリスのキャラクターです。

更新日 記事を改善する

We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.