Tarcze zegarka przesyłane dynamicznym ładowaniem

Wear OS 6 wprowadza nowy interfejs API, Watch Face Push, który stwarza możliwości bardziej zaawansowanych przypadków użycia publikowania tarcz zegarka.

Kiedy warto używać powiadomień push na tarczy zegarka

Watch Face Push to interfejs API na Wear OS, który umożliwia programistom bezpośrednie dodawanie, aktualizowanie i usuwanie tarcz zegarka. Nie jest to wymagane w przypadku tworzenia standardowych tarcz zegarka.

Tarcze zegarka używane z powiadomieniami push na tarczy zegarka muszą być napisane w Formacie tarczy zegarka. Mogą to być tarcze zegarka zaprojektowane w Watch Face Studio lub dowolnym innym narzędziu, które tworzy tarcze zegarka korzystające z Formatu tarczy zegarka.

Interfejs Watch Face Push API może być używany na wiele sposobów, ale poniższa tabela powinna służyć jako przewodnik po głównych przypadkach użycia:

Przypadek użycia Zalecane rozwiązanie Złożoność
Chcę tworzyć i publikować poszczególne tarcze zegarka. Używaj formatu tarczy zegarka bezpośrednio lub za pomocą narzędzia takiego jak Watch Face Studio i publikuj je w Google Play. Niska
Chcę utworzyć aplikację na telefon, która umożliwi użytkownikom wybieranie tarcz zegarka z wyselekcjonowanej kolekcji lub projektowanie i dostosowywanie tarcz do instalacji bezpośrednio na zegarku z Wear OS. Utwórz aplikację na zegarek i telefon, korzystając z interfejsu Watch Face Push API na zegarku. Wysoki

Cel

Typowym przypadkiem użycia interfejsu Watch Face Push API jest tworzenie aplikacji na platformę handlową. Użytkownicy mogą w niej wybierać tarcze zegarka z wyselekcjonowanej kolekcji na telefonie i bezpośrednio kontrolować instalację tych tarcz na połączonym zegarku.

co należy wziąć pod uwagę

Szczegółowe informacje o tworzeniu tarcz zegarka znajdziesz w wytycznych dotyczących formatu tarczy zegarka. Tarcze zegarka wdrażane za pomocą powiadomień push na tarczy zegarka to zwykłe tarcze zegarka w formacie tarczy zegarka.

Podczas tworzenia tarczy zegarka pamiętaj o tych kwestiach.

Nazwy pakietów

Tarcze zegarka zainstalowane za pomocą powiadomień push na tarczy zegarka muszą być zgodne z tą konwencją:

<app name>.watchfacepush.<watchface name>

… gdzie <app name> to nazwa pakietu aplikacji wywołującej interfejs Watch Face Push API.

Na przykład w przypadku aplikacji o nazwie pakietu com.example.mymarketplace prawidłowe nazwy pakietów tarcz zegarka to:

  • com.example.mymarketplace.watchfacepush.watchface1
  • com.example.mymarketplace.watchfacepush.watchface2
  • com.example.mymarketplace.watchfacepush.another_watchface

Tarcze zegarka, które nie są zgodne z tą konwencją, są odrzucane przez interfejs API.

Zawartość pakietu

Zawartość pliku APK jest ściśle egzekwowana. Należy zadbać o to, aby Format tarczy zegarka był zgodny z tymi ograniczeniami: technicznie możliwe jest tworzenie plików APK Formatu tarczy zegarka, które zawierają nieszkodliwe pliki metadanych i inne artefakty. Mogą one być akceptowane w Google Play, ale nie przechodzą weryfikacji przesyłania tarcz zegarka (patrz poniżej).

