การพุชหน้าปัด

Wear OS 6 เปิดตัว API ใหม่ชื่อ Watch Face Push ซึ่งสร้างโอกาสสำหรับ Use Case การเผยแพร่หน้าปัดที่ซับซ้อนมากขึ้น

ระบุว่าเมื่อใดควรใช้ Watch Face Push

Watch Face Push เป็น API ใน Wear OS ที่ช่วยให้นักพัฒนาแอปเพิ่ม อัปเดต หรือนำหน้าปัดออกได้โดยตรง ไม่จำเป็นสำหรับการพัฒนาหน้าปัดมาตรฐาน

หน้าปัดที่ใช้กับ Watch Face Push ต้องเขียนโดยใช้ Watch Face Format ซึ่งอาจรวมถึงหน้าปัดที่ออกแบบโดยใช้ Watch Face Studio หรือเครื่องมืออื่นๆ ที่สร้างหน้าปัดซึ่งใช้ Watch Face Format

แม้ว่า Watch Face Push API จะอาจใช้ได้หลายวิธี แต่คุณควรใช้ตารางต่อไปนี้เป็นแนวทางสำหรับกรณีการใช้งานหลัก

การเล่าเรื่องผ่าน วิธีแก้ปัญหาที่แนะนำ ความซับซ้อน
ฉันต้องการสร้างหน้าปัดแต่ละแบบและเผยแพร่ ใช้ Watch Face Format ไม่ว่าจะใช้โดยตรงหรือผ่านเครื่องมืออย่าง Watch Face Studio แล้วเผยแพร่ใน Google Play ต่ำ
ฉันต้องการสร้างแอปโทรศัพท์ที่ให้ผู้ใช้เลือกหน้าปัดจากคอลเล็กชันที่คัดสรรมาแล้ว หรือออกแบบและปรับแต่งหน้าปัดเพื่อติดตั้งในนาฬิกา Wear OS โดยตรง สร้างแอปสำหรับทั้งนาฬิกาและโทรศัพท์โดยใช้ Watch Face Push API ในนาฬิกา สูง

วัตถุประสงค์

Use Case ที่เป็นมาตรฐานสำหรับ Watch Face Push API คือการสร้างแอปมาร์เก็ตเพลส จากแอปนี้ ผู้ใช้สามารถเลือกหน้าปัดจากคอลเล็กชันที่คัดสรรแล้วในโทรศัพท์ และควบคุมการติดตั้งหน้าปัดเหล่านี้ลงในนาฬิกาที่เชื่อมต่อได้โดยตรง

ข้อควรพิจารณา

ดูรายละเอียดเกี่ยวกับการสร้างหน้าปัดได้ในคำแนะนำเกี่ยวกับ Watch Face Format หน้าปัดที่ติดตั้งใช้งานโดยใช้ Watch Face Push คือหน้าปัด Watch Face Format ปกติ

โปรดคำนึงถึงข้อควรพิจารณาต่อไปนี้เมื่อสร้างหน้าปัด

ชื่อแพ็กเกจ

หน้าปัดที่ติดตั้งโดยใช้ Watch Face Push ต้องเป็นไปตาม รูปแบบต่อไปนี้

<app name>.watchfacepush.<watchface name>

... โดย <app name> คือชื่อแพ็กเกจของแอปที่เรียกใช้ Watch Face Push API

เช่น สำหรับแอปที่มีชื่อแพ็กเกจ com.example.mymarketplace ชื่อแพ็กเกจหน้าปัดนาฬิกาที่ถูกต้องมีดังนี้

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

API จะปฏิเสธหน้าปัดที่ไม่เป็นไปตามแบบแผนนี้

เนื้อหาแพ็กเกจ

เราจะบังคับใช้เนื้อหา APK อย่างเคร่งครัด คุณต้องระมัดระวังเพื่อให้มั่นใจว่า Watch Face Format เป็นไปตามข้อจำกัดต่อไปนี้ ในทางเทคนิคแล้ว สามารถสร้าง APK ของ Watch Face Format ที่มีไฟล์ข้อมูลเมตาที่ไม่เป็นอันตราย และอาร์ติแฟกต์อื่นๆ ซึ่งอาจเป็นที่ยอมรับของ Google Play แต่ไม่ ผ่านการตรวจสอบการพุชหน้าปัดนาฬิกา (ดูด้านล่าง)

APK ของหน้าปัดแต่ละรายการยอมรับเฉพาะไฟล์/เส้นทางต่อไปนี้

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

นอกจากนี้ อนุญาตให้ใช้เฉพาะแท็กต่อไปนี้ในไฟล์ AndroidManifest.xml

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

สุดท้าย แพ็กเกจควรกำหนด minSdk อย่างน้อย 33 และแท็ก <application> ควรกำหนดแอตทริบิวต์ android:hasCode="false"

การตรวจสอบความถูกต้อง

