اختر لونك:
وَقُلِ اعْمَلُوا فَسَيَرَى اللَّهُ عَمَلَكُمْ وَرَسُولُهُ وَالْمُؤْمِنُونَ ۖ وَسَتُرَدُّونَ إِلَىٰ عَالِمِ الْغَيْبِ وَالشَّهَادَةِ فَيُنَبِّئُكُم بِمَا كُنتُمْ تَعْمَلُونَ [ التوبة : ( 105 )] كلمة الإدارة

يرجى إختيار القسم المناسب قبل النشر وسيعاقب المخالف بإنذار أول مرة وسيتم حظره إذا تكرر ذلك كلمة الإدارة

يُمنع كتابة مواضيع السحر والشعوذة والروحانيات والابراج بكافة الأشكال والمخالف سيعاقب بحظر مؤقت وإذا تكرر سيكون حظر دائم تنبيه هام جداً



أضف رد جديد
 
LinkBack أدوات الموضوع انواع عرض الموضوع

قديم 03-04-2019, 11:21 PM   #1
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
افتراضي ما هي واجهة Permissions API ؟

نشهد في هذه الأيام، مع تقدم وتطور تقنيات الويب وتطبيقاته بالموازاة مع ثورة الهواتف الذكية وتطبيقات الموبايل، ظهور العديد من الواجهات الجديدة في متصفحات الويب Web APIs ويتم التعامل معها عن طريق الجافاسكريبت طبعا.
آخر هذه الواجهات الجديدة هي واجهة الصلاحيات Permissions API، ففي كثير من الأحيان مثلا نحتاج معرفة مكان تواجد المستعمل أو الزائر (إحداثيات المكان Geolocation API) لإعطائه نتائج أفضل أو لأهداف إحصائية، كما أننا قد نحتاج صلاحيات استخدام الكاميرا في جهازه أو نظام الإشعارات Notifications ولذلك كنا مجبرين في كل حالة من هذه الحالات على استخدام الواجهة API الخاصة بكل خدمة من أجل طلب الحصول على الرخصة من المستعمل كما أنها لا تمكنك من معرفة صلاحيتك في استخدامها إلا إذا طلب واستعلمت ذلك من المستخدم.
واجهة Permissions
واجهة Permissions API

مع واجهة الجافاسكريبت الجديدة Permissions API أصبح بإمكاننا معرفة صلاحياتنا في استعمال كل هذه الخدمات دون طلب ذلك من المستعمل.
navigator.permissions.query({ name: 'geolocation' }).then(function(result) { console.log(result); });
1
2
3

navigator.permissions.query({ name: 'geolocation' }).then(function(result) {
console.log(result);
});



هنا نمرر للدالة query اسم الخدمة التي نود التأكد من صلاحياتنا في استعمالها، في هذه الحالة خدمة تحديد الموقع الجغرافي Geolocation، هذه الدالة بدورها تقوم بإرجاع ما يسمى في الجافاسكريبت بالوعد Promise وبداخله نستطيع معرفة هل بإمكاننا استعمال خدمة Geolocation أم لا (ويتم معرفة هذا انطلاقا من اعدادات المتصفح) عن طريق الكائن result الذي يحتوي بداخله على خاصية تدعى state وتقبل ثلاث قيم وهي :
  • granted : أي أنه يمكنك الولوج لخدمة Geolocation دون طلب الإذن من المستخدم.
  • prompt : يجب عليك أولا طلب الإذن من المستخدم للتمكن من الولوج للخدمة.
  • denied : المستخدم لا يسمح لأحد بأن يلج لهذه الخدمة (الإطلاع على موقعه الجغرافي في هذه الحالة).
