Wear OS'te izin isteme

keywords: wear, permissions, collection_guideslandingwear image_path: images/training/wear/multiple_permissions.png

Wear OS'te izin isteme, mobil uygulamalarda izin istemeye benzer. Ancak birkaç ek kullanım alanı vardır. Bu belgede, Android izinlerinin işleyiş şeklini bildiğiniz varsayılmaktadır. Bu durumda Android'de izinlerin nasıl çalıştığını inceleyin.

Mobil uygulamalarda olduğu gibi, kullanıcı belirli işlevlere erişmek için Wear uygulamasına izin vermelidir. Wear uygulamalarınızda herhangi bir izin istemeden anlamlı işlevler sunun.

İzin senaryoları

Wear OS'te tehlikeli izinler isterken karşılaşabileceğiniz birkaç senaryo vardır:

  • Wear uygulaması, giyilebilir cihazda çalışan bir uygulama için izin ister.

  • Wear uygulaması, telefonda çalışan bir uygulama için izin ister.

  • Telefon uygulaması, giyilebilir cihazda çalışan bir uygulama için izin ister.

  • Telefon uygulaması, yalnızca giyilebilir cihaz bağlıyken kullanılabilecek birden fazla izin istiyor.

Bu senaryoların tamamını çalışan bir uygulamada görmek için GitHub'daki ExerciseSampleCompose örneğini inceleyin.

Aşağıdaki bölümlerde bu senaryoların her biri açıklanmaktadır. İzin isteme hakkında daha ayrıntılı bilgi için İzin isteği kalıpları bölümüne bakın.

Wear uygulaması, giyilebilir cihaz izni istiyor

Wear uygulaması, giyilebilir cihazda çalışan bir uygulama için izin istediğinde sistem, kullanıcıya bu izni isteyen bir iletişim kutusu gösterir. Uygulamanızda, kullanıcının belirli bir işlemi gerçekleştirmek için neden izinlere ihtiyaç duyulduğunu net bir şekilde anlayabildiği durumlarda izin isteyin.

Kullanıcılarınıza en iyi deneyimi sunduğunuzdan emin olmak için izin ilkelerini inceleyin ve gerektiğinde shouldShowRequestPermissionRationale() ek bilgiler sağlamayı unutmayın.

Bir uygulama veya kadran aynı anda birden fazla izin gerektiriyorsa izin istekleri birbiri ardına gösterilir.

Art arda birden fazla izin ekranı gösterilir.
1. şekil. İzin ekranları art arda gösteriliyor.

Wear uygulaması telefon izni istiyor

Wear uygulaması bir telefon izni istediğinde (ör. bir giyilebilir cihaz uygulaması, uygulamanın mobil sürümündeki fotoğraflara veya diğer hassas verilere erişmek istediğinde) Wear uygulaması, kullanıcının izni kabul etmesi için telefonu kullanmasını sağlamalıdır. Burada, telefon uygulaması bir etkinlik kullanarak kullanıcıya ek bilgiler sağlayabilir. Etkinliğe iki düğme ekleyin: biri izni vermek, diğeri ise izni reddetmek için.

Wear uygulaması, kullanıcıyı izin vermesi için telefona yönlendirir.
Şekil 2. Kullanıcıyı telefona yönlendirerek izin vermesini isteyin.

Telefon uygulaması, giyilebilir cihaz izni istiyor

Kullanıcı bir telefon uygulamasındayken uygulama, giyilebilir cihaz izni gerektiriyorsa (ör. telefonun bağlantısı kesilmesi durumunda müzik önceden yüklenmelidir) telefon uygulaması, kullanıcıyı izni kabul etmesi için giyilebilir cihaza yönlendirir. Uygulamanın giyilebilir cihaz sürümü, sistem izinleri iletişim kutusunu tetiklemek için requestPermissions() yöntemini kullanıyor.

Telefon uygulaması, kullanıcıyı izin vermek için giyilebilir cihaza yönlendirir.
3.şekil Kullanıcıyı izin vermek için giyilebilir cihaza yönlendirin.

Telefon uygulaması aynı anda birden fazla izin istiyor

Şekil 4. Tek bir istekte birden fazla izin istemek için eşlik eden cihaz profilini kullanan bir izin iletişim kutusu.

Android 12 (API düzeyi 31) ve sonraki sürümlerdeki iş ortağı uygulamaları, kol saatine bağlanırken yardımcı cihaz profillerini kullanabilir. Profil kullanmak, cihaza özel bir izin grubunun verilmesini tek bir adımda birleştirerek kaydolma sürecini basitleştirir.

Paketlenmiş izinler, cihaz bağlandıktan sonra yardımcı uygulamaya verilir ve yalnızca cihaz ilişkilendirildiği sürece geçerli olur. Uygulamanın silinmesi veya ilişkilendirmenin kaldırılması izinleri de kaldırır. Ayrıntılı bilgi için AssociationRequest.Builder.setDeviceProfile() başlıklı makaleyi inceleyin.

İzin isteği kalıpları

