แอป Wear OS แบบสแตนด์อโลนเทียบกับแอป Wear OS ที่ไม่สแตนด์อโลน

เราขอแนะนำให้แอป Wear OS ทำงานโดยไม่ต้องใช้โทรศัพท์ เพื่อให้ผู้ใช้ ทำสิ่งต่างๆ ในนาฬิกาได้โดยไม่ต้องเข้าถึงโทรศัพท์ Android หรือ iOS หากแอปนาฬิกา ต้องมีการโต้ตอบทางโทรศัพท์ คุณต้องทำเครื่องหมายแอป Wear OS ว่าไม่ใช่แอปแบบสแตนด์อโลน และทำตามขั้นตอนเพื่อให้แน่ใจว่าผู้ใช้มีแอปโทรศัพท์พร้อมใช้งาน

วางแผนแอป

คุณใช้ Android App Bundle เพื่อสร้าง Android Package Kit (APK) ที่เพิ่มประสิทธิภาพโดยอัตโนมัติสำหรับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละรายภายใต้ข้อมูลแอปพลิเคชันเดียวกันได้ ซึ่งช่วยให้ผู้ใช้ดาวน์โหลดได้เฉพาะโค้ดและทรัพยากรที่จำเป็นต่อการ เรียกใช้แอปของคุณเท่านั้น

ดูข้อมูลเกี่ยวกับการตั้งค่าแอปเพื่อเผยแพร่ผ่าน Google Play Store ได้ที่ จัดแพ็กเกจและเผยแพร่แอป Wear OS และคำแนะนำในการเริ่มต้นใช้งาน Android App Bundle

สำหรับแอปใหม่ API ระดับเป้าหมายต้องเป็น 34 ขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ ปฏิบัติตามข้อกำหนดระดับ API เป้าหมายของ Google Play ตั้งค่า targetSdkVersion เป็น API ระดับ 30 (Wear OS 3) เพื่อช่วยให้มั่นใจว่าแอปจะทำงานได้ดี ในแพลตฟอร์มเวอร์ชันล่าสุด

ดูข้อมูลเกี่ยวกับคำขอเครือข่ายและการเข้าถึงเครือข่ายที่มีแบนด์วิดท์สูงได้ที่ การเข้าถึงเครือข่ายและการซิงค์ใน Wear OS

กำหนดให้แอปเป็นแอป Wear OS

คุณต้องกำหนดแท็ก <uses-feature> ในไฟล์ Manifest สําหรับ Android ของแอป หากต้องการระบุว่าเป็นแอปนาฬิกา ให้เพิ่มรายการดังต่อไปนี้

<uses-feature android:name="android.hardware.type.watch" />

ระบุว่าแอปเป็นแบบสแตนด์อโลนหรือไม่

แอปนาฬิกาจะถือว่าเป็นแบบสแตนด์อโลนหรือไม่ใช่แบบสแตนด์อโลน

  • แบบสแตนด์อโลน: แอปที่ทำงานโดยอิสระอย่างสมบูรณ์ซึ่งไม่จำเป็นต้องมีแอปโทรศัพท์สำหรับฟีเจอร์หลัก แม้ว่าข้อความแจ้ง "เปิดในโทรศัพท์" จะยอมรับได้ แต่แอปต้องมีวิธีอื่น ให้ผู้ใช้ทำฟังก์ชันของแอปให้เสร็จสมบูรณ์ เช่น ลิงก์แบบย่อหรือคิวอาร์โค้ด โดยไม่ต้องอาศัย โทรศัพท์ที่เชื่อมต่อ
  • ไม่ใช่แบบสแตนด์อโลน: แอปที่ต้องพึ่งพาแอปในโทรศัพท์หรืออุปกรณ์อื่นสำหรับ ฟีเจอร์หลัก ตัวเลือกนี้เหมาะที่สุดสำหรับแอปในกรณีที่ไม่สามารถ ระบุวิธีการอื่นได้ง่ายๆ เช่น คิวอาร์โค้ดหรือลิงก์สั้น เพื่อทำฟังก์ชันหลักของแอปให้เสร็จสมบูรณ์ เช่น การตรวจสอบสิทธิ์

หมายเหตุ: แม้จะเป็นแอปที่ไม่ใช่แบบสแตนด์อโลน ผู้ใช้ก็สามารถติดตั้งแอป Wear OS ก่อนแอปบนอุปกรณ์เคลื่อนที่ได้ ดังนั้นหากแอป Wear OS ตรวจพบว่าอุปกรณ์ถือที่อยู่ใกล้เคียงไม่มีแอปที่ใช้ร่วมกันที่จำเป็น ให้แจ้งให้ผู้ใช้ติดตั้งแอปที่ใช้ร่วมกัน