การตรวจสอบเพื่อให้แน่ใจว่าหน้าปัดแต่ละหน้ามีรูปแบบที่ถูกต้องและมีประสิทธิภาพเป็นความรับผิดชอบของแอป Marketplace ซึ่งแตกต่างจากหน้าปัดทั่วไปที่เผยแพร่ผ่าน Google Play

Google Play จะใช้การตรวจสอบความถูกต้องต่อไปนี้เพื่อยืนยันคุณภาพของหน้าปัดแต่ละรายการที่ใช้การพุชหน้าปัด

  1. หน้าปัดทั้งหมดที่ติดตั้งหรืออัปเดตผ่าน Watch Face Push API ต้อง ผ่านเครื่องมือตรวจสอบ Watch Face Push
  2. ใช้ได้เฉพาะเครื่องมือตรวจสอบความถูกต้องอย่างเป็นทางการเท่านั้นในการสร้างโทเค็นการตรวจสอบความถูกต้องเพื่อใช้กับ API
  3. เครื่องมือตรวจสอบความถูกต้องที่ใช้ต้องเป็นเวอร์ชันล่าสุดในขณะที่ทำการตรวจสอบความถูกต้อง
  4. ไม่จำเป็นต้องตรวจสอบ APK ที่ไม่มีการเปลี่ยนแปลงอีกครั้ง โทเค็น จะไม่มีวันหมดอายุ แม้ว่าเวอร์ชันของเครื่องมือตรวจสอบที่ใช้จะ ถูกแทนที่แล้วก็ตาม

    ในขณะเดียวกัน เราขอแนะนำให้คุณเรียกใช้การตรวจสอบอีกครั้งเป็นครั้งคราว เนื่องจากเราจะอัปเดตเครื่องมือตรวจสอบเป็นระยะ

เรียกใช้เครื่องมือตรวจสอบ

เครื่องมือตรวจสอบมี 3 รูปแบบ ได้แก่

  • เครื่องมือ CLI
  • ไลบรารีสำหรับใช้กับ JVM
  • ไลบรารีสำหรับใช้ใน Android

การใช้โปรแกรมตรวจสอบบรรทัดคำสั่ง

  1. รับเครื่องมือตรวจสอบจากที่เก็บ Maven ของ Google
  2. เรียกใช้เครื่องมือโดยทำดังนี้

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

    หากสำเร็จ เอาต์พุตจะมีโทเค็นการตรวจสอบ ซึ่งคุณต้อง ระบุให้กับ Watch Face Push API เมื่อเพิ่มหรืออัปเดตหน้าปัด

    หากเกิดข้อผิดพลาด เอาต์พุตจะมีรายละเอียดเกี่ยวกับเช็คที่ล้มเหลว

การใช้งานเครื่องมือตรวจสอบไลบรารี

  1. รวมที่เก็บ Jitpack ซึ่งจำเป็นสำหรับทรัพยากร Dependency ของเครื่องมือตรวจสอบ

    repositories {
        ...
        google()
        maven {
            url = uri("https://jitpack.io")
            content {
                includeGroup("com.github.xgouchet")
            }
        }
    }
    
  2. รวมทรัพยากร Dependency ของเครื่องมือตรวจสอบในโปรเจ็กต์

    // 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. เรียกใช้เครื่องมือตรวจสอบ

    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()}")
            // ...
        }
    }
    

ดูตัวอย่างการใช้ไลบรารีนี้ได้ที่ตัวอย่างใน GitHub ดูไลบรารี Portable Asset Compiler Kit (Pack) ด้วย ซึ่งมีประโยชน์ในการสร้าง APK ในอุปกรณ์เพื่อใช้กับเครื่องมือตรวจสอบที่ใช้ Android

ขนาด APK

ควรระมัดระวังเป็นพิเศษกับหน้าปัดแบบพุชของนาฬิกาเพื่อให้มั่นใจว่าขนาด APK จะมีขนาดเล็กที่สุด เนื่องจากมีแนวโน้มที่จะมีการส่ง APK หน้าปัดนาฬิกาจากแอปโทรศัพท์ไปยังแอปนาฬิกาผ่านบลูทูธ ซึ่งอาจช้า

APK ที่มีขนาดใหญ่เกินไปอาจใช้เวลานานในการส่ง ซึ่งทั้งส่งผลให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดีและทำให้แบตเตอรี่หมดเร็ว

  • ใช้ไลบรารีที่เหมาะสม เช่น pngquant เพื่อให้ ขนาดไฟล์รูปภาพมีขนาดเล็กที่สุด
    • รวมสิ่งนี้ไว้ในกระบวนการสร้างคอลเล็กชันหน้าปัด
    • ตรวจสอบว่าขนาดของรูปภาพเหมาะสมกับขนาดที่จะใช้หรือไม่
    • ตรวจสอบว่าได้ครอบตัดรูปภาพอย่างเหมาะสมเพื่อนำพื้นหลังโดยรอบออก
  • ลดขนาดไฟล์แบบอักษร
    • เช่น หากใช้แบบอักษรหนึ่งๆ เพื่อแสดงเวลาเท่านั้น ในรูปแบบ HH:MM คุณสามารถใช้เครื่องมืออย่าง pyftsubset เพื่อจำกัดไฟล์แบบอักษรให้มีเฉพาะอักขระที่จำเป็น ซึ่งจะช่วย ลดขนาดไฟล์แบบอักษรและ APK ที่ได้ลงอย่างมาก ดูรายละเอียดเกี่ยวกับการลดขนาดไฟล์แบบอักษรสำหรับกรณีอื่นๆ ได้ในบล็อกโพสต์นี้

