लेखक का नोट: इस आलेख में वर्णित प्रौद्योगिकियां और प्रक्रियाएं प्रायोगिक हैं और केवल कुछ ब्राउज़रों में ही काम करेंगी। लेखन के समय, संपर्क पिकर एपीआई केवल एंड्रॉइड क्रोम (संस्करण 80 से) और आईओएस सफारी (संस्करण 14.5 से, लेकिन केवल एक ध्वज के पीछे) द्वारा समर्थित था। यदि आप कार्यक्षमता की समीक्षा करना चाहते हैं, तो आप मेरी वेबसाइट पर चल रहे डेमो की जांच कर सकते हैं।
किसी फ़ोन या टैबलेट पर संपर्क सूची से प्रविष्टियाँ पढ़ना पारंपरिक रूप से मूल ऐप्स तक ही सीमित है। लेकिन कॉन्टैक्ट पिकर एपीआई के साथ, हम जावास्क्रिप्ट का उपयोग करके बस यही कर सकते हैं।
यह सुविधा उन ऐप्स में दिलचस्प हो सकती है जिन्हें फोन नंबर या वीओआईपी जैसी संपर्क जानकारी की आवश्यकता होती है, सोशल नेटवर्क जहां हम ज्ञात लोगों को खोजना चाहते हैं, या ऐसे ऐप्स जिन्हें डेटा देखने के लिए एप्लिकेशन स्वैप किए बिना फॉर्म जानकारी भरने की आवश्यकता होती है।
एपीआई और डिवाइस सीमित करेंगे कि कौन सी संपत्तियां उपलब्ध होंगी। पाँच मानक हैं जिन्हें डेवलपर चुन सकते हैं:
यहां बहुवचन महत्वपूर्ण हैं, क्योंकि किसी संपर्क में एक से अधिक फ़ोन, ईमेल या एकाधिक पते हो सकते हैं। लौटाया गया डेटा स्थिरता के लिए हमेशा सरणियों के अंदर रहेगा, भले ही वह एकल मान हो। उस पर और बाद में।
फोन पर संग्रहीत संपर्क जानकारी में संवेदनशील जानकारी हो सकती है जिसे हमें सावधानीपूर्वक संभालना चाहिए। उसके कारण, गोपनीयता और सुरक्षा संबंधी विचार हैं जिन्हें हमें ध्यान में रखना चाहिए:
पहली बार जब वे संपर्क पिकर एपीआई का उपयोग करने वाली वेबसाइट का उपयोग करते हैं, तो उन्हें इस तरह का एक संदेश मिल सकता है:
जब तक उपयोगकर्ता "अनुमति दें" पर टैप नहीं करता तब तक फ़ोन हर बार इस पॉप-अप को प्रदर्शित करेगा। ऐसा होने तक संपर्क पिकर एपीआई नहीं चलेगी। जो अच्छा है; हम यह सुनिश्चित करना चाहते हैं कि उपयोगकर्ता उचित अनुमतियाँ प्रदान करें। यह भी अच्छा है कि यह एक बार की बात है; जब भी पृष्ठ संपर्क पिकर एपीआई कोड चलाता है तो प्राधिकरण प्रदान करना गर्दन में दर्द होगा।
संपर्क पिकर एपीआई केवल दो तरीकों को परिभाषित करता है:
दोनों विधियां वादे लौटाती हैं, लेकिन यह ध्यान में रखते हुए कि उनके द्वारा ट्रिगर की गई कार्रवाइयां ऐप के नियमित प्रवाह को अवरुद्ध करती हैं, हमें उन्हें संभालते समय async / wait का उपयोग करना चाहिए।
getProperties() को अनदेखा करना और सभी संपत्तियों का सीधे अनुरोध करना आकर्षक हो सकता है। लेकिन अगर आप ऐसा करते हैं तो सावधान रहें: यह संभवतः काम करेगा, लेकिन यदि निर्दिष्ट गुणों में से कोई भी अनुपलब्ध है, तो चयन() विधि एक अपवाद फेंक देगी।
संपर्क पिकर एपीआई का एक डेमो क्रियान्वित है (इसे यहां ऑनलाइन चलाएं या यह वीडियो देखें)। यदि एपीआई समर्थित है, तो यह एक बटन दिखाता है जो संपर्क के टेलीफोन नंबर, नाम और ईमेल को प्रदर्शित करने के लिए पढ़ता है।
सबसे पहले, हमें बटन की आवश्यकता है। जैसा कि पहले गोपनीयता और सुरक्षा अनुभाग में बताया गया है, एपीआई को कॉल करने से पहले एक उपयोगकर्ता कार्रवाई की आवश्यकता होती है, इसलिए हम उपयोगकर्ता इंटरैक्शन के बिना कुछ भी ट्रिगर नहीं कर सकते:
मुख्य कोड getContactData() फ़ंक्शन में होगा। लेकिन उससे पहले, यदि संपर्क पिकर एपीआई अनुपलब्ध है तो बटन दिखाने का क्या मतलब होगा? यदि बटन उपलब्ध नहीं है तो उसे छिपा दें। या इससे भी बेहतर, आइए डिफ़ॉल्ट रूप से बटन को छिपाएं (छिपी हुई विशेषता जोड़कर) और केवल तभी दिखाएं जब एपीआई उपलब्ध हो।
// only show the button if browser supports Contact Picker API if ("contacts" in navigator) { document.querySelector("button").removeAttribute("hidden"); }
अब जब बटन तर्क लागू हो गया है तो आइए getContactData() पर ध्यान केंद्रित करें। यहां फ़ंक्शन का टिप्पणी किया गया संस्करण है:
// it is asynchronous because we'll wait for the modal selection async function getContactData() { // indicate what contact values will be read const props = ["tel", "name", "email"]; // wrap everything in a try...catch, just in case try { // open the native contact selector (after permission is granted) const contacts = await navigator.contacts.select(props); // this will execute after the native contact selector is closed if (contacts.length) { // if there's data, show it alert("Selected data: " JSON.stringify(contacts)); } else { // ...if not, indicate nothing was selected alert("No selection done"); } } catch (ex) { // if something fails, show the error message alert(ex.message) } }
एक बार बटन इस फ़ंक्शन को ट्रिगर कर देता है, और यदि ब्राउज़र के पास अनुमतियां हैं (पिछले अनुभाग में स्क्रीनशॉट देखें), तो संपर्क मोड दिखाई देगा, जो आवश्यक जानकारी को इंगित करेगा: डेटा पढ़ने वाला यूआरएल, यह कौन सा डेटा लौटाएगा, और चुनने के लिए संपर्कों की सूची।
मोडल को बंद करने के बाद, संपर्क वेरिएबल डेटा को JSON में एक सरणी के रूप में संग्रहीत करेगा जिसमें अनुरोधित जानकारी वाली एक वस्तु होगी (यदि यह संपर्क कार्ड में उपलब्ध नहीं है तो यह खाली हो सकता है)।
उदाहरण के लिए, स्वयं को संपर्क के रूप में चुनने के बाद यह परिणाम है (नकली डेटा):
[ { "address": [], "email": [ "[email protected]" ], "icon": [], "name": [ "Alvaro Montoro" ], "tel": [ "555-555-5555", "555-123-4567" ] } ], "आइकन": [], "नाम":
, "टेलीविजन": ["555-555-5555", "555-123-4567" ] } ]
यदि डेटा में एक आइकन शामिल है, तो यह छवि के साथ एक ब्लॉब होगा। यदि डेटा में कोई पता शामिल है, तो यह सड़क, शहर, देश, ज़िप कोड आदि के साथ एक अधिक जटिल वस्तु होगी। आप विनिर्देश में दिए गए मानों की जांच कर सकते हैं।
एकाधिक संपर्कों का चयन करना
const props = ["tel", "address", "icon", "name", "email"]; // only one option available: read multiple or only one (default) const options = { multiple: true }; try { const contacts = await navigator.contacts.select(props, options); // ...
const प्रॉप्स = ["टेलीमान", "पता", "आइकन", "नाम", "ईमेल"]; // केवल एक विकल्प उपलब्ध है: एकाधिक या केवल एक पढ़ें (डिफ़ॉल्ट) स्थिरांक विकल्प = { एकाधिक: सत्य }; कोशिश { स्थिरांक संपर्क = प्रतीक्षा नेविगेटर.संपर्क.चयन(प्रॉप्स, विकल्प); //...
async function getContactData() { if ("contacts" in navigator) { const props = await navigator.contacts.getProperties(); const options = { multiple: true }; try { const contacts = await navigator.contacts.select(props, options); if (contacts.length) { // code managing the selected data } else { // code when nothing was selected } } catch (ex) { // code if there was an error } } }
async फ़ंक्शन getContactData() { यदि नेविगेटर में ("संपर्क") { कॉन्स्ट प्रॉप्स = navigator.contacts.getProperties() का इंतजार करें; स्थिरांक विकल्प = { एकाधिक: सत्य }; कोशिश { स्थिरांक संपर्क = प्रतीक्षा नेविगेटर.संपर्क.चयन(प्रॉप्स, विकल्प); यदि (संपर्क लंबाई) { // चयनित डेटा को प्रबंधित करने वाला कोड } अन्य { // कोड जब कुछ भी नहीं चुना गया था } } पकड़ो (पूर्व) { // यदि कोई त्रुटि हो तो कोड करें } } }
आप मेरी वेबसाइट पर चल रहे डेमो को देख सकते हैंनिष्कर्ष: पायरेसी पर गोपनीयता
संपर्क जानकारी पीआईआई (व्यक्तिगत रूप से पहचान योग्य जानकारी) है, और हमें इसे संवेदनशील डेटा के लिए आवश्यक सभी देखभाल और सुरक्षा के साथ व्यवहार करना चाहिए।
मान लीजिए कि कोई वेब ऐप फ़ोन नंबर चुनते समय पते, नाम या ईमेल पढ़ने का प्रयास करता है। यदि मेरे साथ ऐसा हुआ, तो मैं स्वचालित रूप से अनुमति अस्वीकार कर दूंगा और वेबसाइट छोड़ दूंगा।
यदि आपने जावास्क्रिप्ट के बारे में इस लेख का आनंद लिया है और जेएस के साथ वेब एपीआई और विभिन्न चीजों का परीक्षण करना पसंद करते हैं, तो इस अन्य लेख को देखें:
HTML और जावास्क्रिप्ट के साथ एक रॉक बैंड गेम विकसित करें
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3