Google จะตรวจสอบความถูกต้องของสถานะแบบสแตนด์อโลนของแอปในระหว่างการแสดงแอป ค่านี้จะส่งผลต่อระดับการเข้าถึงแอปภายใน Play Store ใน อุปกรณ์ที่ไม่เชื่อมต่อ เช่น อุปกรณ์ Wear OS ที่ไม่ได้จับคู่กับอุปกรณ์พกพา แอปที่ไม่ใช่แบบสแตนด์อโลน รวมถึงแอปที่นักพัฒนาแอป ระบุอย่างไม่ถูกต้องว่าเป็น "แบบสแตนด์อโลน" จะไม่พร้อมให้บริการแก่ผู้ใช้ในอุปกรณ์ที่ไม่ต้องเชื่อมต่อ เหล่านี้

ในแอป Wear OS ให้ตั้งค่าขององค์ประกอบ meta-data com.google.android.wearable.standalone ในไฟล์ Android Manifest เพื่อประกาศว่าแอปของคุณเป็นแบบสแตนด์อโลนหรือไม่

หากแอปนาฬิกาเป็นแอปแบบสแตนด์อโลนที่ทำงานโดยอิสระอย่างสมบูรณ์ ให้ระบุ สิ่งนี้ใน Google Play Store โดยตั้งค่า com.google.android.wearable.standaloneเป็นtrue

<meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />

หากแอปนาฬิกาของคุณไม่ใช่แอปแบบสแตนด์อโลนและต้องอาศัยแอปอื่นสำหรับฟีเจอร์หลัก ให้ตั้งค่า com.google.android.wearable.standalone เป็น false ซึ่งหมายความว่าแอปนาฬิกาต้องใช้อุปกรณ์อื่น แต่จะไม่ส่งผลต่อการโปรโมตแอปใน Google Play Store

หมายเหตุ: แม้ว่าค่าของ com.google.android.wearable.standalone จะเป็น false แต่ก็ยังติดตั้งแอปนาฬิกา ได้ก่อนติดตั้งแอปโทรศัพท์ ดังนั้น หากแอปนาฬิกาของคุณตรวจพบว่าโทรศัพท์ที่ใช้ร่วมกันไม่มีแอปโทรศัพท์ที่จำเป็นตามที่อธิบายไว้ในหน้านี้ ให้แจ้งให้ผู้ใช้ติดตั้งแอปโทรศัพท์

พื้นที่เก็บข้อมูลโค้ดและข้อมูลที่ใช้ร่วมกัน

คุณแชร์โค้ดระหว่างแอป Wear OS กับแอปในโทรศัพท์ได้ เช่น โค้ดทั่วไปสำหรับการเชื่อมต่อเครือข่ายอาจอยู่ในไลบรารีที่ใช้ร่วมกัน

ไม่บังคับ: โค้ด ที่เฉพาะเจาะจงกับรูปแบบของอุปกรณ์อาจอยู่ในโมดูลแยกต่างหาก

คุณสามารถใช้ Android Storage API มาตรฐานเพื่อจัดเก็บข้อมูลในเครื่องได้เช่นเดียวกับในโทรศัพท์ คุณสามารถใช้ DataStore เพื่อจัดเก็บคู่คีย์-ค่าและออบเจ็กต์ที่พิมพ์ หรือจะใช้ไลบรารีการคงอยู่ของ Room ก็ได้

ตรวจหาแอปในอุปกรณ์อื่น

แอปนาฬิกาและแอปโทรศัพท์ที่เกี่ยวข้อง จะตรวจหาได้ว่าอีกแอปพร้อมใช้งานหรือไม่

แอปโทรศัพท์และแอปนาฬิกาสามารถใช้ CapabilityClient เพื่อโฆษณาการมีอยู่ของแอป ในอุปกรณ์ที่จับคู่ไว้ โดยสามารถทำได้ทั้งแบบคงที่และแบบไดนามิก

เมื่อแอป อยู่ในโหนดในเครือข่าย Wear OS ของผู้ใช้ เช่น ในโทรศัพท์ นาฬิกาที่จับคู่ หรือ ในระบบคลาวด์ CapabilityClient จะช่วยให้แอปอื่นๆ ตรวจหาแอปนั้นได้ ดูข้อมูลเพิ่มเติมได้ที่ ความสามารถในการโฆษณา

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

คุณต้องตรวจสอบว่า Play Store พร้อมใช้งานใน อุปกรณ์หรือไม่ เนื่องจากโทรศัพท์บางรุ่น เช่น iPhone ไม่รองรับ Play Store

ส่วนต่อไปนี้จะอธิบายแนวทางปฏิบัติแนะนำสำหรับ 2 สถานการณ์

  • แอปนาฬิกาแบบสแตนด์อโลนต้องใช้แอปโทรศัพท์
  • แอปโทรศัพท์ต้องใช้แอปนาฬิกาแบบสแตนด์อโลน

