Wear OS by Google ช่วยให้นาฬิกาสื่อสารกับเครือข่ายได้โดยตรงโดยไม่ต้องมีสิทธิ์เข้าถึงโทรศัพท์ Android หรือ iOS ห้ามใช้ Data Layer API เพื่อเชื่อมต่อแอป Wear OS กับเครือข่าย แต่ให้ทำตามหลักเกณฑ์และขั้นตอนในคำแนะนำนี้แทน
การเข้าถึงเครือข่าย
แอป Wear OS สามารถส่งคำขอเครือข่ายได้ เมื่อนาฬิกามีการเชื่อมต่อบลูทูธ กับโทรศัพท์ โดยทั่วไปแล้ว ระบบจะพร็อกซีการรับส่งข้อมูลเครือข่ายของนาฬิกาผ่าน โทรศัพท์
เมื่อโทรศัพท์ไม่พร้อมใช้งาน ระบบจะใช้เครือข่าย Wi-Fi และเครือข่ายมือถือ ทั้งนี้ขึ้นอยู่กับ ฮาร์ดแวร์ของนาฬิกา แพลตฟอร์ม Wear OS จะจัดการการเปลี่ยนระหว่างเครือข่าย
คุณใช้โปรโตคอลต่างๆ เช่น HTTP, TCP และ UDP ได้ อย่างไรก็ตาม API ของ
android.webkit รวมถึงคลาส CookieManager จะไม่
พร้อมใช้งาน คุณใช้คุกกี้ได้โดยการอ่านและเขียนส่วนหัวในคำขอและ
การตอบกลับ
ใช้ WorkManager สำหรับคำขอแบบอะซิงโครนัส รวมถึงการสำรวจเป็นประจำ
หากต้องการเชื่อมต่อกับเครือข่ายบางประเภท โปรดดูการอ่านสถานะเครือข่าย
การเข้าถึงเครือข่ายแบนด์วิดท์สูง
แพลตฟอร์ม Wear OS จัดการการเชื่อมต่อเครือข่ายโดยมีเป้าหมายเพื่อมอบ ประสบการณ์การใช้งานโดยรวมที่ดีที่สุด แพลตฟอร์มจะเลือกเครือข่ายที่ใช้งานอยู่เริ่มต้นโดย พิจารณาทั้ง 2 อย่าง ได้แก่ ระยะเวลาการใช้งานแบตเตอรี่ที่นานและแบนด์วิดท์เครือข่าย
เมื่อให้ความสำคัญกับการถนอมแบตเตอรี่ เครือข่ายที่ใช้งานอยู่อาจมี แบนด์วิดท์ไม่เพียงพอสำหรับงานในเครือข่าย เช่น การโอนไฟล์ขนาดใหญ่หรือการสตรีม สื่อ
ส่วนนี้จะให้คำแนะนำเกี่ยวกับการใช้คลาส ConnectivityManager เพื่อ
ช่วยให้มั่นใจว่าแอปมีแบนด์วิดท์เครือข่ายที่ต้องการ ดูข้อมูลทั่วไปเกี่ยวกับการควบคุมทรัพยากรเครือข่ายอย่างละเอียดได้ที่หัวข้อจัดการการใช้งานเครือข่าย
ขอการเชื่อมต่อ Wi-Fi
สำหรับกรณีการใช้งานที่ต้องมีการเข้าถึงเครือข่ายที่มีแบนด์วิดท์สูง เช่น การส่ง ไฟล์ขนาดใหญ่หรือการสตรีมสื่อ ให้ขอการเชื่อมต่อที่มีการรับส่งข้อมูลที่มีแบนด์วิดท์สูง เช่น Wi-Fi ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการดำเนินการนี้
val callback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { super.onAvailable(network) // The Wi-Fi network has been acquired. Bind it to use this network by default. connectivityManager.bindProcessToNetwork(network) } override fun onLost(network: Network) { super.onLost(network) // Called when a network disconnects or otherwise no longer satisfies this request // or callback. } } fun requestWifiNetwork() { connectivityManager.requestNetwork( NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(), callback ) }
การรับเครือข่ายอาจไม่เกิดขึ้นทันทีเนื่องจากวิทยุ Wi-Fi หรือ
เซลลูลาร์ของนาฬิกาอาจปิดอยู่เพื่อประหยัดแบตเตอรี่ หากนาฬิกาเชื่อมต่อกับ
เครือข่ายไม่ได้ ระบบจะไม่เรียกใช้เมธอด onAvailable() ของอินสแตนซ์ NetworkCallback
เมื่อเรียกใช้ onAvailable() แล้ว อุปกรณ์จะพยายามเชื่อมต่อกับเครือข่าย Wi-Fi ต่อไปจนกว่าจะมีการเรียกใช้ NetworkCallback หากต้องการประหยัดแบตเตอรี่
ให้ปล่อยการเรียกกลับตามที่แสดงในตัวอย่างต่อไปนี้เมื่อไม่ต้องการ
เครือข่าย Wi-Fi อีกต่อไป
connectivityManager.bindProcessToNetwork(null) connectivityManager.unregisterNetworkCallback(callback)
เปิดกิจกรรมการตั้งค่า Wi-Fi
เมื่อขอเครือข่าย Wi-Fi ระบบจะพยายามเชื่อมต่อกับเครือข่ายที่บันทึกไว้
หากมีการกำหนดค่าและอยู่ในระยะ หากไม่มีเครือข่าย Wi-Fi ที่บันทึกไว้ ระบบจะไม่เรียกใช้onAvailableเมธอดการเรียกกลับของอินสแตนซ์ NetworkCallback
หากใช้ Handler เพื่อกำหนดเวลาคำขอเครือข่าย คุณสามารถนำ
ผู้ใช้ให้เพิ่มเครือข่าย Wi-Fi เมื่อเกิดการหมดเวลาได้ ส่งผู้ใช้ไปยัง
กิจกรรมเพื่อเพิ่มเครือข่าย Wi-Fi โดยตรงโดยใช้ Intent ต่อไปนี้
val networkSettingsAction = "com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS" val intent = Intent(networkSettingsAction).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } context.startActivity(intent)
หากต้องการเปิดกิจกรรมการตั้งค่า แอปของคุณต้องมีCHANGE_WIFI_STATE
สิทธิ์
ข้อควรพิจารณาเกี่ยวกับอินเทอร์เฟซผู้ใช้
หากแอปของคุณต้องเชื่อมต่อกับเครือข่าย Wi-Fi ใหม่เพื่อดำเนินการที่มีแบนด์วิดท์สูง คุณควรขอสิทธิ์นี้อย่างราบรื่นและเผยแพร่ตามที่จำเป็น หากไม่มีเครือข่าย Wi-Fi ให้แจ้งว่าฟีเจอร์นี้ต้องใช้ Wi-Fi และระบุวิธีเปิดใช้กิจกรรมการตั้งค่า Wi-Fi อย่าบล็อกไม่ให้ผู้ใช้เข้าถึงฟีเจอร์ของแอปที่ไม่ต้องใช้เครือข่ายที่มีแบนด์วิดท์สูง
ข้อควรพิจารณาเกี่ยวกับการใช้พลังงานและข้อมูล
เพื่อช่วยยืดอายุการใช้งานแบตเตอรี่และลดการใช้อินเทอร์เน็ตมือถือ ให้เลื่อนงานเครือข่ายที่ไม่จำเป็น เช่น การรายงานข้อมูลวิเคราะห์หรือการรวบรวมบันทึก จนกว่าอุปกรณ์ Wear OS จะเชื่อมต่อบลูทูธหรือ Wi-Fi อีกครั้ง แทนที่จะเป็นการเชื่อมต่อ LTE หรือการเชื่อมต่อแบบคิดตามปริมาณการใช้งาน
Cloud Messaging
หากต้องการส่งการแจ้งเตือน ให้ใช้ Firebase Cloud Messaging (FCM) โดยตรง
ไม่มี API สำหรับการเข้าถึงเครือข่ายหรือ FCM ที่เฉพาะเจาะจงสำหรับ Wear OS โปรดดูเอกสารประกอบที่มีอยู่เกี่ยวกับการเชื่อมต่อเครือข่ายและการรับส่งข้อความในระบบคลาวด์
FCM ทำงานได้ดีกับโหมดพักและเป็นวิธีที่แนะนำในการส่งการแจ้งเตือน ไปยังนาฬิกา
จัดเตรียมข้อความจาก FCM โดยการรวบรวมโทเค็นการลงทะเบียนสำหรับอุปกรณ์ เมื่อแอป Wear OS ทำงาน จากนั้นให้รวมโทเค็นเป็นส่วนหนึ่งของปลายทาง เมื่อเซิร์ฟเวอร์ส่งข้อความไปยังปลายทาง REST ของ FCM FCM จะส่งข้อความไปยัง อุปกรณ์ที่ระบุโดยโทเค็น
ข้อความ FCM อยู่ในรูปแบบ JavaScript Object Notation (JSON) และอาจมีเพย์โหลดต่อไปนี้อย่างใดอย่างหนึ่งหรือทั้ง 2 อย่าง
- เพย์โหลดการแจ้งเตือน: เมื่อนาฬิกาได้รับเพย์โหลดการแจ้งเตือน ข้อมูลจะแสดงต่อผู้ใช้โดยตรงในสตรีมการแจ้งเตือน เมื่อผู้ใช้แตะการแจ้งเตือน แอปของคุณจะเปิดขึ้น
- เพย์โหลดข้อมูล: เมื่อเพย์โหลดมีชุดคู่คีย์หรือค่าที่กำหนดเอง ระบบจะส่งเพย์โหลดเป็นข้อมูลไปยังแอป Wear OS
ดูข้อมูลเพิ่มเติมและตัวอย่างเพย์โหลดได้ที่ประเภทข้อความ
โดยค่าเริ่มต้น ระบบจะบริดจ์การแจ้งเตือนจากแอปในโทรศัพท์ไปยังนาฬิกา หากคุณมี แอป Wear OS แบบสแตนด์อโลนและแอปโทรศัพท์ที่สอดคล้องกัน คุณอาจได้รับการแจ้งเตือนซ้ำ ตัวอย่างเช่น การแจ้งเตือนรายการเดียวจาก FCM ที่ทั้งโทรศัพท์และนาฬิกาได้รับอาจแสดงในอุปกรณ์ทั้ง 2 เครื่องแยกกัน คุณป้องกันปัญหานี้ได้โดยใช้ API การเชื่อมต่อ
ใช้บริการที่ทำงานอยู่เบื้องหลัง
งานในเบื้องหลังต้องคำนึงถึงโหมดพักเครื่องและโหมดสแตนด์บายของแอปเพื่อให้มั่นใจว่าระบบจะเรียกใช้งานอย่างถูกต้อง
เมื่อหน้าจอปิดหรือเข้าสู่โหมดแอมเบียนท์เป็นเวลานานพอ ระบบจะเข้าสู่โหมดพักบางส่วน
และเลื่อนงานในเบื้องหลังออกไปได้ในช่วงระยะเวลาหนึ่ง
ต่อมาเมื่ออุปกรณ์อยู่กับที่เป็นเวลานานขึ้น ระบบจะเข้าสู่โหมดพักแอปปกติ
กำหนดเวลาคำขอด้วย WorkManager API ซึ่งช่วยให้แอปของคุณลงทะเบียน
เพื่อการดำเนินการโค้ดที่ปลอดภัยในโหมดพักได้
กำหนดเวลาโดยมีข้อจำกัด
คุณใช้ข้อจำกัดเพื่อกำหนดค่าคำขอในลักษณะที่ช่วยประหยัดแบตเตอรี่ได้ เลือกข้อจํากัดต่อไปนี้อย่างน้อย 1 รายการเพื่อรวมไว้ในคําขอ
กำหนดเวลาคำขอที่ต้องใช้เครือข่าย
ระบุว่า
NetworkTypeเป็นCONNECTEDหรือUNMETEREDUNMETEREDใช้สำหรับการโอนข้อมูลขนาดใหญ่ ส่วนCONNECTEDใช้สำหรับการโอนขนาดเล็กตั้งเวลาคำขอขณะชาร์จ
กำหนดเวลาคำขอขณะที่อุปกรณ์ไม่มีการใช้งาน ซึ่งมีประโยชน์สำหรับ งานพื้นหลังหรือการซิงค์ที่มีลำดับความสำคัญต่ำ โดยเฉพาะอย่างยิ่งเมื่อ อุปกรณ์กำลังชาร์จ
ดูข้อมูลเพิ่มเติมได้ในคู่มือผลกระทบของข้อจำกัดต่อ งานที่ทำเป็นระยะของ WorkManager