درخواست مجوز در Wear OS مشابه درخواست مجوز در برنامههای تلفن همراه با چند مورد استفاده اضافی است. این سند فرض میکند که شما نحوه عملکرد مجوزهای Android را میدانید. اگر این کار را نمیکنید، نحوه عملکرد مجوزها در Android را مرور کنید.
دقیقاً مانند یک برنامه تلفن همراه، کاربر باید برای دسترسی به عملکردهای خاص به یک برنامه Wear مجوز بدهد. در برنامههای Wear خود، بدون درخواست مجوز، عملکرد معنیداری ارائه دهید .
سناریوهای مجوز
چندین سناریو وجود دارد که ممکن است هنگام درخواست مجوزهای خطرناک در Wear OS با آنها روبرو شوید:
برنامه Wear برای برنامه ای که روی دستگاه پوشیدنی اجرا می شود مجوز درخواست می کند.
برنامه Wear برای برنامه ای که روی تلفن اجرا می شود مجوز درخواست می کند.
برنامه تلفن برای برنامه ای که روی دستگاه پوشیدنی اجرا می شود مجوز درخواست می کند.
برنامه تلفن چندین مجوز را درخواست می کند که فقط در زمانی که دستگاه پوشیدنی متصل است می توان از آنها استفاده کرد.
برای مشاهده همه این سناریوها در یک برنامه کاربردی، نمونه ExcersizeSampleCompose را در GitHub مرور کنید.
بخش های بعدی هر یک از این سناریوها را توضیح می دهند. برای اطلاعات دقیق تر در مورد درخواست مجوز، به بخش الگوهای درخواست مجوز مراجعه کنید.
اپلیکیشن Wear مجوز پوشیدنی درخواست میکند
هنگامی که برنامه Wear برای برنامهای که روی دستگاه پوشیدنی اجرا میشود، درخواست مجوز میکند، سیستم کادر محاورهای را نمایش میدهد تا از کاربر آن مجوز را بخواهد. در برنامه خود، مجوزها را فقط زمانی درخواست کنید که برای کاربر مشخص باشد که چرا مجوزها برای انجام یک عملیات مشخص مورد نیاز است.
اصول مجوز را مرور کنید تا مطمئن شوید که بهترین تجربه را برای کاربران خود ارائه میدهید، و به یاد داشته باشید که shouldShowRequestPermissionRationale()
بررسی کنید و در صورت نیاز اطلاعات بیشتری ارائه دهید .
اگر یک برنامه یا صفحه ساعت به بیش از یک مجوز در یک زمان نیاز دارد، درخواستهای مجوز یکی پس از دیگری ظاهر میشوند.
![چندین صفحه مجوز یکی پس از دیگری.](https://developer.android.com/static/images/training/wear/multiple_permissions.png?hl=fa)
اپلیکیشن Wear اجازه تلفن میخواهد
هنگامی که برنامه Wear یک مجوز تلفن درخواست می کند - برای مثال، یک برنامه پوشیدنی می خواهد به عکس ها یا سایر داده های حساس در نسخه تلفن همراه برنامه دسترسی داشته باشد - برنامه Wear باید کاربر را به تلفن بفرستد تا مجوز را بپذیرد. در آنجا اپلیکیشن تلفن می تواند با استفاده از یک فعالیت، اطلاعات اضافی را در اختیار کاربر قرار دهد. در فعالیت، دو دکمه را شامل کنید: یکی برای اعطای مجوز و دیگری برای رد کردن آن.
![برنامه Wear کاربر را برای اعطای مجوز به تلفن می فرستد.](https://developer.android.com/static/images/training/wear/open_on_phone.png?hl=fa)
برنامه تلفن درخواست مجوز پوشیدنی می کند
اگر کاربر در یک برنامه تلفنی است و برنامه به مجوز پوشیدنی نیاز دارد - به عنوان مثال، برای بارگیری موسیقی از قبل در صورت قطع اتصال تلفن، برنامه تلفن کاربر را به دستگاه پوشیدنی می فرستد تا مجوز را بپذیرد. نسخه پوشیدنی برنامه از روش requestPermissions()
برای راه اندازی گفتگوی مجوزهای سیستم استفاده می کند.
![اپلیکیشن تلفن کاربر را به پوشیدنی می فرستد تا اجازه دهد.](https://developer.android.com/static/images/training/wear/phone_requests_wear.png?hl=fa)
برنامه تلفن چندین مجوز را همزمان درخواست می کند
![](https://developer.android.com/static/images/training/wear/companion-device-profile.png?hl=fa)
برنامههای شریک در Android 12 (سطح API 31) و بالاتر میتوانند از نمایههای دستگاه همراه هنگام اتصال به ساعت استفاده کنند. استفاده از نمایه، فرآیند ثبتنام را با اعطای مجموعهای از مجوزهای نوع دستگاه در یک مرحله ساده میکند.
مجوزهای همراه پس از اتصال دستگاه به برنامه همراه اعطا می شود و فقط تا زمانی که دستگاه مرتبط است دوام می آورد. حذف برنامه یا حذف انجمن، مجوزها را حذف می کند. برای جزئیات، به AssociationRequest.Builder.setDeviceProfile()
مراجعه کنید.
الگوهای درخواست مجوز
الگوهای مختلفی برای درخواست مجوز از کاربران وجود دارد. به ترتیب اولویت عبارتند از:
وقتی مجوز برای یک عملکرد خاص ضروری است اما برای اجرای برنامه به طور کلی ضروری نیست، در زمینه بپرسید.
زمانی که دلیل درخواست مجوز واضح نیست و برای اجرای برنامه به طور کلی مجوز لازم نیست، در شرایطی آموزش دهید.
این الگوها در بخش های بعدی توضیح داده شده است.
در زمینه بپرسید
زمانی که برای کاربر مشخص است که چرا برای انجام یک عملیات معین به مجوز نیاز است، مجوزها را درخواست کنید. کاربران زمانی که ارتباط آن را با ویژگی مورد نظر خود درک کنند، به احتمال زیاد مجوز را اعطا می کنند.
به عنوان مثال، ممکن است یک برنامه به مکان کاربر برای نشان دادن مکانهای مورد علاقه نزدیک نیاز داشته باشد. هنگامی که کاربر برای جستجوی مکانهای نزدیک ضربه میزند، برنامه میتواند فوراً مجوز مکان را درخواست کند زیرا رابطه واضحی بین جستجوی مکانهای نزدیک و نیاز به مجوز مکان وجود دارد. واضح بودن این رابطه باعث می شود که برنامه برای نمایش صفحه های آموزشی اضافی غیر ضروری باشد.
![این برنامه زمانی درخواست مجوز میکند که آشکارا ضروری باشد.](https://developer.android.com/static/images/training/wear/ask_in_context.png?hl=fa)
در زمینه آموزش دهید
شکل 6 نمونه ای از آموزش درون زمینه ای را نشان می دهد. این برنامه برای شروع تایمر به مجوز نیاز ندارد، اما یک نشانه آموزشی درون خطی نشان میدهد که بخشی از فعالیت - تشخیص مکان - قفل شده است. وقتی کاربر روی نشانه ضربه می زند، صفحه درخواست مجوز ظاهر می شود که به کاربر امکان می دهد قفل مکان را باز کند.
از متد shouldShowRequestPermissionRationale()
برای کمک به برنامه خود در تصمیم گیری برای ارائه اطلاعات بیشتر استفاده کنید. برای جزئیات بیشتر، به درخواست مجوزهای برنامه مراجعه کنید. همچنین، میتوانید بررسی کنید که چگونه برنامه نمونه بلندگو در GitHub با نمایش اطلاعات مدیریت میکند.
![هنگامی که نیاز به مجوز ایجاد می شود، برنامه توضیح می دهد که چرا مجوز لازم است.](https://developer.android.com/static/images/training/wear/educate_in_context.png?hl=fa)
رسیدگی به رد
اگر کاربر مجوز درخواستی را که برای فعالیت مورد نظر مهم نیست رد کرد، او را از ادامه فعالیت مسدود نکنید. اگر بخشهای خاصی از فعالیت با مجوز رد شده غیرفعال شد، بازخورد بصری و عملی ارائه دهید.
شکل 7 استفاده از نماد قفل را نشان می دهد که نشان می دهد یک ویژگی قفل شده است زیرا کاربر اجازه استفاده از آن را نداده است.
![هنگامی که کاربر اجازه را رد می کند، یک نماد قفل در کنار ویژگی مرتبط نشان داده می شود.](https://developer.android.com/static/images/training/wear/deny.png?hl=fa)
هنگامی که یک گفتگوی مجوز پوشیدنی که قبلاً رد شده بود برای بار دوم ظاهر شد، شامل گزینه Deny, don't show again است . اگر کاربر این گزینه را انتخاب کند، تنها راه برای اعطای این مجوز در آینده، رفتن به برنامه تنظیمات پوشیدنی است.
![سیستم پیشنهاد می دهد که درخواست مجوز را متوقف کند.](https://developer.android.com/static/images/training/wear/ask_again.png?hl=fa)
درباره نحوه رسیدگی به رد مجوز بیشتر بیاموزید.
مجوزهای خدمات
فقط یک اکتیویتی می تواند متد requestPermissions()
را فراخوانی کند، بنابراین اگر کاربر با برنامه شما با استفاده از یک سرویس تعامل داشته باشد (مثلاً از طریق صفحه ساعت)، سرویس باید قبل از درخواست مجوز، یک فعالیت را باز کند. در این فعالیت، آموزش های تکمیلی در مورد چرایی نیاز به مجوز ارائه دهید.
به طور کلی، برای صفحه ساعت درخواست مجوز نکنید. در عوض، یک پیچیدگی را پیاده سازی کنید و به کاربر اجازه دهید انتخاب کند کدام داده را از طریق عارضه نمایش دهد.
تنظیمات
کاربر میتواند در هر زمان که بخواهد مجوزهای برنامه Wear را در تنظیمات تغییر دهد. هنگامی که کاربر سعی می کند کاری انجام دهد که نیاز به مجوز دارد، ابتدا متد checkSelfPermission()
را فراخوانی کنید تا ببینید آیا برنامه مجوز انجام این عملیات را دارد یا خیر.
این بررسی را انجام دهید حتی اگر کاربر قبلاً مجوز را داده باشد، زیرا ممکن است کاربر متعاقباً آن را لغو کرده باشد.
![کاربر می تواند مجوزها را از طریق برنامه تنظیمات تغییر دهد.](https://developer.android.com/static/images/training/wear/for_settings.png?hl=fa)
برای شما توصیه می شود
- توجه: وقتی جاوا اسکریپت خاموش است، متن پیوند نمایش داده می شود
- درخواست مجوزهای زمان اجرا
- مجوزهای بلوتوث
- در پس زمینه ارتباط برقرار کنید