Wear OS'te izin isteme

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

Wear OS'te izin istemek, mobil uygulamalarda izin istemeye benzer. Bununla birlikte, birkaç ek kullanım alanı vardır. Bu dokümanda, Android izinlerinin işleyiş şeklini anladığınız varsayılmaktadır. İzinleri bilmiyorsanız Android'de izinlerin işleyiş şeklini inceleyin.

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

İzin senaryoları

Wear OS'te tehlikeli izinler isteğinde bulunurken 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ılabilen birden fazla izin ister.

Bu senaryoların tümü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ıdan bu izni isteyecek bir iletişim kutusu gösterir. Uygulamanızda, yalnızca belirli bir işlemi gerçekleştirmek için izinlerin neden gerekli olduğu kullanıcıya açık olduğunda izin isteyin.

Kullanıcılarınıza en iyi deneyimi sunduğunuzdan emin olmak için izin ilkelerini inceleyin ve shouldShowRequestPermissionRationale() simgesini kontrol etmeyi ve gerektiğinde ek bilgi 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ı.
Şekil 1. İzin ekranlarının art arda gösterilmesi.

Wear uygulaması telefon izni istiyor

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

Wear uygulaması, kullanıcıyı izin vermesi için telefona gönderir.
Şekil 2. İzin vermek için kullanıcıyı telefona yönlendirin.

Telefon uygulaması, giyilebilir cihaz izni istiyor

Kullanıcı bir telefon uygulamasındaysa ve uygulama, giyilebilir cihaz izni gerektiriyorsa (ör. telefonun bağlantısı kesilirse müziği önceden yüklemek için) telefon uygulaması, kullanıcıyı izni kabul etmesi için giyilebilir cihaza gönderir. Uygulamanın giyilebilir sürümünde, sistem izinleri iletişim kutusunu tetiklemek için requestPermissions() yöntemi kullanılır.

Telefon uygulaması, kullanıcıyı izin vermesi için giyilebilir cihaza gönderir.
Şekil 3. İzin vermek için kullanıcıyı giyilebilir cihaza yönlendirin.

Telefon uygulaması tek seferde birden fazla izin istiyor

Şekil 4. Tek bir istekte birden fazla izin istemek için tamamlayıcı cihaz profili 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 tamamlayıcı cihaz profillerini kullanabilir. Profil kullanmak, cihaz türüne özgü bir izin grubunun verilmesini tek bir adımda toplayarak kayıt sürecini basitleştirir.

Paketlenmiş izinler, cihaz bağlandıktan sonra tamamlayıcı uygulamaya verilir ve yalnızca cihaz ilişkiliyken geçerli olur. Uygulamayı sildiğinizde veya ilişkilendirmeyi kaldırdığınızda izinler de kaldırılır. Ayrıntılı bilgi için AssociationRequest.Builder.setDeviceProfile() başlıklı makaleyi inceleyin.

İzin isteği kalıpları

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

  • İzin belirli bir işlev için açıkça gerekliyse ancak uygulamanın çalışması için gerekli değilse bağlam içinde izin isteyin.

  • İzin istemenin nedeni açık olmadığında ve izin, uygulamanın çalışması için gerekli olmadığında kullanıcıyı bilgilendirin.

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

Bağlama uygun şekilde sorun

Belirli bir işlemi gerçekleştirmek için neden izin gerektiğinin kullanıcı tarafından anlaşılabildiği durumlarda izin isteyin. Kullanıcıların, kullanmak istedikleri özellikle olan bağlantısını anladıkları izinlere izin 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 hemen konum izni isteyebilir. Bunun nedeni, yakındaki yerleri aramak ile konum izni ihtiyacı arasında net bir ilişki olmasıdır. Bu ilişkinin açık olması, uygulamanın ek eğitim ekranları göstermesini gereksiz kılar.

Uygulama, açıkça gerekli olduğunda izin ister.
Şekil 5. Bağlama uygun bir şekilde izin isteyin.

Bağlama dayalı eğitim

Şekil 6'da bağlam içi eğitim örneği gösterilmektedir. Uygulamanın, zamanlayıcıyı başlatmak için izinlere ihtiyacı yoktur ancak satır içi eğitim amaçlı bir ipucu, etkinliğin bir kısmının (konum algılama) kilitli olduğunu gösterir. Kullanıcı işarete 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 sağlayıp sağlamayacağına 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ında bilgi gösterme işleminin nasıl yapıldığını inceleyebilirsiniz.

İzin gerektiğinde uygulama, iznin neden gerekli olduğunu açıklar.
Şekil 6. Bağlama uygun şekilde bilgi verin.

Reddetmeyle başa çıkma

Kullanıcı, istenen ve amaçlanan 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 kullanma izni vermemesi nedeniyle bir özelliğin kilitli olduğunu belirtmek için kilit simgesi kullanımı gösterilmektedir.

Kullanıcı izin vermeyi reddettiğinde, ilişkili özelliğin yanında bir kilit simgesi gösterilir.
Şekil 7. İzin verilmediği için bir özelliğin kilitli olduğunu 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 sunulur. Kullanıcı bu seçeneği belirlerse gelecekte bu izni vermenin tek yolu giyilebilir cihazın Ayarlar uygulamasına gitmektir.

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

İzin reddedilmesini yönetme hakkında daha fazla bilgi edinin.

Hizmetler için izinler

requestPermissions() yöntemini yalnızca bir etkinlik çağırabilir. Bu nedenle, kullanıcı bir hizmeti (ör. kadran üzerinden) kullanarak uygulamanızla etkileşimde bulunuyorsa hizmetin izin istemeden önce bir etkinlik açması gerekir. Bu etkinlikte, iznin neden gerekli olduğuyla ilgili ek eğitim verin.

Genel olarak kadran için izin istemeyin. Bunun yerine, bir 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 uygulamalarının izinlerini istedikleri zaman Ayarlar'dan değiştirebilir. Kullanıcı izin gerektiren bir işlem yapmaya çalıştığında, uygulamanın işlemi gerçekleştirme izni olup olmadığını görmek için önce checkSelfPermission() yöntemini çağırın.

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

Kullanıcı, ayarlar uygulamasını kullanarak izinleri değiştirebilir.
Şekil 9. Kullanıcı, Ayarlar uygulamasını kullanarak izinleri değiştirebilir.