API สิทธิ์สำหรับเว็บ

หากคุณเคยใช้ Geolocation API ก่อนหน้านี้ คุณคงอยากตรวจสอบว่าคุณได้รับอนุญาตให้ใช้หรือไม่ ตำแหน่งทางภูมิศาสตร์โดยไม่สร้างข้อความแจ้ง ซึ่งเป็นไปไม่ได้เลย คุณต้องขอตําแหน่งปัจจุบัน และระบบจะระบุสถานะสิทธิ์หรือทําให้ระบบแสดงข้อความแจ้งแก่ผู้ใช้

API บางตัวอาจทำงานลักษณะนี้ไม่ได้ Notifications API มีวิธีของตัวเองในการช่วยให้ คุณสามารถตรวจสอบสถานะสิทธิ์ปัจจุบันผ่านทาง Notification.permission

เมื่อแพลตฟอร์มเว็บเติบโตขึ้นใน API จึงจำเป็นต้องมีวิธีมาตรฐานวิธีเดียวสำหรับ เพื่อให้นักพัฒนาซอฟต์แวร์สามารถตรวจสอบสถานะของสิทธิ์แทนที่จะต้องจดจำ วิธีการทำงานของ API แต่ละอย่าง API สิทธิ์ที่มีอยู่ใน Chrome เวอร์ชัน 43 นั้น เป็นวิธีมาตรฐานวิธีเดียวที่ใช้ตรวจสอบสถานะสิทธิ์ของ API

permissions.query()

ตรวจสอบสถานะของสิทธิ์โดยใช้เมธอด permissions.query() การดำเนินการนี้จะ แสดงสถานะเป็น อนุญาต (คุณมีสิทธิ์) ปฏิเสธ (คุณถูกบล็อกจาก เข้าถึง API) หรือ ข้อความแจ้ง (ความต้องการของผู้ใช้ ) เช่น

// Check for Geolocation API permissions
navigator.permissions.query({name:'geolocation'})
    .then(function(permissionStatus) {
    console.log('geolocation permission state is ', permissionStatus.state);

    permissionStatus.onchange = function() {
        console.log('geolocation permission state has changed to ', this.state);
    };
    });

วิธีการค้นหาจะใช้ PermissionDescriptor ซึ่งคุณสามารถกำหนดชื่อของสิทธิ์ได้ คำตอบคือสัญญา แปลค่าเป็น PermissionStatus ออบเจ็กต์ จากออบเจ็กต์นี้ คุณจะตรวจสอบสถานะด้วย permissionStatus.state ได้ สำหรับ "อนุญาต", "ปฏิเสธ" หรือ "ข้อความแจ้ง" นอกจากนี้คุณยังติดตั้งใช้งานเหตุการณ์ได้อีกด้วย ตัวแฮนเดิลสำหรับ permissionStatus.onchange และจัดการการเปลี่ยนแปลงสิทธิ์

RightDescriptor ที่รองรับ

ในตัวอย่างด้านบน เราไฮไลต์วิธีค้นหาสถานะสิทธิ์ ตำแหน่งทางภูมิศาสตร์พร้อมด้วยข้อบ่งชี้สิทธิ์ต่อไปนี้: {name:'geolocation'}

ข้อบ่งชี้สิทธิ์การแจ้งเตือนจะคล้ายๆ กันคือ จะใช้เพียง ชื่อแอตทริบิวต์: {name:'notifications'}

Push และ midi แต่ละแบบมี ที่มีเฉพาะใน API นั้น

สําหรับสิทธิ์พุช คุณจะใส่พารามิเตอร์ userVisibleOnly ได้ ค่านี้ระบุว่าคุณต้องการแสดงการแจ้งเตือนสำหรับข้อความ Push ทั้งหมดหรือไม่ หรือสามารถส่งข้อความ Push แบบปิดเสียง (ขณะนี้มีแค่ Chrome เท่านั้น รองรับข้อความ Push ที่มีการแจ้งเตือน) หากต้องการใช้งานในลักษณะดังนี้

navigator.permissions.query({name:'push', userVisibleOnly:true})

Midi อนุญาตพารามิเตอร์ sysex ค่านี้ระบุว่าคุณต้องและ/หรือได้รับ ข้อความเฉพาะของระบบ สำหรับ MIDI จะเป็น

navigator.permissions.query({name:'midi', sysex:true})

การขอสิทธิ์

การขอสิทธิ์จากผู้ใช้จะขึ้นอยู่กับ API ที่เฉพาะเจาะจง ตัวอย่างเช่น ตำแหน่งทางภูมิศาสตร์จะแสดงข้อความแจ้งสิทธิ์เมื่อคุณโทรหา getCurrentPosition()

navigator.geolocation.getCurrentPosition(function(position) {
    console.log('Geolocation permissions granted');
    console.log('Latitude:' + position.coords.latitude);
    console.log('Longitude:' + position.coords.longitude);
});

ส่วนการแจ้งเตือนจะแสดงข้อความแจ้งผู้ใช้เมื่อคุณโทรหา requestPermission()

Notification.requestPermission(function(result) {
    if (result === 'denied') {
    console.log('Permission wasn\'t granted. Allow a retry.');
    return;
    } else if (result === 'default') {
    console.log('The permission request was dismissed.');
    return;
    }
    console.log('Permission was granted for notifications');
});

ประเด็นคือ Authorization API ทำให้เราสามารถตรวจสอบ ของสิทธิ์ในขณะที่สามารถรองรับ API ต่างๆ ที่กำลังเปิดอยู่ ผ่านเว็บได้

ข้อดีหลักๆ ของโปรแกรมนี้คือช่วยให้คุณสามารถ สร้างประสบการณ์การใช้งานที่ดีขึ้นสำหรับ ผู้ใช้ของคุณโดยแจ้งเฉพาะเมื่อผู้ใช้เข้าใจได้ชัดเจนแล้วว่าเหตุใดคุณถึงต้องมี และใช้ประโยชน์อย่างเต็มที่จาก API เหล่านี้เมื่อคุณทราบว่าคุณได้ ที่ได้รับอนุญาต

ดูตัวอย่างทั้งหมดได้ที่นี่

การรองรับเบราว์เซอร์

Chrome เป็นเบราว์เซอร์แรกที่ใช้งาน และ Mozilla กำลังวางแผนจัดส่ง และ Microsoft ก็ได้แสดงความสนใจใน API

ปัญหาที่ทราบ

  • ตำแหน่งทางภูมิศาสตร์จะไม่แสดงข้อความแจ้งอีกครั้งหากผู้ใช้ปิดสิทธิ์ อีกครั้ง แต่สถานะการอนุญาตจะยังคงเป็น "ข้อความแจ้ง" [bugs.chromium.org]