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

Kullanıcıların Android veya iOS telefona erişmeden kol saatinde görevleri tamamlayabilmesi için Wear OS uygulamalarının telefondan bağımsız çalışmasını öneririz. Kol saati uygulamanızın telefon etkileşimi gerektirmesi durumunda Wear OS uygulamanızı bağımsız olmayan olarak işaretlemeniz ve kullanıcının telefon uygulamasını kullanabildiğinden emin olmak için gerekli adımları atmanız gerekir.

Uygulamanızı planlama

Aynı uygulama listelemesi altında her kullanıcının cihaz yapılandırması için optimize edilmiş Android Paket Kitleri (APK'lar) otomatik olarak oluşturmak üzere Android App Bundle'ı kullanabilirsiniz. Bu sayede kullanıcılar, uygulamanızı çalıştırmak için yalnızca gereken kod ve kaynakları indirebilir.

Uygulamanızı Google Play Store üzerinden dağıtılacak şekilde ayarlama hakkında bilgi edinmek için Wear OS uygulamalarını paketleme ve dağıtma başlıklı makaleyi ve Android App Bundles'ı kullanmaya başlama kılavuzunu 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 başlıklı makaleyi inceleyin. Uygulamanızın en yeni platform sürümünde iyi çalıştığından emin olmak için targetSdkVersion değerini API düzeyi 30 (Wear OS 3) olarak 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 senkronizasyon başlıklı makaleyi inceleyin.

Bir uygulamayı Wear OS uygulaması olarak tanımlama

Uygulamanızın Android manifest dosyasında <uses-feature> etiketini tanımlamanız gerekir. Bunun bir kol saati uygulaması olduğunu belirtmek için aşağıdakine benzer bir giriş ekleyin:

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

Bir uygulamayı bağımsız veya bağımsız olmayan olarak tanımlama

Kol saati uygulamaları bağımsız veya bağımsız olmayan olarak kabul edilir:

  • Bağımsız: Temel özellikler için telefon uygulaması gerektirmeyen, tamamen bağımsız bir uygulama. "Telefonda aç" istemleri kabul edilebilir olsa da uygulama, bağlı bir telefona ihtiyaç duymadan kullanıcıların bir uygulama işlevini tamamlaması için alternatif yollar (ör. kısa bağlantı veya QR kodu) sunmalıdır.
  • Bağımsız olmayan: Temel özellikler için telefonda veya başka bir cihazda uygulama gerektiren bağımlı uygulama. Bu seçenek, uygulamaların kimlik doğrulama gibi temel bir uygulama işlevini tamamlamak için QR kodu veya kısa bağlantı gibi alternatif bir yöntem sağlayamadığı durumlarda en iyi seçenektir.

Not: Bağımsız olmayan uygulamalarda bile kullanıcılar Wear OS uygulamasını mobil uygulamadan önce yükleyebilir. Bu nedenle, Wear OS uygulamanız yakındaki bir elde taşınabilir cihazda gerekli tamamlayıcı uygulamanın olmadığını algılarsa kullanıcıyı tamamlayıcı uygulamayı yüklemeye yönlendirin.

Google, uygulama sunma sırasında uygulamanın bağımsız durumunun doğruluğunu onaylar. Bu değer, Play Store'daki uygulamaların görünürlüğünü etkiler. Bu durum, elde taşınır cihazlarla eşlenmemiş Wear OS cihazlar gibi bağlantısız cihazlarda geçerlidir. Bağımsız olmayan uygulamalar ve geliştiricilerin yanlışlıkla "bağımsız" olarak belirlediği uygulamalar, bu bağlantısız cihazlardaki kullanıcılar tarafından kullanılamaz.

Wear OS uygulamanızda, uygulamanızın bağımsız mı yoksa bağımsız olmayan bir uygulama mı olduğunu bildirmek için Android manifest dosyasındaki meta-data öğesinin com.google.android.wearable.standalone değerini ayarlayın.

Kol saati uygulamanız tamamen bağımsız bir uygulama ise com.google.android.wearable.standalone değerini true olarak ayarlayarak bunu Google Play Store'a bildirin:

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

Kol saati uygulamanız bağımsız değilse ve temel özellikler için başka bir uygulamaya bağlıysa, com.google.android.wearable.standalone değerini false olarak ayarlayın. Bu, kol saati uygulamasının başka bir cihaz gerektirdiğini gösterir ancak Google Play Store'daki uygulama tanıtımınızı etkilemez.

Not: com.google.android.wearable.standalone değeri false olsa bile kol saati uygulaması, telefon uygulaması yüklenmeden önce yüklenebilir. Bu nedenle, kol saati uygulamanız bu sayfada açıklandığı gibi tamamlayıcı telefonda gerekli telefon uygulamasının olmadığını algılarsa kullanıcıya telefon uygulamasını yüklemesini istemelidir.

Paylaşılan kod ve veri depolama

Kod, Wear OS uygulaması ile telefon uygulaması arasında paylaşılabilir. Örneğin, ağ oluşturmayla ilgili ortak kod, paylaşılan bir kitaplıkta olabilir.

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

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

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

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

Telefon ve kol saati uygulamalarınız, eşlenmiş bir cihaza varlıklarını duyurmak için CapabilityClient kullanabilir. Bu işlemi statik veya dinamik olarak yapabilirler.

Bir uygulama, kullanıcının Wear OS ağındaki bir düğümde (ör. telefonda, eşlenmiş kol saatinde veya bulutta) bulunduğunda CapabilityClient, diğer uygulamaların bunu algılamasına olanak tanır. Daha fazla bilgi için Reklamcılık özellikleri başlıklı makaleyi inceleyin.

Uygulamalarınızdan biri diğerini algılayamıyorsa kullanıcıdan etkilenen cihazda Play Store girişini açmasını isteyebilirsiniz. Bu, düzgün çalışmak için yardımcı telefon uygulamasının varlığını gerektiren kol saati uygulamaları için bir çözümdür.

Play Store'un cihazda kullanılabilir olup olmadığını kontrol etmeniz gerekir. Örneğin, iPhone gibi bazı telefonlar Play Store'u desteklemez.

Aşağıdaki bölümlerde iki senaryoyla ilgili en iyi uygulamalar açıklanmaktadır:

  • Bağımsız kol saati uygulamanızın telefon uygulamanıza ihtiyacı var.
  • Telefon uygulamanızın bağımsız kol saati uygulamanıza ihtiyacı var.

Horologist'in bir parçası olan 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, elde tutulan bir 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 bakın. Bu referans, PhoneTypeHelper sınıfı hakkında da bilgi içerir. Bu sınıf, Wear OS uygulamanızın eşlik eden telefonun Android mi yoksa iOS cihaz mı olduğunu kontrol etmesine olanak tanıyan bir getPhoneDeviceType() yöntemi içerir.

Uygulamalarınızı algılamak için özellik adlarını belirtin

Her cihaz türüne (kol saati veya telefon) karşılık gelen uygulama için res/values/wear.xml dosyasında özellik adı için benzersiz bir dize belirtin.

Örneğin, mobil modülünüzdeki 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üzdeki wear.xml dosyası, özellik adı için aşağıdaki gibi farklı bir değer içeriyor:

<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 başlıklı makaleyi inceleyin.

Uygulama algılama ve kol saatinden URL açma

Kol saati uygulamanız, kullanıcının eşlik eden telefonunda telefon uygulamanızın olup olmadığını algılayabilir. Şu adımları uygulayın:

  1. Telefon uygulamanızın eşlenmiş telefonda yüklü olup olmadığını kontrol etmek için CapabilityClient simgesini kullanın. Daha fazla bilgi için GitHub'daki 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. If PhoneDeviceType.DEVICE_TYPE_ANDROID is returned, the phone is an Android phone. Telefonunuzda Play Store'u açmak için Wear OS cihazda RemoteActivityHelper.startRemoteActivity() simgesine dokunun. Telefon uygulamanızın market URI'sini kullanın. Bu URI, Wear uygulamanızın URI'sinden farklı olabilir. Örneğin, aşağıdaki gibi bir market URI'si kullanın: market://details?id=com.example.android.wearable.wear.finddevices.
  4. If PhoneDeviceType.DEVICE_TYPE_IOS is returned, the phone is an iOS phone with no Play Store available. Wear OS cihazda RemoteActivityHelper.startRemoteActivity() tuşuna basarak iPhone'da App Store'u açın. Uygulamanızın iTunes URL'sini (ör. https://itunes.apple.com/us/app/yourappname) belirtebilirsiniz.

    Wear OS'te, telefon uygulamanızın bir iOS cihaza yüklenip yüklenmediğini programatik olarak belirleyemezsiniz. En iyi uygulama olarak, kullanıcının App Store'un açılmasını manuel olarak tetikleyebileceği bir mekanizma sağlayın.

Not: Daha önce açıklanan RemoteActivityHelper API'sini kullanarak herhangi bir URL'nin telefonda saatten açılacağını ve telefon uygulaması gerekmeyeceğini belirtebilirsiniz.

Eşlenen telefonun türünü algılamayla ilgili ayrıntılar

Aşağıda, saatin eşlendiği telefonun türünü kontrol etmek için getPhoneDeviceType() yöntemini kullanan bir snippet verilmiştir:

var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)

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