W każdym pliku APK tarczy zegarka akceptowane są tylko te pliki lub ścieżki:

  • /AndroidManifest.xml
  • /resources.arsc
  • /res/**
  • /META-INF/**

Dodatkowo w pliku AndroidManifest.xml dozwolone są tylko te tagi:

  • <manifest>
  • <uses-feature>
  • <uses-sdk>
  • <application>
  • <property>
  • <meta-data>

Na koniec pakiet powinien określać minSdk o wartości co najmniej 33, a tag <application> powinien określać atrybut android:hasCode="false".

Weryfikacja

W przeciwieństwie do zwykłych tarcz zegarka rozpowszechnianych w Google Play aplikacja Watch Face Push sprawdza, czy każda tarcza zegarka jest prawidłowo sformatowana i wydajna.

Google Play używa tych kontroli weryfikacyjnych, aby sprawdzić jakość każdej tarczy zegarka, która korzysta z funkcji przesyłania tarczy zegarka:

  1. Wszystkie tarcze zegarka zainstalowane lub zaktualizowane za pomocą interfejsu Watch Face Push API muszą przejść weryfikację za pomocą narzędzia do weryfikacji Watch Face Push.
  2. Do generowania tokenów weryfikacyjnych do użytku z interfejsem API można używać tylko oficjalnego narzędzia do weryfikacji.
  3. W momencie przeprowadzania weryfikacji używane narzędzie do weryfikacji musi być aktualne.
  4. Nie musisz ponownie weryfikować pakietu APK, który nie został zmieniony. Tokeny nie tracą ważności, nawet gdy używana wersja narzędzia do weryfikacji zostanie zastąpiona.

    Jednocześnie zalecamy okresowe ponowne uruchamianie weryfikacji, ponieważ weryfikator jest okresowo aktualizowany.

Uruchamianie walidatora

Weryfikator jest dostępny w 3 formach:

  • Narzędzie CLI
  • Biblioteka do użytku z JVM
  • Biblioteka do użytku na Androidzie

Korzystanie z walidatora wiersza poleceń

  1. Pobierz walidator z repozytorium Maven Google.
  2. Uruchom narzędzie w ten sposób:

    java -jar validator-push-cli-1.0.0-alpha06.jar \
        --apk_path=<your watch face>.apk \
        --package_name=<your marketplace package name>
    

    Jeśli operacja się powiedzie, w danych wyjściowych pojawi się token weryfikacyjny, który musisz podać w interfejsie Watch Face Push API podczas dodawania lub aktualizowania tarczy zegarka.

    Jeśli wystąpi błąd, w wyniku pojawią się szczegółowe informacje o tym, która konkretna kontrola się nie powiodła.

Korzystanie z walidatora biblioteki

  1. Dodaj repozytorium Jitpack, które jest wymagane w przypadku zależności walidatora:

    repositories {
        ...
        google()
        maven {
            url = uri("https://jitpack.io")
            content {
                includeGroup("com.github.xgouchet")
            }
        }
    }
    
  2. Dodaj do projektu zależność walidatora:

    // For use on JVM
    implementation("com.google.android.wearable.watchface.validator:1.0.0-alpha06")
    
    // For use on Android
    implementation("com.google.android.wearable.watchface.validator-android:1.0.0-alpha06")
    
    
  3. Uruchom walidator:

    val validator = DwfValidatorFactory.create()
    val result = validator.validate(watchFaceFile, appPackageName)
    
    if (result.failures().isEmpty()) {
        val token = result.validationToken()
        println("Validation token: $token")
    
        // Validation success - continue with the token
        // ...
    } else {
        // There were failures, handle them accordingly - validation has failed.
        result.failures().forEach { failure ->
            println("FAILURE: ${failure.name()}: ${failure.failureMessage()}")
            // ...
        }
    }
    

Przykład użycia tej biblioteki znajdziesz w przykładzie na GitHubie. Zapoznaj się też z biblioteką Portable Asset Compiler Kit (Pack), która jest przydatna do tworzenia plików APK na urządzeniu do użytku z walidatorem opartym na Androidzie.

Rozmiar pliku APK

Szczególną uwagę należy zwrócić na tarcze zegarka typu Watch Face Push, aby zminimalizować rozmiar pliku APK: plik APK tarczy zegarka jest prawdopodobnie przesyłany z aplikacji na telefon na aplikację na zegarek przez Bluetooth, co może być powolne.

Zbyt duży plik APK może być przesyłany przez długi czas, co pogarsza wrażenia użytkowników i wyczerpuje baterię.

  • Używaj odpowiednich bibliotek, np. pngquant, aby zminimalizować rozmiar plików obrazów.
    • Uwzględnij to w procesie tworzenia kolekcji tarcz zegarka
    • Sprawdź, czy wymiary obrazu są odpowiednie do skali, w jakiej będzie on używany.
    • Upewnij się, że obrazy są odpowiednio przycięte, aby usunąć tło.
  • Zmniejszanie rozmiaru plików czcionek
    • Jeśli na przykład używasz konkretnej czcionki tylko do wyświetlania czasu w formacie HH:MM, możesz użyć narzędzia takiego jak pyftsubset, aby ograniczyć plik czcionki tylko do niezbędnych glifów. Może to znacznie zmniejszyć rozmiar wynikowego pliku czcionki i pliku APK. Więcej informacji o minimalizowaniu rozmiaru pliku czcionki znajdziesz w tym poście na blogu.

Więcej sugestii dotyczących minimalizowania rozmiaru pliku APK znajdziesz w wskazówkach dotyczących optymalizacji wykorzystania pamięci.

Podpisywanie plików APK

W przypadku zwykłego pliku APK wszystkie tarcze zegarka muszą być podpisane. Utwórz inny klucz niż ten, którego używasz w przypadku głównej aplikacji, i używaj go w przypadku wszystkich tarcz zegarka.

Architektura

Weź pod uwagę 3 główne elementy systemu:

  1. Miejsce w chmurze: w kanonicznej aplikacji Marketplace tarcze zegara są tworzone i przechowywane w chmurze, gotowe do użycia przez użytkowników. Tarcze zegarka to:
    1. Wstępnie utworzone jako zwykłe pliki APK w formacie tarczy zegarka
    2. Każda z nich zawiera tylko jedną tarczę zegarka opartą na formacie tarczy zegarka.
    3. zostały zweryfikowane w procesie weryfikacji przesyłania tarcz zegarka i są przechowywane wraz z powiązanym tokenem weryfikacji.
    4. Gotowe do pobrania przez aplikację na telefonie w razie potrzeby.
  2. Aplikacja Telefon: aplikacja Telefon to główny sposób, w jaki użytkownicy wchodzą w interakcję z Twoim systemem. Umożliwia to:
    1. Przeglądanie i wyszukiwanie katalogu tarcz zegarka
    2. Instalowanie i wymienianie tarczy zegarka
  3. Aplikacja na zegarek: aplikacja na zegarek zwykle nie ma rozbudowanego interfejsu użytkownika. Jest to przede wszystkim pomost między aplikacją na telefon a interfejsami API Push tarczy zegarka. Oferuje te funkcje:
    1. Używanie interfejsu Watch Face Push API do instalowania, aktualizowania lub zastępowania tarcz zegarka
    2. Wyświetlanie prośby o przyznanie niezbędnych uprawnień
    3. Dostarczanie domyślnej tarczy zegarka
    4. zapewniać minimalną pamięć podręczną tarcz zegarka;
  4. Komunikacja między telefonem a zegarkiem: komunikacja między aplikacją na telefonie a aplikacją na zegarku ma kluczowe znaczenie dla ogólnego komfortu użytkowania. Korzystaj z interfejsów Data Layer API na Wear OS, które umożliwiają:
    1. Wykrywanie instalacji: za pomocą interfejsów API i CapabilityClient aplikacja na telefon może wykrywać brak aplikacji na zegarek i odwrotnie. Może to być połączone z uruchomieniem intencji w Sklepie Play, aby zainstalować brakujący format.
    2. Zarządzanie stanem: za pomocą DataClient lub MessageClient telefon może być synchronizowany ze stanem zegarka, np. może wiedzieć, która tarcza jest ustawiona.
    3. Przesyłanie plików APK: za pomocą ChannelClient lub MessageClient pliki APK mogą być przesyłane z telefonu na zegarek.
    4. Zdalne wywoływanie: za pomocą Messageclient telefon może wydać zegarkowi polecenie wywołania interfejsu Watch Face Push API, np. w celu zainstalowania tarczy zegarka.

Więcej informacji znajdziesz w przewodniku po interfejsie API warstwy danych.