Kullanıcılardan izin istemek için farklı kalıplar vardır. Öncelik sırasına göre bunlar:

  • İzin, belirli bir işlev için açıkça gerekli olduğunda ancak uygulamanın genel olarak çalışması için gerekli olmadığında bağlam içinde izin isteyin.

  • İzin isteme nedeni açık olmadığında ve izin, uygulamanın genel olarak çalışması için gerekli olmadığında bağlam içinde bilgi verin.

Bu kalıplar aşağıdaki bölümlerde açıklanmıştır.

Bağlam içinde soru sorma

Kullanıcıya belirli bir işlemi gerçekleştirmek için neden izin gerektiği açıkça belirtildiğinde izin isteyin. Kullanıcıların, kullanmak istedikleri özellikle bağlantısını anladıkları izinleri verme olasılığı daha yüksektir.

Örneğin, bir uygulama yakındaki ilgi çekici yerleri göstermek için kullanıcının konumunu isteyebilir. Kullanıcı yakındaki yerleri aramak için dokunduğunda uygulama, yakındaki yerleri arama ile konum izni ihtiyacı arasında net bir ilişki olduğundan konum iznini hemen isteyebilir. Bu ilişkinin açık olması, uygulamanın ek eğitim ekranları göstermesini gereksiz kılar.

Uygulama, izin isteğini açıkça gerekli olduğunda gönderir.
5. şekil. Yeri geldiğinde izin isteyin.

Yeri geldiği zaman bilgi verin

Şekil 6'da bağlama dayalı eğitim örneği gösterilmektedir. Uygulama, zamanlayıcıyı başlatmak için izin gerektirmez ancak satır içi eğitici bir ipucu, etkinliğin bir bölümünün (konum algılama) kilitli olduğunu gösterir. Kullanıcı ipucuna dokunduğunda, konum algılamanın kilidini açmasına olanak tanıyan bir izin isteği ekranı gösterilir.

Uygulamanızın daha fazla bilgi verip vermeyeceğine karar vermesine yardımcı olmak için shouldShowRequestPermissionRationale() yöntemini kullanın. Daha fazla bilgi için Uygulama izinleri isteme başlıklı makaleyi inceleyin. Alternatif olarak, GitHub'daki hoparlör örnek uygulamasının bilgi gösterme işlemini nasıl yaptığını inceleyebilirsiniz.

İzin gerektiğinde uygulama, iznin neden gerekli olduğunu açıklar.
6.şekil Yeri geldiği zaman bilgi verin.

Reddedilmeyi ele alma

Kullanıcı, amaçlanan bir etkinlik için kritik olmayan bir izni reddederse etkinliğe devam etmesini engellemeyin. Etkinliğin belirli bölümleri reddedilen izin nedeniyle devre dışı bırakılırsa görsel ve uygulanabilir geri bildirim sağlayın.

Şekil 7'de, kullanıcının özelliği kullanma izni vermemesi nedeniyle özelliğin kilitlendiğini belirtmek için kilit simgesinin kullanıldığı gösterilmektedir.

Kullanıcı izni reddettiğinde, ilişkili özelliğin yanında bir kilit simgesi gösterilir.
7.şekil Bir özelliğin izin verilmediği için kilitlendiğini gösteren kilit simgesi.

Daha önce reddedilen bir giyilebilir cihaz izni iletişim kutusu ikinci kez göründüğünde Reddet, tekrar gösterme seçeneği eklenir. Kullanıcı bu seçeneği belirlerse gelecekte bu izni vermesinin tek yolu giyilebilir cihazın Ayarlar uygulamasına gitmektir.

Sistem, izin istemeyi durdurmayı teklif eder.
8. şekil. Kullanıcı, daha önce iki kez reddedilen bir izin isteğine Ayarlar'dan erişebilir.

İzin reddini ele alma hakkında daha fazla bilgi edinin.

Hizmetlerle ilgili izinler

Yalnızca bir etkinlik, requestPermissions() yöntemini çağırabilir. Bu nedenle, kullanıcı uygulamanızla bir hizmet kullanarak (ör. saat yüzü aracılığıyla) etkileşimde bulunursa hizmet, izni istemeden önce bir etkinlik açmalıdır. Bu etkinlikte, iznin neden gerekli olduğuyla ilgili ek bilgiler verin.

Genel olarak, kadran için izin istemeyin. Bunun yerine komplikasyon uygulayın ve kullanıcının komplikasyon aracılığıyla hangi verilerin gösterileceğini seçmesine izin verin.

Ayarlar

Kullanıcılar, Wear uygulamasının izinlerini Ayarlar'dan istedikleri zaman değiştirebilir. Kullanıcı, izin gerektiren bir işlem yapmaya çalıştığında önce checkSelfPermission() yöntemini çağırarak uygulamanın işlemi gerçekleştirme izni olup olmadığını kontrol edin.

Kullanıcı daha önce izni vermiş olsa bile bu kontrolü yapın. Çünkü kullanıcı, izni daha sonra iptal etmiş olabilir.

Kullanıcı, izinleri Ayarlar uygulamasından değiştirebilir.
9.şekil Kullanıcı, izinleri Ayarlar uygulamasını kullanarak değiştirebilir.
<0x0x0A>