นอกจากนี้ คุณยังดู ตัวอย่างตัวช่วย Datalayer ซึ่งแสดงวิธีใช้ ไลบรารีตัวช่วย Datalayer ซึ่งเป็นส่วนหนึ่งของ Horologist ได้ด้วย เครื่องมือช่วยเหล่านี้ช่วยให้คุณตรวจสอบการเชื่อมต่อระหว่างอุปกรณ์พกพา กับอุปกรณ์ Wear OS ได้ ดูข้อมูลเพิ่มเติม เกี่ยวกับคลาสที่อธิบายไว้ในส่วนต่อไปนี้ได้ที่ ข้อมูลอ้างอิงเกี่ยวกับ Wear OS API ข้อมูลอ้างอิงนั้นยังมีข้อมูลเกี่ยวกับคลาส PhoneTypeHelper ซึ่งมีเมธอด getPhoneDeviceType() ที่ช่วยให้แอป Wear OS ตรวจสอบได้ว่าโทรศัพท์ที่ใช้ร่วมกันเป็นอุปกรณ์ Android หรือ iOS

ระบุชื่อความสามารถเพื่อตรวจหาแอป

สำหรับแอปที่สอดคล้องกับอุปกรณ์แต่ละประเภท ไม่ว่าจะเป็นนาฬิกาหรือโทรศัพท์ ให้ระบุสตริงที่ไม่ซ้ำสำหรับชื่อความสามารถในไฟล์ res/values/wear.xml

เช่น ในโมดูลอุปกรณ์เคลื่อนที่ ไฟล์ wear.xml อาจมีข้อมูลต่อไปนี้

<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>

ในโมดูล Wear OS ไฟล์ wear.xml มีค่าอื่นสำหรับชื่อความสามารถ เช่น ค่าต่อไปนี้

<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>

ดูข้อมูลเพิ่มเติมได้ที่ ความสามารถในการโฆษณา

การตรวจหาแอปและการเปิด URL จากนาฬิกา

แอปนาฬิกาสามารถตรวจหาว่าโทรศัพท์ที่ใช้ร่วมกันของผู้ใช้มีแอปโทรศัพท์ของคุณหรือไม่ ทำตามขั้นตอนต่อไปนี้

  1. ใช้ CapabilityClient เพื่อตรวจสอบว่าได้ติดตั้งแอปโทรศัพท์ ในโทรศัพท์ที่จับคู่ไว้หรือไม่ ดูข้อมูลเพิ่มเติมได้ที่ ตัวอย่างตัวช่วย Data Layer ใน GitHub
  2. หากไม่ได้ติดตั้งแอปโทรศัพท์ในโทรศัพท์ ให้ใช้วิธี PhoneDeviceType.getPhoneDeviceType() เพื่อตรวจสอบประเภทของโทรศัพท์ ดูรายละเอียดได้ที่ส่วนต่อไปนี้
  3. หากระบบแสดง PhoneDeviceType.DEVICE_TYPE_ANDROID แสดงว่าโทรศัพท์เป็นโทรศัพท์ Android โทร RemoteActivityHelper.startRemoteActivity() ในอุปกรณ์ Wear OS เพื่อ เปิด Play Store ในโทรศัพท์ ใช้ URI ของตลาดสำหรับแอปในโทรศัพท์ ซึ่งอาจแตกต่างจาก URI ของแอป Wear เช่น ใช้ URI ของตลาด เช่น market://details?id=com.example.android.wearable.wear.finddevices
  4. หากระบบแสดง PhoneDeviceType.DEVICE_TYPE_IOS หมายความว่าโทรศัพท์เป็นโทรศัพท์ iOS ที่ไม่มี Play Store เปิด App Store ใน iPhone โดยโทรหา RemoteActivityHelper.startRemoteActivity() ในอุปกรณ์ Wear OS คุณระบุ URL ของ iTunes ของแอปได้ เช่น https://itunes.apple.com/us/app/yourappname

    จาก Wear OS คุณไม่สามารถระบุได้โดยอัตโนมัติว่า แอปโทรศัพท์ของคุณติดตั้งอยู่ในอุปกรณ์ iOS หรือไม่ แนวทางปฏิบัติแนะนำคือการจัดให้มี กลไกเพื่อให้ผู้ใช้ทริกเกอร์การ เปิด App Store ด้วยตนเอง

หมายเหตุ: ใช้ RemoteActivityHelper API ที่อธิบายไว้ก่อนหน้านี้เพื่อ ระบุว่าให้เปิด URL ใดก็ตามในโทรศัพท์จากนาฬิกา และไม่จำเป็นต้องใช้แอปในโทรศัพท์

