Bağımsız Wear OS uygulamaları ve bağımsız olmayan Wear OS uygulamaları

Wear OS uygulamalarının telefondan bağımsız olarak çalışmasını öneririz. Böylece kullanıcılar, Android veya iOS telefona erişmeden saatinde görevleri tamamlayabilir. Saat uygulamanız telefon etkileşimi gerektiriyorsa Wear OS uygulamanızı bağımsız değil olarak işaretlemeniz ve kullanıcının telefon uygulamasına sahip olduğundan emin olmak için gerekli adımları uygulamanız gerekir.

Uygulamanızı planlayın

Android App Bundle'ı kullanarak aynı uygulama listesi altında her kullanıcının cihaz yapılandırması için optimize edilmiş Android Package Kit'leri (APK'lar) otomatik olarak oluşturabilirsiniz. Böylece, kullanıcılar yalnızca uygulamanızı çalıştırmak için ihtiyaç duydukları kodu ve kaynakları indirebilir.

Uygulamanızı Google Play Store'da dağıtılmak üzere ayarlama hakkında bilgi edinmek için Wear OS Uygulamalarını paketleme ve dağıtma ile Android App Bundle'ı kullanmaya başlama kılavuzumuzu inceleyin.

Yeni uygulamalar için hedef API düzeyi 30 veya daha yüksek olmalıdır. Daha fazla bilgi için Google Play'in hedef API düzeyi şartını karşılama konusuna bakın. Uygulamanızın en son platform sürümünde iyi bir şekilde çalıştığından emin olmak için targetSdkVersion değerini API düzeyi 30'a (Wear OS 3) ayarlayın.

Ağ istekleri ve yüksek bant genişliğine sahip ağ erişimi hakkında bilgi edinmek için Wear OS'te ağ erişimi ve senkronizasyonu başlıklı makaleyi inceleyin.

Bir uygulamayı Wear OS uygulaması olarak tanımlama

<uses-feature> etiketini, uygulamanızın Android manifest dosyasında tanımlamalısınız. Bunun bir saat uygulaması olduğunu belirtmek için aşağıdaki gibi bir giriş ekleyin:

  <manifest>
  ...
  <uses-feature android:name="android.hardware.type.watch" />
  ...
  </manifest>
  

Uygulamaları bağımsız veya bağımsız değil olarak tanımlama

Saat uygulamaları bağımsız veya bağımsız değildir:

  • Bağımsız: Kimlik doğrulama dahil olmak üzere temel özellikler için telefon uygulaması gerektirmeyen, tamamen bağımsız bir uygulama. Telefon uygulamaları (varsa) sadece isteğe bağlı özellikler sağlar.
  • Bağımsız olmayan: Kimlik doğrulama dahil olmak üzere temel özellikler için telefon veya başka bir cihazdaki uygulamanın kullanılmasını gerektiren bağımlı bir uygulama.

Wear OS uygulamanızda, uygulamanızın bağımsız olup olmadığını belirtmek için Android manifest dosyasında meta-data öğesi com.google.android.wearable.standalone değerini ayarlayın.

Saat uygulamanız tamamen bağımsız ve bağımsız bir uygulamaysa com.google.android.wearable.standalone değerini true olarak ayarlayarak bunu Google Play Store'a bildirin:

<application>
...
  <meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />
...
</application>

Saat uygulamanız bağımsız değilse ve temel özellikleri açısından başka bir uygulamayı kullanıyorsa com.google.android.wearable.standalone değerini false olarak ayarlayın. Bu simge, saat uygulaması için başka bir cihaz gerektiğini ancak Google Play Store'daki uygulamanızın tanıtımını etkilemediğini gösterir.

Not: com.google.android.wearable.standalone değeri false olsa bile saat uygulaması, telefon uygulaması yüklenmeden önce yüklenebilir. Bu nedenle, saat uygulamanız bu sayfada açıklandığı gibi, tamamlayıcı telefonda gerekli telefon uygulamasının eksik olduğunu algılarsa kullanıcıdan telefon uygulamasını yüklemesini isteyin.

Paylaşılan kod ve veri depolama

Kod, Wear OS uygulaması ile telefon uygulaması arasında paylaşılabilir. Örneğin, ağ iletişimi için ortak kod paylaşılan bir kitaplıkta yer alabilir.

İsteğe bağlı olarak, bir form faktörüne özel kod ayrı bir modülde olabilir.

Verileri yerel olarak depolamak için telefonda olduğu gibi standart Android depolama API'lerini kullanabilirsiniz. Örneğin, SharedPreferences API'lerini veya Oda kalıcılık kitaplığını kullanabilirsiniz.

Uygulamanızı başka bir cihazda algılama

Saat uygulamanız ve ilgili telefon uygulaması, diğer uygulamanın kullanılabilir olup olmadığını algılayabilir.

Telefon ve saat uygulamalarınız, eşlenen bir cihaza varlıklarını tanıtmak için CapabilityClient kullanabilir. Bunu statik veya dinamik olarak yapabilirler.

Bir uygulama, kullanıcının Wear OS ağındaki bir düğümde (ör. telefon, eşlenmiş saat veya bulut) bulunduğu zaman CapabilityClient diğer uygulamaların bunu algılamasına izin verir. Daha fazla bilgi için Reklam verme özellikleri bölümüne bakın.

Uygulamalarınızdan biri diğerini algılayamazsa kullanıcıdan etkilenen cihazda Play Store girişini açmasını isteyebilirsiniz. Bu çözüm, düzgün çalışması için tamamlayıcı telefon uygulamasının bulunmasını gerektiren saat uygulamalarına yönelik bir çözümdür.

Tüm telefonlar (ör. iPhone'lar) Play Store'u desteklemediğinden Play Store'un cihazda kullanılıp kullanılamadığını kontrol etmeniz gerekir.

Aşağıdaki bölümlerde, iki senaryo için en iyi uygulamalar açıklanmaktadır:

  • Bağımsız saat uygulamanız için telefon uygulamanız gerekir.
  • Telefon uygulamanız için bağımsız saat uygulamanız gerekir.

Horologist kapsamındaki Datalayer yardımcı kitaplıklarının nasıl kullanılacağını gösteren Datalayer yardımcıları örneğini de inceleyebilirsiniz. Bu yardımcılar, avuç içi cihaz ile Wear OS cihaz arasındaki bağlantıyı izlemenize olanak tanır. Aşağıdaki bölümde açıklanan sınıflar hakkında daha fazla bilgi için Wear OS API referansına göz atın. Bu referans, Wear OS uygulamanızın, tamamlayıcı telefonun Android mi yoksa iOS cihaz olup olmadığını kontrol etmesini sağlayan bir getPhoneDeviceType() yöntemi içeren PhoneTypeHelper sınıfıyla ilgili bilgileri de içerir.

Uygulamalarınızı algılamaya yönelik özellik adlarını belirtin

Saat veya telefon gibi her cihaz türüne karşılık gelen uygulama için res/values/wear.xml dosyasında özellik adı olarak benzersiz bir dize belirtin.

Örneğin, mobil modülünüzde wear.xml dosyası şunları içerebilir:

<resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_phone_app</item>
    </string-array>
</resources>

Wear OS modülünüzde, wear.xml dosyası özellik adı için aşağıdakiler gibi farklı bir değer içerir:

<resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_wear_app</item>
    </string-array>
</resources>

Daha fazla bilgi için Reklam verme özellikleri bölümüne bakın.

Uygulama algılama ve kol saatinden URL açma

Saat uygulamanız, kullanıcının tamamlayıcı telefonunda telefon uygulamanızın olup olmadığını algılayabilir. Şu adımları uygulayın:

  1. Telefon uygulamanızın eşlenen telefonda yüklü olup olmadığını kontrol etmek için CapabilityClient özelliğini kullanın. Daha fazla bilgi için GitHub'da Datalayer yardımcıları örneğine bakın.
  2. Telefon uygulamanız telefonda yüklü değilse telefonun türünü kontrol etmek için PhoneDeviceType.getPhoneDeviceType() yöntemini kullanın. Ayrıntılar için aşağıdaki bölüme bakın.
  3. PhoneDeviceType.DEVICE_TYPE_ANDROID döndürülürse telefon, Android telefondur. Telefonunuzda Play Store'u açmak için Wear OS cihazda RemoteActivityHelper.startRemoteActivity() numaralı telefonu arayın. Telefon uygulamanızın pazar URI'sini kullanın. Bu URI, Wear uygulamanızın URI'sından farklı olabilir. Örneğin, şunun gibi bir pazar URI'si kullanın: market://details?id=com.example.android.wearable.wear.finddevices.
  4. PhoneDeviceType.DEVICE_TYPE_IOS döndürülürse telefon, Play Store bulunmayan bir iOS telefondur. Wear OS cihazda RemoteActivityHelper.startRemoteActivity() numaralı telefonu arayarak iPhone'da App Store'u açın. Uygulamanızın iTunes URL'sini belirtebilirsiniz (örneğin, https://itunes.apple.com/us/app/yourappname).

    Wear OS'ten, telefon uygulamanızın bir iOS cihazda yüklü olup olmadığını programlı bir şekilde belirleyemezsiniz. En iyi uygulama olarak kullanıcıya App Store'un açılmasını manuel olarak tetikleyecek bir mekanizma sağlayın.

Not: Telefonda herhangi bir URL'nin saatten açılacağını ve herhangi bir telefon uygulamasının gerekmediğini belirtmek için daha önce açıklanan RemoteActivityHelper API'sini kullanın.

Eşlenen telefonun türünü algılamaya ilişkin ayrıntılar

Saatin eşlendiği telefonun türünü kontrol etmek için getPhoneDeviceType() yöntemini kullanan bir snippet'i burada görebilirsiniz:

Kotlin

var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)

Java

int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);

