Contact Picker API ช่วยให้ผู้ใช้แชร์รายชื่อติดต่อจากรายชื่อติดต่อของตนเองได้อย่างง่ายดาย
Contact Picker API คืออะไร
การเข้าถึงรายชื่อติดต่อของผู้ใช้บนอุปกรณ์เคลื่อนที่เป็นฟีเจอร์ของแอป iOS/Android มาตั้งแต่ (เกือบ) ยุคแรกๆ นี่เป็นคําขอฟีเจอร์ที่พบบ่อยที่สุดอย่างหนึ่งที่เราได้รับจากนักพัฒนาเว็บ และมักเป็นเหตุผลสําคัญที่นักพัฒนาแอปสร้างแอป iOS/Android
ข้อกำหนดของ Contact Picker API พร้อมใช้งานใน Chrome 80 บน Android M ขึ้นไป ซึ่งเป็น API แบบออนดีมานด์ที่ช่วยให้ผู้ใช้เลือกรายการจากรายชื่อติดต่อและแชร์รายละเอียดที่จํากัดของรายการที่เลือกกับเว็บไซต์ได้ ซึ่งช่วยให้ผู้ใช้แชร์เฉพาะสิ่งที่ต้องการเมื่อต้องการ และช่วยให้ผู้ใช้เข้าถึงและเชื่อมต่อกับเพื่อนและครอบครัวได้ง่ายขึ้น
เช่น โปรแกรมรับส่งอีเมลบนเว็บอาจใช้ Contact Picker API เพื่อเลือกผู้รับอีเมล แอป VoIP อาจค้นหาหมายเลขโทรศัพท์ที่จะโทร หรือโซเชียลเน็ตเวิร์กอาจช่วยให้ผู้ใช้ค้นพบว่าเพื่อนๆ คนไหนเข้าร่วมแล้ว
การใช้ Contact Picker API
Contact Picker API ต้องใช้การเรียกเมธอดที่มีพารามิเตอร์ options ซึ่งระบุประเภทข้อมูลติดต่อที่ต้องการ วิธีที่สองจะบอกคุณว่าระบบพื้นฐานจะให้ข้อมูลใดบ้าง
การตรวจหาฟีเจอร์
หากต้องการตรวจสอบว่าระบบรองรับ Contact Picker API หรือไม่ ให้ใช้
const supported = ('contacts' in navigator && 'ContactsManager' in window);
นอกจากนี้ เครื่องมือเลือกรายชื่อติดต่อใน Android ต้องใช้ Android M ขึ้นไป
การเปิดเครื่องมือเลือกรายชื่อติดต่อ
จุดแรกเข้าของ 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.
}
Contacts Picker API สามารถเรียกใช้ได้จากบริบทการท่องเว็บระดับบนสุดที่ปลอดภัยเท่านั้น และต้องใช้ท่าทางสัมผัสของผู้ใช้เช่นเดียวกับ API ที่มีประสิทธิภาพอื่นๆ
กำลังตรวจหาพร็อพเพอร์ตี้ที่พร้อมใช้งาน
หากต้องการตรวจหาพร็อพเพอร์ตี้ที่พร้อมใช้งาน ให้โทรหา navigator.contacts.getProperties()
โดยจะแสดงผลพรอมต์ที่แก้ไขด้วยอาร์เรย์สตริงที่ระบุพร็อพเพอร์ตี้ที่ใช้ได้ เช่น ['name', 'email', 'tel', 'address']
คุณสามารถส่งค่าเหล่านี้ไปยัง select()
ได้
โปรดทราบว่าพร็อพเพอร์ตี้อาจไม่พร้อมใช้งานเสมอไป และอาจมีการเพิ่มพร็อพเพอร์ตี้ใหม่ ในอนาคต แพลตฟอร์มและแหล่งข้อมูลติดต่ออื่นๆ อาจจำกัดพร็อพเพอร์ตี้ที่จะแชร์
การจัดการผลลัพธ์
Contact Picker API จะแสดงผลอาร์เรย์ของรายชื่อติดต่อ และรายชื่อติดต่อแต่ละรายการจะมีอาร์เรย์ของพร็อพเพอร์ตี้ที่ขอ หากผู้ติดต่อไม่มีข้อมูลสำหรับพร็อพเพอร์ตี้ที่ขอ หรือผู้ใช้เลือกที่จะไม่แชร์พร็อพเพอร์ตี้หนึ่งๆ API จะแสดงผลอาร์เรย์ว่าง (ฉันอธิบายวิธีที่ผู้ใช้เลือกพร็อพเพอร์ตี้ในส่วนการควบคุมของผู้ใช้)
ตัวอย่างเช่น หากเว็บไซต์ขอ name
, email
และ tel
และผู้ใช้เลือกรายชื่อติดต่อรายการเดียวที่มีข้อมูลในช่องชื่อ ระบุหมายเลขโทรศัพท์ 2 หมายเลข แต่ไม่มีอีเมล คำตอบที่แสดงจะเป็นดังนี้
[{
"email": [],
"name": ["Queen O'Hearts"],
"tel": ["+1-206-555-1000", "+1-206-555-1111"]
}]
ความปลอดภัยและสิทธิ์
ทีม Chrome ได้ออกแบบและติดตั้ง Contact Picker API โดยใช้หลักการหลักที่ระบุไว้ในการควบคุมการเข้าถึงฟีเจอร์ที่มีประสิทธิภาพของแพลตฟอร์มเว็บ ซึ่งรวมถึงการควบคุมของผู้ใช้ ความโปร่งใส และลักษณะการใช้งานที่สะดวกสบาย เราจะอธิบายแต่ละรายการ
การควบคุมของผู้ใช้
การเข้าถึงรายชื่อติดต่อของผู้ใช้จะผ่านเครื่องมือเลือก และสามารถเรียกใช้ได้ด้วยท่าทางสัมผัสของผู้ใช้ในบริบทการท่องเว็บระดับบนสุดที่ปลอดภัยเท่านั้น วิธีนี้ช่วยให้เว็บไซต์ไม่สามารถแสดงเครื่องมือเลือกเมื่อโหลดหน้าเว็บ หรือแสดงเครื่องมือเลือกแบบสุ่มโดยไม่มีบริบทใดๆ
ไม่มีตัวเลือกให้เลือกรายชื่อติดต่อทั้งหมดพร้อมกัน เราจึงขอแนะนำให้ผู้ใช้เลือกเฉพาะรายชื่อติดต่อที่ต้องการแชร์สำหรับเว็บไซต์นั้นๆ นอกจากนี้ ผู้ใช้ยังควบคุมพร็อพเพอร์ตี้ที่จะแชร์กับเว็บไซต์ได้ด้วย โดยสลับปุ่มพร็อพเพอร์ตี้ที่ด้านบนของเครื่องมือเลือก
ความโปร่งใส
เครื่องมือเลือกจะแสดงชื่อและไอคอนของรายชื่อติดต่อ รวมถึงพร็อพเพอร์ตี้ที่เว็บไซต์ขอมาเสมอ เพื่อชี้แจงว่าระบบจะแชร์ข้อมูลติดต่อใด เช่น หากเว็บไซต์ขอ name
, email
และ tel
พร็อพเพอร์ตี้ทั้ง 3 รายการจะแสดงในเครื่องมือเลือก หรือหากเว็บไซต์ขอเฉพาะ tel
เครื่องมือเลือกจะแสดงเฉพาะชื่อและหมายเลขโทรศัพท์
การกดรายชื่อติดต่อค้างไว้จะแสดงข้อมูลทั้งหมดที่จะแชร์หากเลือกรายชื่อติดต่อนั้นไว้ (ดูรูปภาพติดต่อแมวเชสเชอร์)
ไม่มีการเก็บรักษาสิทธิ์
การเข้าถึงรายชื่อติดต่อจะทำได้แบบออนดีมานด์และคงอยู่ตลอดไป ทุกครั้งที่เว็บไซต์ต้องการเข้าถึง จะต้องเรียกใช้ navigator.contacts.select()
ด้วยท่าทางสัมผัสของผู้ใช้ และผู้ใช้ต้องเลือกรายชื่อติดต่อที่ต้องการแชร์กับเว็บไซต์ทีละรายการ
ความคิดเห็น
ทีม Chrome อยากทราบความคิดเห็นของคุณเกี่ยวกับ Contact Picker API
พบปัญหาในการติดตั้งใช้งานใช่ไหม
หากพบข้อบกพร่องในการใช้งาน Chrome หรือการใช้งานแตกต่างจากข้อกําหนดหรือไม่
- รายงานข้อบกพร่องที่ https://new.crbug.com อย่าลืมระบุรายละเอียดให้มากที่สุด ระบุวิธีการง่ายๆ ในการทําให้เกิดข้อบกพร่องซ้ำ และตั้งค่าคอมโพเนนต์เป็น
Blink>Contacts
Glitch เหมาะสำหรับการแชร์ การทำซ้ำโจทย์ที่ง่ายและรวดเร็ว
หากกำลังวางแผนที่จะใช้ API
คุณกำลังวางแผนที่จะใช้ Contact Picker API ใช่ไหม การสนับสนุนแบบสาธารณะของคุณจะช่วยให้ทีม Chrome จัดลำดับความสำคัญของฟีเจอร์ต่างๆ ได้ และแสดงให้เห็นว่าการสนับสนุนฟีเจอร์เหล่านี้สำคัญเพียงใดต่อผู้ให้บริการเบราว์เซอร์รายอื่นๆ
- แชร์ว่าคุณวางแผนจะใช้ WICG อย่างไรในชุดข้อความ Discourse ของ WICG
- ส่งทวีตถึง @ChromiumDev โดยใช้แฮชแท็ก
#ContactPicker
และบอกเราว่าคุณกำลังใช้ฟีเจอร์นี้ที่ไหนและอย่างไร
ลิงก์ที่มีประโยชน์
- คำอธิบายแบบสาธารณะ
- ข้อกำหนดของเครื่องมือเลือกรายชื่อติดต่อ
- Contact Picker API Demo และแหล่งที่มาของ Contact Picker API Demo
- ข้อบกพร่องการติดตาม
- รายการ ChromeStatus.com
- คอมโพเนนต์ Blink:
Blink>Contacts
ขอขอบคุณ
ขอขอบคุณ Finnur Thorarinsson และ Rayan Kanso ที่นำฟีเจอร์นี้ไปใช้งาน และ Peter Beverloo ที่เราขโมยโค้ดมาเพื่อนำไปรีแฟกทอริงสำหรับเดโมนี้
หมายเหตุ: ชื่อในเครื่องมือเลือกรายชื่อติดต่อของฉันเป็นตัวละครจาก Alice in Wonderland