Zalecamy, aby aplikacje na Wear OS działały niezależnie od telefonu, dzięki czemu użytkownicy mogą wykonywać zadania na zegarku bez dostępu do telefonu z Androidem lub iOS. Jeśli aplikacja na zegarek wymaga interakcji z telefonem, musisz oznaczyć aplikację na Wear OS jako niesamodzielną i podjąć działania, aby użytkownik miał dostęp do aplikacji na telefon.
Planowanie aplikacji
Możesz użyć pakietu Android App Bundle , aby automatycznie generować zoptymalizowane pakiety Android Package Kit (APK) dla każdej konfiguracji urządzenia użytkownika w ramach tej samej strony aplikacji. Dzięki temu użytkownicy mogą pobierać tylko kod i zasoby potrzebne do uruchomienia Twojej aplikacji.
Informacje o konfigurowaniu aplikacji do rozpowszechniania w Sklepie Google Play znajdziesz w artykułach Pakowanie i rozpowszechnianie aplikacji na Wear OS oraz Wprowadzenie do pakietów Android App Bundle.
W przypadku nowych aplikacji docelowy poziom interfejsu API musi wynosić co najmniej 34. Więcej informacji znajdziesz w artykule Wymagania Google Play dotyczące docelowego poziomu interfejsu API. Kierowanie na najnowszy dostępny poziom interfejsu API pomaga zapewnić, że aplikacja będzie dobrze działać w obecnych wersjach platformy.
Informacje o żądaniach sieciowych i dostępie do sieci o dużej przepustowości znajdziesz w artykule Dostęp do sieci i synchronizacja na Wear OS.
Określanie aplikacji jako aplikacji na Wear OS
W pliku manifestu Androida aplikacji musisz zdefiniować tag
<uses-feature>.
Aby wskazać, że jest to aplikacja na zegarek, dodaj wpis taki jak ten:
<uses-feature android:name="android.hardware.type.watch" />
Określanie aplikacji jako samodzielnej lub niesamodzielnej
Aplikacja na zegarek jest uważana za samodzielną lub niesamodzielną:
- Samodzielna: całkowicie niezależna aplikacja, która do działania podstawowych funkcji nie wymaga aplikacji na telefon. Chociaż akceptowalne są prośby o otwarcie aplikacji na telefonie, aplikacja musi zapewniać użytkownikom alternatywne sposoby wykonywania funkcji aplikacji – np. krótki link lub kod QR – bez konieczności korzystania z telefonu połączonego w tetheringu.
- Niesamodzielna: zależna aplikacja, która do działania podstawowych funkcji wymaga aplikacji na telefon lub inne urządzenie. Ta opcja jest najlepsza w przypadku aplikacji, które nie mogą łatwo zapewnić alternatywnego sposobu – np. kodu QR lub krótkiego linku – na wykonanie podstawowej funkcji aplikacji, takiej jak uwierzytelnianie.
Uwaga: nawet w przypadku aplikacji niesamodzielnych użytkownicy mogą zainstalować aplikację na Wear OS przed aplikacją mobilną. Jeśli więc aplikacja na Wear OS wykryje, że na pobliskim urządzeniu przenośnym nie ma wymaganej aplikacji towarzyszącej, poproś użytkownika o jej zainstalowanie.
Podczas wyświetlania aplikacji Google sprawdza, czy jej stan samodzielności jest prawidłowy. Ta wartość wpływa na widoczność aplikacji w Sklepie Play na urządzeniach niepołączonych w tetheringu, takich jak urządzenia z Wear OS, które nie są sparowane z urządzeniami przenośnymi. Aplikacje niesamodzielne – a także aplikacje, które deweloperzy nieprawidłowo oznaczyli jako "samodzielne" – nie są dostępne dla użytkowników na tych urządzeniach niepołączonych w tetheringu.
Aby zadeklarować, czy aplikacja jest samodzielna czy niesamodzielna, w pliku manifestu Androida aplikacji na Wear OS ustaw wartość elementu
meta-data com.google.android.wearable.standalone.
Jeśli aplikacja na zegarek jest całkowicie niezależną, samodzielną aplikacją, wskaż
to w Sklepie Google Play, ustawiając
wartość com.google.android.wearable.standalone na true:
<meta-data android:name="com.google.android.wearable.standalone" android:value="true" />
Jeśli aplikacja na zegarek jest niesamodzielna i do działania podstawowych funkcji wymaga innej aplikacji,
ustaw wartość com.google.android.wearable.standalone na
false. Oznacza to, że aplikacja na zegarek wymaga innego urządzenia, ale nie wpływa na reklamę aplikacji w Sklepie Google Play.
Uwaga:
nawet jeśli wartość com.google.android.wearable.standalone to
false, aplikację na zegarek
można zainstalować przed aplikacją na telefon.
Jeśli więc aplikacja na zegarek
wykryje, że na powiązanym telefonie
nie ma wymaganej aplikacji na telefon, poproś użytkownika o jej zainstalowanie.
Wspólny kod i przechowywanie danych
Kod można udostępniać między aplikacją na Wear OS a aplikacją na telefon. Na przykład wspólny kod do obsługi sieci może znajdować się w bibliotece udostępnionej.
Opcjonalnie kod który jest specyficzny dla danego formatu, może znajdować się w osobnym module.
Do lokalnego przechowywania danych możesz używać standardowych interfejsów API Androida, tak jak na telefonie. Możesz używać DataStore do przechowywania par klucz-wartość i obiektów typowanych lub biblioteki trwałości Room.
Wykrywanie aplikacji na innym urządzeniu
Aplikacja na zegarek i odpowiadająca jej aplikacja na telefon mogą wykrywać, czy druga aplikacja jest dostępna.
Aplikacje na telefon i zegarek mogą używać interfejsu
CapabilityClient do informowania o swojej obecności
na sparowanym urządzeniu. Mogą to robić statycznie lub dynamicznie.
Gdy aplikacja
znajduje się w węźle w sieci Wear OS użytkownika, np. na telefonie, sparowanym zegarku lub
w chmurze, CapabilityClient umożliwia innym
aplikacjom jej wykrycie. Więcej informacji znajdziesz w artykule
Informowanie o możliwościach.
Jeśli jedna z Twoich aplikacji nie może wykryć drugiej, możesz poprosić użytkownika o otwarcie strony aplikacji w Sklepie Play na urządzeniu, którego dotyczy problem. Jest to rozwiązanie dla aplikacji na zegarek, które do prawidłowego działania wymagają obecności powiązanego telefonu.
Musisz sprawdzić, czy Sklep Play jest dostępny na urządzeniu, ponieważ nie wszystkie telefony – np. iPhone'y – obsługują Sklep Play.
W sekcjach poniżej opisujemy sprawdzone metody w 2 scenariuszach:
- Samodzielna aplikacja na zegarek wymaga aplikacji na telefon.
- Aplikacja na telefon wymaga samodzielnej aplikacji na zegarek.
Możesz też zapoznać się z
przykładem Datalayer helpers, który pokazuje, jak używać
bibliotek Datalayer helpers, które są częścią
Horologist. Te biblioteki pomocnicze umożliwiają monitorowanie połączenia między urządzeniem przenośnym
urządzeniem z Wear OS.
Więcej informacji
o klasach opisanych w sekcji poniżej znajdziesz w
dokumentacji interfejsu Wear OS API.
Dokumentacja ta zawiera też informacje o
PhoneTypeHelper klasie, która zawiera metodę
getPhoneDeviceType(), umożliwiającą aplikacji na
Wear OS sprawdzenie, czy powiązany telefon jest urządzeniem z Androidem czy iOS.
Określanie nazw możliwości do wykrywania aplikacji
W przypadku aplikacji odpowiadającej każdemu typowi urządzenia – zegarkowi lub telefonowi – określ unikalny ciąg znaków jako nazwę możliwości w pliku res/values/wear.xml.
Na przykład w module mobilnym plik wear.xml
może zawierać te informacje:
<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>
W module Wear OS plik wear.xml zawiera
inną wartość nazwy możliwości,
np. taką:
<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>
Więcej informacji znajdziesz w artykule Informowanie o możliwościach.
Wykrywanie aplikacji i otwieranie adresu URL z zegarka
Aplikacja na zegarek może wykryć, czy na powiązanym telefonie użytkownika jest zainstalowana Twoja aplikacja na telefon. Aby to zrobić:
-
Użyj interfejsu
CapabilityClientaby sprawdzić, czy aplikacja na telefon jest zainstalowana na sparowanym telefonie. Więcej informacji znajdziesz w przykładzie Datalayer helpers w GitHubie. -
Jeśli aplikacja na telefon nie jest zainstalowana na telefonie, użyj metody
PhoneDeviceType.getPhoneDeviceType(), aby sprawdzić typ telefonu. Szczegóły znajdziesz w sekcji poniżej. -
Jeśli
PhoneDeviceType.DEVICE_TYPE_ANDROIDzostanie zwrócona, oznacza to, że telefon jest urządzeniem z Androidem. WywołajRemoteActivityHelper.startRemoteActivity()na urządzeniu z Wear OS, aby otworzyć Sklep Play na telefonie. Użyj identyfikatora URI rynku dla aplikacji na telefon który może się różnić od identyfikatora URI aplikacji na Wear. Na przykład użyj identyfikatora URI rynku takiego jak:market://details?id=com.example.android.wearable.wear.finddevices. -
Jeśli
PhoneDeviceType.DEVICE_TYPE_IOSzostanie zwrócona wartość, oznacza to, że telefon jest urządzeniem z iOS, na którym nie jest dostępny Sklep Play. Otwórz App Store na iPhonie wywołującRemoteActivityHelper.startRemoteActivity()na urządzeniu z Wear OS. Możesz określić adres URL iTunes swojej aplikacji, np.https://itunes.apple.com/us/app/yourappname.Z poziomu Wear OS nie możesz programowo określić, czy aplikacja na telefon jest zainstalowana na urządzeniu z iOS. Zalecamy, aby zapewnić użytkownikowi mechanizm ręcznego otwierania App Store.
Uwaga: aby określić, że dowolny adres URL ma być otwierany na telefonie z zegarka i że nie jest wymagana aplikacja na telefon, użyj interfejsu RemoteActivityHelper API zgodnie z opisem w poprzedniej sekcji.
Szczegóły wykrywania typu sparowanego telefonu
Oto fragment kodu, który używa metody getPhoneDeviceType() do
sprawdzenia typu telefonu, z którym sparowany jest zegarek:
var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)
Wartość zwracana przez metodę getPhoneDeviceType()
jest jedną z tych:
| Zwracana wartość | Opis |
|---|---|
DEVICE_TYPE_ANDROID
|
Powiązany telefon to urządzenie z Androidem. |
DEVICE_TYPE_IOS
|
Powiązany telefon to urządzenie z iOS. |
DEVICE_TYPE_UNKNOWN
|
Powiązany telefon to nieokreślone urządzenie. |
DEVICE_TYPE_ERROR
|
Podczas określania typu sparowanego telefonu wystąpił błąd. Należy sprawdzić to później. |
Wykrywanie aplikacji z poziomu telefonu z Androidem
Telefon z Androidem może wykryć, czy na urządzeniach z Wear OS użytkownika jest zainstalowana Twoja aplikacja na zegarek. Aby to zrobić:
-
Za pomocą interfejsu
NodeClientznajdź wszystkie zegarki połączone z telefonem użytkownika. Więcej informacji znajdziesz w przykładzie Datalayer helpers w GitHubie. -
Za pomocą interfejsu
CapabilityClient, sprawdź, na których zegarkach użytkownika jest zainstalowana Twoja aplikacja. -
Jeśli aplikacja nie jest zainstalowana na wszystkich zegarkach użytkownika, pozwól mu
otworzyć Sklep Play na pozostałych urządzeniach z Wear OS z poziomu telefonu za pomocą
metody
RemoteActivityHelper.startRemoteActivity(). Użyj identyfikatora URI rynku dla aplikacji na Wear OS, który może się różnić od identyfikatora URI aplikacji na telefon. Na przykład użyj identyfikatora URI rynku takiego jak:market://details?id=com.example.android.wearable.wear.finddevices.
Dane o lokalizacji zegarków sparowanych z iPhone'ami
W przypadku zegarków sparowanych z iPhone'ami użyj dostawcy uśrednionej lokalizacji (FLP), aby uzyskać dane o lokalizacji na zegarku. Więcej informacji znajdziesz w artykule Wykrywanie lokalizacji na Wear OS.
Jeśli powiązany telefon jest dostępny, FLP używa go do uzyskiwania danych o lokalizacji.
Pobieranie tylko niezbędnych danych
Zasadniczo podczas pobierania danych z internetu pobieraj tylko niezbędne dane. W przeciwnym razie możesz wprowadzić niepotrzebne opóźnienia, zużycie pamięci użycie i baterii.
Gdy zegarek jest połączony przez Bluetooth LE, aplikacja może mieć dostęp do przepustowości wynoszącej tylko 4 kilobajty na sekundę, w zależności od zegarka. Dlatego zalecamy wykonanie tych czynności:
- Sprawdź żądania i odpowiedzi sieciowe pod kątem dodatkowych danych, które są potrzebne tylko w aplikacji na telefon.
- Zmniejsz duże obrazy przed wysłaniem ich przez sieć na zegarek.
W przypadkach, gdy potrzebna jest sieć o dużej przepustowości, zapoznaj się z artykułem Dostęp do sieci o dużej przepustowości.
Dodatkowe przykłady kodu
Przykład Datalayer helpers dodatkowo pokazuje, jak używać interfejsów API opisanych na tej stronie.