โปรดดูคำแนะนำเพิ่มเติมเกี่ยวกับ การลดขนาด APK ให้น้อยที่สุดในคำแนะนำในการเพิ่มประสิทธิภาพการใช้หน่วยความจำ

การลงนาม APK

เช่นเดียวกับ APK ปกติ หน้าปัดทั้งหมดต้องมีการลงนาม สร้างคีย์ที่ แตกต่างจากคีย์ที่ใช้กับแอปหลัก แล้วใช้คีย์ที่แตกต่างกัน สำหรับหน้าปัดทั้งหมด

สถาปัตยกรรม

พิจารณาองค์ประกอบหลัก 3 อย่างของระบบ

  1. พื้นที่เก็บข้อมูลบนระบบคลาวด์: ในแอป Marketplace ที่เป็นทางการ ระบบจะสร้างและจัดเก็บหน้าปัดในระบบคลาวด์เพื่อให้ผู้ใช้พร้อมใช้งาน หน้าปัด มีดังนี้
    1. สร้างไว้ล่วงหน้าเป็น APK รูปแบบหน้าปัดนาฬิกาปกติ
    2. แต่ละแอปจะมีหน้าปัดที่อิงตาม Watch Face Format เพียงหน้าเดียว
    3. ได้รับการตรวจสอบโดยใช้กระบวนการตรวจสอบการพุชหน้าปัดนาฬิกาและ จัดเก็บพร้อมกับโทเค็นการตรวจสอบที่เกี่ยวข้อง
    4. พร้อมให้แอปโทรศัพท์ดึงข้อมูลได้ทุกเมื่อที่ต้องการ
  2. แอปโทรศัพท์: แอปโทรศัพท์เป็นวิธีหลักที่ผู้ใช้โต้ตอบกับระบบของคุณ ซึ่งจะช่วยให้ผู้ใช้ทำสิ่งต่อไปนี้ได้
    1. เลือกดูและค้นหาแคตตาล็อกหน้าปัด
    2. ติดตั้งหรือเปลี่ยนหน้าปัดบนนาฬิกา
  3. แอปนาฬิกา: โดยทั่วไปแล้วแอปนาฬิกาอาจไม่มีอินเทอร์เฟซผู้ใช้ที่สำคัญ โดยหลักๆ แล้วเป็นตัวเชื่อมระหว่างแอปโทรศัพท์กับ Watch Face Push API โดยมีฟังก์ชันต่อไปนี้
    1. การใช้ Watch Face Push API เพื่อติดตั้ง/อัปเดตหรือแทนที่หน้าปัด
    2. การขอสิทธิ์ที่จำเป็นและการแจ้งให้ผู้ใช้ทราบ
    3. การระบุหน้าปัดเริ่มต้น
    4. การจัดแคชหน้าปัดให้น้อยที่สุด
  4. การสื่อสารระหว่างโทรศัพท์กับนาฬิกา: การสื่อสารระหว่างแอปโทรศัพท์กับแอปนาฬิกา มีความสำคัญต่อความสำเร็จของประสบการณ์การใช้งานโดยรวม ใช้ Wear OS Data Layer API ซึ่งอนุญาตให้ทำสิ่งต่อไปนี้
    1. การตรวจหาการติดตั้ง: การใช้ความสามารถและ CapabilityClient แอปโทรศัพท์จะตรวจหาการไม่มีแอปนาฬิกาและในทางกลับกันได้ จากนั้นคุณสามารถ เปิดใช้ Intent ไปยัง Play Store เพื่อติดตั้ง รูปแบบอุปกรณ์ที่ขาดหายไป
    2. การจัดการสถานะ: การใช้ DataClient หรือ MessageClient จะช่วยให้โทรศัพท์ซิงค์กับ สถานะของนาฬิกาได้ เช่น ทำให้โทรศัพท์ทราบว่า ตั้งค่าหน้าปัดนาฬิกาใดไว้
    3. การส่ง APK: เมื่อใช้ ChannelClient หรือ MessageClient คุณจะส่ง APK จากโทรศัพท์ไปยังนาฬิกาได้
    4. การเรียกใช้จากระยะไกล: เมื่อใช้ Messageclient โทรศัพท์ จะสั่งให้นาฬิกาเรียกใช้ Watch Face Push API ได้ เช่น เพื่อ ติดตั้งหน้าปัด

ดูรายละเอียดเพิ่มเติมได้ที่คำแนะนำเกี่ยวกับ Data Layer API