รายละเอียดสำหรับการตรวจหาประเภทโทรศัพท์ที่จับคู่

ต่อไปนี้คือข้อมูลโค้ดที่ใช้วิธี getPhoneDeviceType() เพื่อ ตรวจสอบประเภทโทรศัพท์ที่จับคู่กับนาฬิกา

var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)

ค่าที่เมธอด getPhoneDeviceType() ส่งคืนจะเป็นค่าใดค่าหนึ่งต่อไปนี้

ค่าที่ส่งคืน คำอธิบาย
DEVICE_TYPE_ANDROID โทรศัพท์ที่ใช้ร่วมกันเป็นอุปกรณ์ Android
DEVICE_TYPE_IOS โทรศัพท์ที่ใช้คู่กันเป็นอุปกรณ์ iOS
DEVICE_TYPE_UNKNOWN โทรศัพท์คู่เป็นอุปกรณ์ที่ไม่รู้จัก
DEVICE_TYPE_ERROR เกิดข้อผิดพลาดในการระบุประเภทโทรศัพท์ที่จับคู่ไว้ โปรดตรวจสอบอีกครั้งในภายหลัง

การตรวจหาแอปที่เริ่มต้นจากโทรศัพท์ Android

โทรศัพท์ Android สามารถตรวจหาว่าอุปกรณ์ Wear OS ของผู้ใช้มีแอปนาฬิกาของคุณหรือไม่ โดยทำตามขั้นตอนต่อไปนี้

  1. ใช้ NodeClient เพื่อค้นหานาฬิกาทั้งหมดที่เชื่อมต่อกับโทรศัพท์ของ ผู้ใช้ ดูข้อมูลเพิ่มเติมได้ที่ ตัวอย่างตัวช่วย Data Layer ใน GitHub
  2. ใช้ CapabilityClient เพื่อตรวจสอบว่านาฬิกาของผู้ใช้เครื่องใดติดตั้ง แอปของคุณ
  3. หากไม่ได้ติดตั้งแอปในนาฬิกาของผู้ใช้ทั้งหมด ให้ผู้ใช้เปิด Play Store ในอุปกรณ์ Wear OS ที่เหลือจากโทรศัพท์โดยใช้RemoteActivityHelper.startRemoteActivity()วิธี ใช้ URI ของตลาดสำหรับแอป Wear OS ซึ่งอาจแตกต่างจาก URI ของแอปโทรศัพท์ เช่น ใช้ URI ของตลาด เช่น market://details?id=com.example.android.wearable.wear.finddevices

ข้อมูลตำแหน่งสำหรับนาฬิกาที่จับคู่กับ iPhone

สำหรับนาฬิกาที่จับคู่กับ iPhone ให้ใช้ Fused Location Provider (FLP) เพื่อรับข้อมูลตำแหน่งในนาฬิกา ดูข้อมูลเพิ่มเติมได้ที่ ตรวจหาตำแหน่งใน Wear OS

หากมีโทรศัพท์ที่ใช้ร่วมกัน FLP จะใช้โทรศัพท์ที่ใช้ร่วมกันสำหรับ ข้อมูลตำแหน่ง

รับเฉพาะข้อมูลที่จำเป็น

โดยทั่วไป เมื่อได้รับข้อมูลจากอินเทอร์เน็ต ให้รับเฉพาะข้อมูลที่จำเป็นเท่านั้น มิเช่นนั้น คุณอาจทำให้เกิดเวลาในการตอบสนอง การใช้หน่วยความจำ และการใช้แบตเตอรี่ที่ไม่จำเป็น

เมื่อนาฬิกาเชื่อมต่อผ่านการเชื่อมต่อ Bluetooth LE แอปอาจ มีสิทธิ์เข้าถึงแบนด์วิดท์เพียง 4 กิโลไบต์ต่อวินาที ทั้งนี้ขึ้นอยู่กับ นาฬิกา ดังนั้น เราขอแนะนำให้ทำตามขั้นตอนต่อไปนี้

  • ตรวจสอบคำขอและการตอบกลับของเครือข่ายเพื่อหาข้อมูลเพิ่มเติมที่จำเป็นสำหรับแอปโทรศัพท์เท่านั้น
  • ย่อรูปภาพขนาดใหญ่ก่อนส่งผ่านเครือข่ายไปยังนาฬิกา

สำหรับกรณีที่จำเป็นต้องใช้เครือข่ายที่มีแบนด์วิดท์สูง โปรดดู การเข้าถึงเครือข่ายที่มีแบนด์วิดท์สูง

ตัวอย่างโค้ดเพิ่มเติม

ตัวอย่างผู้ช่วย Data Layer แสดงให้เห็นถึงการใช้ API ที่กล่าวถึงในหน้านี้เพิ่มเติม