Döndürülen değer Açıklama
DEVICE_TYPE_ANDROID Yardımcı telefon bir Android cihaz olmalıdır.
DEVICE_TYPE_IOS Yardımcı telefon bir iOS cihaz olmalıdır.
DEVICE_TYPE_UNKNOWN Eşlik eden telefon bilinmeyen bir cihazdır.
DEVICE_TYPE_ERROR Eşlenen telefonun türü belirlenirken bir hata oluştu. Daha sonra tekrar kontrol edilmelidir.

Android telefonda uygulama algılama başlatma

Android telefonunuz, kullanıcının Wear OS cihazlarında kol saati uygulamanızın olup olmadığını algılayabilir. Şu adımları uygulayın:

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

iPhone'larla eşlenen kol saatlerinin konum verileri

iPhone'larla eşlenmiş saatlerde, saatte konum verilerini almak için Fused Location Provider'ı (FLP) kullanın. Daha fazla bilgi için Wear OS'te konumu algılama başlıklı makaleyi inceleyin.

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

Yalnızca gerekli verileri alın

Genel olarak internetten veri alırken yalnızca gerekli verileri alın. Aksi takdirde gereksiz gecikmeye, bellek ve pil kullanımına neden olabilirsiniz.

Bir kol saati Bluetooth LE bağlantısı üzerinden bağlandığında, kol saatine bağlı olarak uygulamanız saniyede yalnızca 4 kilobayt bant genişliğine erişebilir. Bu nedenle, aşağıdaki adımların uygulanması önerilir:

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

Yüksek bant genişliğine sahip bir ağın gerektiği durumlarda Yüksek bant genişliğine sahip ağ erişimi başlıklı makaleyi inceleyin.

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österir.