สื่อสารโดยตรงผ่านเครือข่ายในอุปกรณ์แบบสแตนด์อโลน

เมื่อใช้ 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 ต่อ งานตามกำหนดเวลา