আপনি যদি আগে জিওলোকেশন এপিআই-এর সাথে কাজ করে থাকেন, তাহলে সম্ভাবনা আছে যে আপনি প্রম্পট না করেই জিওলোকেশন ব্যবহার করার অনুমতি পেয়েছেন কিনা তা পরীক্ষা করতে চেয়েছেন। এই সহজভাবে সম্ভব ছিল না. আপনাকে বর্তমান অবস্থানের জন্য অনুরোধ করতে হয়েছিল এবং এটি অনুমতির অবস্থা নির্দেশ করবে বা ব্যবহারকারীকে একটি প্রম্পট দেখানো হবে।
সমস্ত API এইভাবে কাজ করে না। Notifications API-এর নিজস্ব উপায় রয়েছে যা আপনাকে Notification.permission- এর মাধ্যমে বর্তমান অনুমতির অবস্থা পরীক্ষা করতে দেয়।
যেহেতু ওয়েব প্ল্যাটফর্ম API-এর মধ্যে বৃদ্ধি পায়, বিকাশকারীদের জন্য প্রতিটি API কীভাবে কাজ করে তা মনে রাখার পরিবর্তে অনুমতির স্থিতি পরীক্ষা করার জন্য একটি একক, আদর্শ উপায় থাকা দরকার। পারমিশন এপিআই , ক্রোম সংস্করণ 43 -এ উপলব্ধ, এটি একটি এপিআই-এর অনুমতির স্থিতি পরীক্ষা করার এই একক, আদর্শ উপায়।
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
এর জন্য একটি ইভেন্ট হ্যান্ডলার প্রয়োগ করতে পারেন এবং অনুমতির অবস্থায় পরিবর্তনগুলি পরিচালনা করতে পারেন।
সমর্থিত অনুমতি বর্ণনাকারী
উপরের উদাহরণে, আমরা নিম্নোক্ত অনুমতি বর্ণনাকারীর সাহায্যে ভূ-অবস্থানের জন্য অনুমতির অবস্থাটি কীভাবে জিজ্ঞাসা করতে হয় তা হাইলাইট করি: {name:'geolocation'}
।
বিজ্ঞপ্তি অনুমতি বর্ণনাকারী একই যে এটি শুধুমাত্র একটি নামের বৈশিষ্ট্য প্রয়োজন: {name:'notifications'}
।
পুশ এবং মিডি প্রতিটিতে একটি অতিরিক্ত প্যারামিটার রয়েছে যা সেই API-এর জন্য নির্দিষ্ট।
পুশ অনুমতির জন্য, আপনি একটি userVisibleOnly
প্যারামিটার সরবরাহ করতে পারেন। এটি নির্দেশ করে যে আপনি প্রতিটি পুশ বার্তার জন্য একটি বিজ্ঞপ্তি দেখাতে চান বা নীরব পুশ বিজ্ঞপ্তি পাঠাতে সক্ষম হন (এই মুহূর্তে Chrome শুধুমাত্র বিজ্ঞপ্তি সহ পুশ বার্তা সমর্থন করে)৷ আপনি এটি এভাবে ব্যবহার করবেন:
navigator.permissions.query({name:'push', userVisibleOnly:true})
মিডি একটি sysex
প্যারামিটারের অনুমতি দেয়। এটি আপনাকে সিস্টেম এক্সক্লুসিভ বার্তাগুলি গ্রহণ করতে এবং/বা গ্রহণ করতে হবে কিনা তা নির্দেশ করে৷ মিডির জন্য এটি হবে:
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');
});
এখানে বিন্দু হল অনুমতি API অনুমতির স্থিতি নিরীক্ষণ করার জন্য একটি সামঞ্জস্যপূর্ণ উপায় অনুমতি দেয় যখন ওয়েবে বর্তমানে API-এর পরিসর সমর্থন করতে সক্ষম হয়।
এর বড় সুবিধা হল এটি আপনাকে আপনার ব্যবহারকারীদের জন্য আরও ভাল অভিজ্ঞতা তৈরি করতে দেয়, শুধুমাত্র তখনই প্রম্পট করে যখন ব্যবহারকারীর কাছে স্পষ্ট হয় কেন আপনার অতিরিক্ত সুবিধার প্রয়োজন এবং আপনি যখন জানেন যে আপনাকে অনুমতি দেওয়া হয়েছে তখন এই APIগুলির সম্পূর্ণ সুবিধা গ্রহণ করা।
আপনি এখানে উদাহরণগুলির একটি সম্পূর্ণ সেট খুঁজে পেতে পারেন ।
ব্রাউজার সমর্থন
ক্রোম এটি বাস্তবায়নের প্রথম ব্রাউজার, মজিলা এটি শিপিংয়ের পরিকল্পনা করছে এবং মাইক্রোসফ্ট এপিআইতে আগ্রহ দেখিয়েছে।
পরিচিত সমস্যা
- ব্যবহারকারী অনুমতির অনুরোধ খারিজ করলে ভূ-অবস্থান পুনরায় প্রম্পট দেখাবে না। অনুমতির অবস্থা যদিও 'প্রম্পট' রয়ে গেছে। [ bugs.chromium.org ]
আপনি যদি আগে জিওলোকেশন এপিআই-এর সাথে কাজ করে থাকেন, তাহলে সম্ভাবনা আছে যে আপনি প্রম্পট না করেই জিওলোকেশন ব্যবহার করার অনুমতি পেয়েছেন কিনা তা পরীক্ষা করতে চেয়েছেন। এই সহজভাবে সম্ভব ছিল না. আপনাকে বর্তমান অবস্থানের জন্য অনুরোধ করতে হয়েছিল এবং এটি অনুমতির অবস্থা নির্দেশ করবে বা ব্যবহারকারীকে একটি প্রম্পট দেখানো হবে।
সমস্ত API এইভাবে কাজ করে না। Notifications API-এর নিজস্ব উপায় রয়েছে যা আপনাকে Notification.permission- এর মাধ্যমে বর্তমান অনুমতির অবস্থা পরীক্ষা করতে দেয়।
যেহেতু ওয়েব প্ল্যাটফর্ম API-এর মধ্যে বৃদ্ধি পায়, বিকাশকারীদের জন্য প্রতিটি API কীভাবে কাজ করে তা মনে রাখার পরিবর্তে অনুমতির স্থিতি পরীক্ষা করার জন্য একটি একক, আদর্শ উপায় থাকা দরকার। পারমিশন এপিআই , ক্রোম সংস্করণ 43 -এ উপলব্ধ, এটি একটি এপিআই-এর অনুমতির স্থিতি পরীক্ষা করার এই একক, আদর্শ উপায়।
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
এর জন্য একটি ইভেন্ট হ্যান্ডলার প্রয়োগ করতে পারেন এবং অনুমতির অবস্থায় পরিবর্তনগুলি পরিচালনা করতে পারেন।
সমর্থিত অনুমতি বর্ণনাকারী
উপরের উদাহরণে, আমরা নিম্নোক্ত অনুমতি বর্ণনাকারীর সাহায্যে ভূ-অবস্থানের জন্য অনুমতির অবস্থাটি কীভাবে জিজ্ঞাসা করতে হয় তা হাইলাইট করি: {name:'geolocation'}
।
বিজ্ঞপ্তি অনুমতি বর্ণনাকারী একই যে এটি শুধুমাত্র একটি নামের বৈশিষ্ট্য প্রয়োজন: {name:'notifications'}
।
পুশ এবং মিডি প্রতিটিতে একটি অতিরিক্ত প্যারামিটার রয়েছে যা সেই API-এর জন্য নির্দিষ্ট।
পুশ অনুমতির জন্য, আপনি একটি userVisibleOnly
প্যারামিটার সরবরাহ করতে পারেন। এটি নির্দেশ করে যে আপনি প্রতিটি পুশ বার্তার জন্য একটি বিজ্ঞপ্তি দেখাতে চান বা নীরব পুশ বিজ্ঞপ্তি পাঠাতে সক্ষম হন (এই মুহূর্তে Chrome শুধুমাত্র বিজ্ঞপ্তি সহ পুশ বার্তা সমর্থন করে)৷ আপনি এটি এভাবে ব্যবহার করবেন:
navigator.permissions.query({name:'push', userVisibleOnly:true})
মিডি একটি sysex
প্যারামিটারের অনুমতি দেয়। এটি আপনাকে সিস্টেম এক্সক্লুসিভ বার্তাগুলি গ্রহণ করতে এবং/বা গ্রহণ করতে হবে কিনা তা নির্দেশ করে৷ মিডির জন্য এটি হবে:
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');
});
এখানে বিন্দু হল অনুমতি API অনুমতির স্থিতি নিরীক্ষণ করার জন্য একটি সামঞ্জস্যপূর্ণ উপায় অনুমতি দেয় যখন ওয়েবে বর্তমানে API-এর পরিসর সমর্থন করতে সক্ষম হয়।
এর বড় সুবিধা হল এটি আপনাকে আপনার ব্যবহারকারীদের জন্য আরও ভাল অভিজ্ঞতা তৈরি করতে দেয়, শুধুমাত্র তখনই প্রম্পট করে যখন ব্যবহারকারীর কাছে স্পষ্ট হয় কেন আপনার অতিরিক্ত সুবিধার প্রয়োজন এবং আপনি যখন জানেন যে আপনাকে অনুমতি দেওয়া হয়েছে তখন এই APIগুলির সম্পূর্ণ সুবিধা গ্রহণ করা।
আপনি এখানে উদাহরণগুলির একটি সম্পূর্ণ সেট খুঁজে পেতে পারেন ।
ব্রাউজার সমর্থন
ক্রোম এটি বাস্তবায়নের প্রথম ব্রাউজার, মজিলা এটি শিপিংয়ের পরিকল্পনা করছে এবং মাইক্রোসফ্ট এপিআইতে আগ্রহ দেখিয়েছে।
পরিচিত সমস্যা
- ব্যবহারকারী অনুমতির অনুরোধ খারিজ করলে ভূ-অবস্থান পুনরায় প্রম্পট দেখাবে না। অনুমতির অবস্থা যদিও 'প্রম্পট' রয়ে গেছে। [ bugs.chromium.org ]