Zalecamy, aby aplikacje na Wear OS działały niezależnie od telefonu, dzięki czemu użytkownicy będą mogli wykonywać zadania na zegarku bez dostępu do telefonu z Androidem lub iOS. Jeśli aplikacja na zegarek wymaga użycia telefonu, 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 aplikacji na Androida (APK) dla każdej konfiguracji urządzenia użytkownika w ramach tej samej karty aplikacji. Dzięki temu użytkownicy mogą pobierać tylko kod i zasoby potrzebne do uruchomienia aplikacji.
Informacje o konfigurowaniu aplikacji do rozpowszechniania w Sklepie Google Play znajdziesz w artykułach Pakowanie i rozpowszechnianie aplikacji na Wear OS oraz w przewodniku dla początkujących dotyczącym pakietów Android App Bundle.
W przypadku nowych aplikacji docelowy poziom interfejsu API musi wynosić co najmniej 30. Więcej informacji znajdziesz w artykule Spełnianie wymagań Google Play dotyczących docelowego poziomu interfejsu API. Ustaw wartość targetSdkVersion na poziom API 30 (Wear OS 3), aby mieć pewność, że aplikacja będzie działać prawidłowo na najnowszej wersji platformy.
Więcej informacji o żądaniach sieciowych i dostępie do sieci o dużej przepustowości znajdziesz w artykule Dostęp do sieci i synchronizacja na zegarku z Wear OS.
Określanie aplikacji jako aplikacji na Wear OS
Musisz zdefiniować tag
<uses-feature> w pliku manifestu na Androida.
Aby wskazać, że jest to aplikacja na zegarek, dodaj wpis podobny do tego:
<uses-feature android:name="android.hardware.type.watch" />
Określanie, czy aplikacja jest samodzielna
Aplikacja na zegarek może być samodzielna lub niesamodzielna:
- Samodzielna: całkowicie niezależna aplikacja, która nie wymaga aplikacji na telefon do działania podstawowych funkcji. Chociaż prośby o otwarcie aplikacji na telefonie są dopuszczalne, aplikacja musi udostępniać użytkownikom alternatywne sposoby korzystania z jej funkcji, takie jak krótki link lub kod QR, bez konieczności używania połączonego telefonu.
- Niesamodzielna: aplikacja zależna, która do działania podstawowych funkcji wymaga aplikacji na telefonie lub innym urządzeniu. Ta opcja jest najlepsza w przypadku aplikacji, które nie mogą łatwo udostępnić 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 brakuje wymaganej aplikacji towarzyszącej, poproś użytkownika o jej zainstalowanie.
Google weryfikuje dokładność stanu samodzielnego aplikacji podczas jej wyświetlania. Ta wartość wpływa na widoczność aplikacji w Sklepie Play na urządzeniach bezprzewodowych, takich jak urządzenia z Wear OS, które nie są sparowane z urządzeniami przenośnymi. Aplikacje, które nie są samodzielne, oraz aplikacje, które deweloperzy nieprawidłowo oznaczyli jako „samodzielne”, nie są dostępne dla użytkowników tych urządzeń bez połączenia z telefonem.
W aplikacji na Wear OS ustaw wartość elementu
meta-data com.google.android.wearable.standalone w pliku manifestu Androida, aby zadeklarować, czy aplikacja jest samodzielna czy nie.
Jeśli aplikacja na zegarek jest całkowicie niezależną, samodzielną aplikacją, poinformuj o tym Sklep 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 nie jest samodzielna i zależy od innej aplikacji w zakresie funkcji podstawowych, ustaw wartość com.google.android.wearable.standalone na false. Oznacza to, że aplikacja na zegarek wymaga innego urządzenia, ale nie wpływa to na promocję aplikacji w Google Play.
Uwaga:
nawet jeśli wartość com.google.android.wearable.standalone to
false, aplikację na zegarek
można zainstalować przed zainstalowaniem aplikacji na telefon.
Dlatego jeśli aplikacja na zegarek wykryje, że na telefonie towarzyszącym brakuje niezbędnej aplikacji na telefon, zgodnie z opisem na tej stronie, poproś użytkownika o zainstalowanie aplikacji na telefon.
Wspólne przechowywanie kodu i danych
Kod może być udostępniany 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 specyficzny dla danego formatu może znajdować się w osobnym module.
Do przechowywania danych lokalnie możesz używać standardowych interfejsów Androida, tak jak na telefonie. Możesz na przykład użyć interfejsów API SharedPreferences lub biblioteki trwałości Room.
Wykrywanie aplikacji na innym urządzeniu
Aplikacja na zegarek i odpowiednia aplikacja na telefon mogą wykrywać, czy druga aplikacja jest dostępna.
Aplikacje na telefon i zegarek mogą używać
CapabilityClient do reklamowania swojej obecności na sparowanym urządzeniu. Mogą to zrobić statycznie lub dynamicznie.
Gdy aplikacja znajduje się w węźle sieci Wear OS użytkownika, np. na telefonie, sparowanym zegarku lub w chmurze, ikona CapabilityClient umożliwia innym aplikacjom jej wykrycie. Więcej informacji znajdziesz w artykule
Możliwości reklamowe.
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 aplikacji towarzyszącej na telefonie.
Musisz sprawdzić, czy Sklep Play jest dostępny na urządzeniu, ponieważ nie wszystkie telefony, np. iPhone, obsługują Sklep Play.
W sekcjach poniżej opisujemy sprawdzone metody w 2 sytuacjach:
- Samodzielna aplikacja na zegarek wymaga aplikacji na telefon.
- Aplikacja na telefon potrzebuje samodzielnej aplikacji na zegarek.
Możesz też zapoznać się z
przykładowymi pomocnikami warstwy danych, które pokazują, jak używać
bibliotek pomocników warstwy danych, będących częścią
Horologist. Te funkcje pomocnicze umożliwiają monitorowanie połączenia między urządzeniem przenośnym a urządzeniem z Wear OS.
Więcej informacji o klasach opisanych w sekcji poniżej znajdziesz w dokumentacji interfejsu Wear OS API.
Zawiera ona też informacje o klasie
PhoneTypeHelper, która zawiera metodę
getPhoneDeviceType() umożliwiającą aplikacji na Wear OS sprawdzenie, czy telefon towarzyszący jest urządzeniem z Androidem czy iOS.
Określanie nazw funkcji do wykrywania aplikacji
W przypadku aplikacji odpowiadającej każdemu typowi urządzenia (zegarka lub telefonu) określ unikalny ciąg znaków dla nazwy funkcji w pliku res/values/wear.xml.
Na przykład w module mobilnym plik wear.xml może zawierać:
<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 funkcji, np.:
<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 Możliwości reklamowe.
Wykrywanie aplikacji i otwieranie adresu URL na zegarku
Aplikacja na zegarek może wykryć, czy na sparowanym telefonie użytkownika jest zainstalowana Twoja aplikacja na telefon. Wykonaj te czynności:
-
Użyj
CapabilityClient, aby sprawdzić, czy aplikacja Telefon jest zainstalowana na sparowanym telefonie. Więcej informacji znajdziesz w przykładowych pomocnikach warstwy danych w GitHubie. -
Jeśli aplikacja Telefon nie jest zainstalowana na telefonie, sprawdź typ telefonu, korzystając z metody
PhoneDeviceType.getPhoneDeviceType(). Szczegółowe informacje znajdziesz w sekcji poniżej. -
Jeśli zostanie zwrócona wartość
PhoneDeviceType.DEVICE_TYPE_ANDROID, oznacza to, że telefon jest urządzeniem z Androidem. ZadzwońRemoteActivityHelper.startRemoteActivity()na urządzeniu z Wear OS, aby otworzyć Sklep Play na telefonie. Użyj identyfikatora URI aplikacji na telefon, który może się różnić od identyfikatora URI aplikacji na Wear. Użyj na przykład identyfikatora URI usługi, np.market://details?id=com.example.android.wearable.wear.finddevices. -
Jeśli zwrócona zostanie wartość
PhoneDeviceType.DEVICE_TYPE_IOS, 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 podać adres URL aplikacji w iTunes, np.https://itunes.apple.com/us/app/yourappname.W Wear OS nie możesz programowo określić, czy aplikacja na telefon jest zainstalowana na urządzeniu z iOS. Zalecamy udostępnienie użytkownikowi mechanizmu ręcznego otwierania App Store.
Uwaga: użyj opisanego wcześniej interfejsu RemoteActivityHelper API, aby określić, że każdy adres URL ma być otwierany na telefonie z poziomu zegarka i że nie jest wymagana żadna aplikacja na telefon.
Szczegóły wykrywania typu sparowanego telefonu
Oto fragment kodu, który za pomocą metody getPhoneDeviceType() sprawdza typ telefonu sparowanego z zegarkiem:
var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)
Wartość zwracana przez metodę getPhoneDeviceType()
jest jedną z tych wartości:
| Zwracana wartość | Opis |
|---|---|
DEVICE_TYPE_ANDROID
|
Telefon towarzyszący to urządzenie z Androidem. |
DEVICE_TYPE_IOS
|
Telefon towarzyszący to urządzenie z iOS. |
DEVICE_TYPE_UNKNOWN
|
Telefon towarzyszący jest nieznanym urządzeniem. |
DEVICE_TYPE_ERROR
|
Podczas określania typu sparowanego telefonu wystąpił błąd. Później należy przeprowadzić kolejne sprawdzenie. |
Wykrywanie aplikacji na telefonie z Androidem
Telefon z Androidem może wykrywać, czy urządzenia z Wear OS użytkownika mają Twoją aplikację na zegarek. Wykonaj te czynności:
-
Za pomocą
NodeClientznajdź wszystkie zegarki połączone z telefonem użytkownika. Więcej informacji znajdziesz w przykładowych pomocnikach warstwy danych w GitHubie. -
Za pomocą ikony
CapabilityClientsprawdź, na którym zegarku 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 aplikacji na Wear OS, który może się różnić od identyfikatora URI aplikacji na telefon. Użyj na przykład identyfikatora URI usługi Google Play, 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żywaj dostawcy lokalizacji łączonej (FLP), aby uzyskiwać dane o lokalizacji na zegarku. Więcej informacji znajdziesz w artykule Wykrywanie lokalizacji na Wear OS.
Jeśli telefon towarzyszący jest dostępny, FLP używa go do uzyskiwania danych o lokalizacji.
Pobieraj tylko niezbędne dane
Ogólnie rzecz biorąc, podczas pobierania danych z internetu należy pobierać tylko niezbędne dane. W przeciwnym razie możesz spowodować niepotrzebne opóźnienia, zużycie pamięci 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ź, czy w żądaniach i odpowiedziach sieciowych nie ma dodatkowych danych, które są potrzebne tylko w aplikacji na telefon.
- Zmniejsz duże obrazy, zanim wyślesz je przez sieć na zegarek.
W przypadku, gdy potrzebna jest sieć o dużej przepustowości, zapoznaj się z sekcją Dostęp do sieci o dużej przepustowości.
Dodatkowe przykłady kodu
Przykładowy kod pomocniczy warstwy danych dodatkowo ilustruje użycie interfejsów API omówionych na tej stronie.