Wear OS 6 เปิดตัว API ใหม่ชื่อ Watch Face Push ซึ่งจะสร้างโอกาสสำหรับ Use Case การเผยแพร่หน้าปัดที่ซับซ้อนยิ่งขึ้น
ระบุว่าเมื่อใดควรใช้พุชหน้าปัด
Watch Face Push เป็น API ใน Wear OS ที่ช่วยให้นักพัฒนาแอปเพิ่ม อัปเดต หรือนำหน้าปัดออกได้โดยตรง ไม่จำเป็นสำหรับการพัฒนาหน้าปัดมาตรฐาน
หน้าปัดที่ใช้กับพุชหน้าปัดต้องเขียนโดยใช้ Watch Face Format ซึ่งอาจรวมถึงหน้าปัดที่ออกแบบโดยใช้ Watch Face Designer, Watch Face Studio หรือเครื่องมืออื่นๆ ที่สร้างหน้าปัดซึ่งใช้ Watch Face Format
แม้ว่า Watch Face Push API จะใช้ได้หลายวิธี แต่ตารางต่อไปนี้จะแนะนำ Use Case หลักๆ ให้คุณ
| กรณีการใช้งาน | วิธีแก้ปัญหาที่แนะนำ | ความซับซ้อน |
|---|---|---|
| ฉันต้องการสร้างหน้าปัดแต่ละแบบและเผยแพร่ | ใช้ Watch Face Format ไม่ว่าจะใช้โดยตรงหรือผ่านเครื่องมือ เช่น Watch Face Designer หรือ Watch Face Studio แล้วเผยแพร่ใน Google Play | ต่ำ |
| ฉันต้องการสร้างแอปโทรศัพท์ที่ให้ผู้ใช้เลือกหน้าปัดจากคอลเล็กชันที่คัดสรรมาแล้ว หรือออกแบบและปรับแต่งหน้าปัดเพื่อติดตั้งลงในนาฬิกา Wear OS โดยตรง | สร้างแอปสำหรับทั้งนาฬิกาและโทรศัพท์โดยใช้ Watch Face Push API ในนาฬิกา | สูง |
วัตถุประสงค์
Use Case ที่เป็นมาตรฐานสำหรับ Watch Face Push API คือการสร้างแอปมาร์เก็ตเพลส จากแอปนี้ ผู้ใช้สามารถเลือกหน้าปัดจากคอลเล็กชันที่คัดสรรแล้วในโทรศัพท์ และควบคุมการติดตั้งหน้าปัดเหล่านี้ลงในนาฬิกาที่เชื่อมต่อได้โดยตรง
ข้อควรพิจารณา
ดูรายละเอียดเกี่ยวกับการสร้างหน้าปัดได้ในคำแนะนำเกี่ยวกับ Watch Face Format หน้าปัดที่ติดตั้งใช้งานโดยใช้พุชหน้าปัดคือหน้าปัด Watch Face Format ปกติ
โปรดคำนึงถึงข้อควรพิจารณาต่อไปนี้เมื่อสร้างหน้าปัด
ชื่อแพ็กเกจ
หน้าปัดที่ติดตั้งโดยใช้พุชหน้าปัดต้องเป็นไปตามรูปแบบต่อไปนี้
<app name>.watchfacepush.<watchface name>
... โดย <app name> คือชื่อแพ็กเกจของแอปที่เรียกใช้ Watch Face
Push API
เช่น สำหรับแอปที่มีชื่อแพ็กเกจ com.example.mymarketplace ชื่อแพ็กเกจหน้าปัดนาฬิกาที่ถูกต้องมีดังนี้
com.example.mymarketplace.watchfacepush.watchface1com.example.mymarketplace.watchfacepush.watchface2com.example.mymarketplace.watchfacepush.another_watchface
API จะปฏิเสธหน้าปัดที่ไม่เป็นไปตามรูปแบบนี้
แพ็กเกจเนื้อหา
ระบบจะบังคับใช้เนื้อหา APK อย่างเคร่งครัด ในทางเทคนิคแล้ว คุณสามารถสร้าง APK Watch Face Format ที่มีไฟล์ข้อมูลเมตาที่ไม่เป็นอันตรายและอาร์ติแฟกต์อื่นๆ ซึ่งอาจเป็นที่ยอมรับของ Google Play แต่ไม่ผ่านการตรวจสอบ Watch Face Push (ดูด้านล่าง)
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 มีหน้าที่รับผิดชอบในการยืนยันว่าหน้าปัดแต่ละรายการที่ส่งผ่าน Watch Face Push มีรูปแบบที่ถูกต้องและมีประสิทธิภาพ ซึ่งแตกต่างจากหน้าปัดทั่วไปที่เผยแพร่ผ่าน Google Play
การพุชหน้าปัดจะใช้การตรวจสอบความถูกต้องต่อไปนี้เพื่อยืนยันคุณภาพของ หน้าปัดแต่ละรายการ
- หน้าปัดทั้งหมดที่ติดตั้งหรืออัปเดตผ่าน Watch Face Push API ต้องผ่านเครื่องมือตรวจสอบพุชหน้าปัด
- ใช้เฉพาะเครื่องมือตรวจสอบอย่างเป็นทางการเพื่อสร้างโทเค็นการตรวจสอบสำหรับ ใช้กับ API
- เครื่องมือตรวจสอบต้องเป็นเวอร์ชันล่าสุดเมื่อคุณเรียกใช้การตรวจสอบ
คุณไม่จำเป็นต้องตรวจสอบ APK ที่ไม่มีการเปลี่ยนแปลงซ้ำ โทเค็นจะไม่มีวันหมดอายุ แม้ว่าเวอร์ชันของเครื่องมือตรวจสอบที่ใช้จะถูกแทนที่แล้วก็ตาม
ในขณะเดียวกัน เราขอแนะนำให้คุณเรียกใช้การตรวจสอบอีกครั้งเป็นครั้งคราว เนื่องจากโปรแกรมตรวจสอบจะอัปเดตเป็นระยะๆ
เรียกใช้เครื่องมือตรวจสอบ
เครื่องมือตรวจสอบมี 3 รูปแบบ ได้แก่
- เครื่องมือ CLI
- ไลบรารีสำหรับใช้กับ JVM
- ไลบรารีสำหรับใช้ใน Android
การใช้โปรแกรมตรวจสอบบรรทัดคำสั่ง
- รับเครื่องมือตรวจสอบจากที่เก็บ Maven ของ Google
เรียกใช้เครื่องมือโดยทำดังนี้
java -jar validator-push-cli-1.0.0-alpha10.jar \ --apk_path=<your watch face>.apk \ --package_name=<your marketplace package name>หากสำเร็จ เอาต์พุตจะมีโทเค็นการตรวจสอบ ซึ่งคุณต้อง ระบุให้กับ Watch Face Push API เมื่อเพิ่มหรืออัปเดตหน้าปัด
หากเกิดข้อผิดพลาด เอาต์พุตจะมีรายละเอียดเกี่ยวกับเช็คที่ล้มเหลว
การใช้งานโปรแกรมตรวจสอบไลบรารี
รวมที่เก็บ Google และ Jitpack คุณต้องระบุทั้ง 2 รายการเพื่อใช้ไลบรารีเครื่องมือตรวจสอบ
repositories { ... google() maven { url = uri("https://jitpack.io") content { includeGroup("com.github.xgouchet") } } }รวมทรัพยากร Dependency ของโปรแกรมตรวจสอบในโปรเจ็กต์
// For use on JVM implementation("com.google.android.wearable.watchface.validator:validator-push:1.0.0-alpha10") // For use on Android implementation("com.google.android.wearable.watchface.validator:validator-push-android:1.0.0-alpha10")เรียกใช้เครื่องมือตรวจสอบ
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 ปกติ สร้างคีย์อื่น จากคีย์ที่คุณใช้กับแอปหลัก แล้วใช้คีย์อื่นสำหรับ หน้าปัดทั้งหมด
สถาปัตยกรรม
พิจารณาองค์ประกอบหลัก 4 อย่างของระบบ
- พื้นที่เก็บข้อมูลบนระบบคลาวด์: ในแอป Marketplace ที่เป็น Canonical คุณจะสร้างและ
จัดเก็บหน้าปัดในระบบคลาวด์เพื่อให้ผู้ใช้พร้อมใช้งาน หน้าปัดมีพร็อพเพอร์ตี้ต่อไปนี้
- โดยจะสร้างไว้ล่วงหน้าเป็น APK ของ Watch Face Format ปกติ
- APK แต่ละรายการมีหน้าปัดที่อิงตาม Watch Face Format เพียงหน้าเดียว
- โดยจะได้รับการตรวจสอบด้วยกระบวนการตรวจสอบการพุชหน้าปัดนาฬิกาและ จัดเก็บพร้อมกับโทเค็นสำหรับตรวจสอบความถูกต้องที่เกี่ยวข้อง
- แอปโทรศัพท์จะเรียกข้อมูลเหล่านี้ได้ตามต้องการ
- แอปโทรศัพท์: แอปโทรศัพท์เป็นวิธีหลักที่ผู้ใช้โต้ตอบกับระบบของคุณ
ซึ่งจะช่วยให้ผู้ใช้ทำสิ่งต่อไปนี้ได้
- เลือกดูและค้นหาแคตตาล็อกหน้าปัด
- ติดตั้งหรือเปลี่ยนหน้าปัดบนนาฬิกา
- แอปสมาร์ทวอทช์: โดยทั่วไปแล้ว แอปสมาร์ทวอทช์อาจไม่มีอินเทอร์เฟซผู้ใช้ที่สำคัญ โดยหลักๆ แล้วเป็นตัวเชื่อมระหว่างแอปโทรศัพท์และ Watch Face
Push API โดยมีฟังก์ชันการทำงานดังนี้
- การใช้ Watch Face Push API เพื่อติดตั้ง/อัปเดตหรือแทนที่หน้าปัด
- การขอสิทธิ์ที่จำเป็นและการแจ้งให้ผู้ใช้ทราบ
- การระบุหน้าปัดเริ่มต้น
- การจัดแคชหน้าปัดขั้นต่ำ
- การสื่อสารระหว่างโทรศัพท์กับนาฬิกา: การสื่อสารระหว่างแอปในโทรศัพท์กับแอปสมาร์ทวอทช์เป็นสิ่งสำคัญต่อความสำเร็จของประสบการณ์การใช้งานโดยรวม ใช้ Wear OS Data Layer
API ซึ่งอนุญาตให้ทำสิ่งต่อไปนี้
- การตรวจหาการติดตั้ง: การใช้ความสามารถและ
CapabilityClientแอปโทรศัพท์จะตรวจหาการไม่มีแอปสมาร์ทวอทช์และในทางกลับกันได้ จากนั้นคุณจะ เปิดใช้ Intent ไปยัง Play Store เพื่อติดตั้งรูปแบบของอุปกรณ์ที่ขาดหายไปได้ - การจัดการสถานะ: การใช้
DataClientหรือMessageClientจะช่วยให้โทรศัพท์ซิงค์กับ สถานะของนาฬิกาได้ เช่น การซิงค์สถานะของหน้าปัดที่ใช้งานอยู่ - การส่ง APK: ใช้
ChannelClientหรือMessageClientเพื่อส่ง APK จากโทรศัพท์ไปยังนาฬิกา - การเรียกใช้จากระยะไกล: เมื่อใช้
Messageclientโทรศัพท์ จะสั่งให้นาฬิกาเรียกใช้ Watch Face Push API ได้ เช่น เพื่อ ติดตั้งหน้าปัด
- การตรวจหาการติดตั้ง: การใช้ความสามารถและ
ดูรายละเอียดเพิ่มเติมได้ที่คำแนะนำเกี่ยวกับ Data Layer API