getPhoneDeviceType() yöntemi tarafından döndürülen değer şunlardan biridir:

Döndürülen değer Description
DEVICE_TYPE_ANDROID Tamamlayıcı telefon bir Android cihazdır.
DEVICE_TYPE_IOS Tamamlayıcı telefon bir iOS cihazdır.
DEVICE_TYPE_UNKNOWN Tamamlayıcı telefon bilinmeyen bir cihaz.
DEVICE_TYPE_ERROR Eşlenen telefonun türü belirlenirken hata oluştu. Daha sonra başka bir kontrol yapılmalıdır.

Android telefondan başlatılan uygulama algılama özelliği

Android telefonunuz, kullanıcıların Wear OS cihazlarında saat uygulamanızın yüklü olup olmadığını algılayabilir. Şu adımları uygulayın:

  1. NodeClient kullanarak kullanıcının telefonuna bağlı tüm kol saatlerini bulun. Daha fazla bilgi için GitHub'da Datalayer yardımcıları örneğine bakın.
  2. CapabilityClient yardımıyla uygulamanızın hangi kullanıcının kol saatinde yüklü olduğunu kontrol edin.
  3. Uygulamanız kullanıcıların tüm kol saatlerinde yüklü değilse RemoteActivityHelper.startRemoteActivity() yöntemini kullanarak kullanıcının telefondan diğer Wear OS cihazlarında Play Store'u açmasına izin verin. Wear OS uygulaması için pazar URI'sını kullanın. Bu, telefon uygulamanızın URI'sından farklı olabilir. Örneğin, market://details?id=com.example.android.wearable.wear.finddevices gibi bir pazar URI'si kullanın.

