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