إذا في داخل دالة الوعد يمكنك عمل شرط للتأكد من قيمة result.state :
navigator.permissions.query({name:'geolocation'}). then(function(result) { if (result.state == 'granted') { //أنت مرخص لك بالولوج لخدمة تحديد المواقع } else if (result.state == 'prompt') { //لست مرخصا لاستعامل خدمة تحديد المواقع، أطلب من المستخدم أن يعطيك الترخيص. } });
1
2
3
4
5
6
7
8

navigator.permissions.query({name:'geolocation'}). then(function(result) {
if (result.state == 'granted') {
//أنت مرخص لك بالولوج لخدمة تحديد المواقع
} else if (result.state == 'prompt') {
//لست مرخصا لاستعامل خدمة تحديد المواقع، أطلب من المستخدم أن يعطيك الترخيص.
}

});



الشيء الجميل والرائع كذلك بداخل هذه الدالة هو أنك تستطيع الإستماع لحدث Event تغير قيمة result.state وذلك عن طريق الحدث onchange وذلك كما يلي :
navigator.permissions.query({name:'geolocation'}). then(function(result) { if (result.state == 'granted') { //أنت مرخص لك بالولوج لخدمة تحديد المواقع } else if (result.state == 'prompt') { //لست مرخصا لاستعامل خدمة تحديد المواقع، أطلب من المستخدم أن يعطيك الترخيص. } result.onchange = function() { console.log('صلاحية تحديد الموقع الجغرافي تغير إلى : ', this.state); }; });
1
2
3
4
5
6
7
8
9
10
11
12

navigator.permissions.query({name:'geolocation'}). then(function(result) {
if (result.state == 'granted') {
//أنت مرخص لك بالولوج لخدمة تحديد المواقع
} else if (result.state == 'prompt') {
//لست مرخصا لاستعامل خدمة تحديد المواقع، أطلب من المستخدم أن يعطيك الترخيص.
}

result.onchange = function() {
console.log('صلاحية تحديد الموقع الجغرافي تغير إلى : ', this.state);
};

});



هنا كلما غيرت الإعدادات من متصفحك سيتم معرفة ذلك عن طريق الحدث onchange وستتغير قيمة state دون إعادة تحميل الصفحة طبعا.
الشيء الذي يجب تذكره من هذا كله هو أنه باستعمالك واجهة الصلاحيات الجديدة ليس عليك طلب الرخصة من المستخدم إلى إذا كنت فعلا مضطرا لذلك (إذا كانت قيمة state تساوي prompt ).
طلب الرخصة من المستخدم

لطلب الرخصة من المستخدم للولوج إلى احدى الواجهات التي ذكرنا بعضها أعلاه، واجهة الصلاحيات Permissions API تضع بين أيدينا الدالة permissions.request وتستعمل بنفس الطريقة التي استخدمنا بها الدالة permissions.query غير أنها لحد الساعة ليست مدعومة من طرف أي متصفح كونها ما تزال قيد التطوير.
خاتمة

الواجهة لاتزال قيد التطوير، فقط غوغل كروم 43 وفايرفوكس 46 يدعمونها جزئيا لحد الساعة، ولكن الأمر المؤكد أن بعد بضعة أشهر ستكون JavaScript Permissions API مدعومة من كل المتصفحات المعروفة لأنها بصراحة تبدو قيمة للغاية وتجعل أمر التعامل مع الصلاحيات والرخص أسهل وأكثر انسيابية.
واجهة Permissions

raheel غير متواجد حالياً   اقتباس
أضف رد جديد


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
إنشاء واجهة برمجية API في Laravel 5 الفارس قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 1 26-07-2019 03:14 PM
10 JAVA Swing GUI JButton واجهة الرسومية جافا القيصر قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 08-05-2019 03:25 PM
7 JAVA Swing GUI JFrame واجهة الرسومية جافا القيصر قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 08-05-2019 03:11 PM
ما هي فوائد واجهة Pusher raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 01-04-2019 04:32 PM
هاك الصلاحيات المتقدمة 5.2.1 - VSa - Advanced Permissions Based on Post Coun مهرة النجدية قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 03-03-2019 07:47 PM


الساعة الآن 10:15 PM

 


Content Relevant URLs by vBSEO ©2010, Crawlability, Inc.