iPhone'larla eşlenmiş kol saatleri için konum verileri

iPhone'larla eşlenmiş kol saatlerinde, saatteki konum verilerini almak için Çok Kaynaklı Konum Sağlayıcı'yı (FLP) kullanın. Daha fazla bilgi için Wear OS'te konumu algılama konusuna bakın.

Tamamlayıcı telefon kullanılabiliyorsa FLP, konum verileri için tamamlayıcı telefonu kullanır.

Yalnızca gerekli verileri edinin

Genellikle, internetten veri alırken yalnızca gerekli verileri alırsınız. Aksi takdirde, gereksiz gecikmelere, bellek kullanımına ve pil kullanımına yol açabilir.

Bir saat Bluetooth LE bağlantısı üzerinden bağlandığında uygulamanızın saate bağlı olarak saniyede yalnızca 4 kilobaytlık bant genişliğine erişimi olabilir. Bu nedenle, aşağıdaki adımları uygulamanız önerilir:

  • Yalnızca telefon uygulaması için gereken ek veriler için ağ isteklerinizi ve yanıtlarınızı denetleyin.
  • Büyük resimleri ağ üzerinden saatinize göndermeden önce küçültün.

Yüksek bant genişliğine sahip ağın gerekli olduğu durumlar için Yüksek bant genişliğinde ağ erişimi bölümüne bakın.

Ek kod örnekleri

Datalayer yardımcıları örneği, bu sayfada ele alınan API'lerin kullanımını daha ayrıntılı bir şekilde göstermektedir.