الوصول إلى الشبكة ومزامنتها على نظام التشغيل Wear OS

باستخدام "Wear OS من Google"، يمكن للساعة الاتصال بإحدى الشبكات مباشرةً، بدون الوصول إلى هاتف Android أو iOS. لا تستخدم واجهة برمجة التطبيقات Data Layer API لربط تطبيق Wear OS بإحدى الشبكات. بدلاً من ذلك، اتّبِع الإرشادات والخطوات الواردة في هذا الدليل.

الوصول إلى الشبكة

يمكن لتطبيقات Wear OS إجراء طلبات الشبكة. عندما تكون الساعة متصلة بهاتف عبر البلوتوث، يتم بشكل عام إنشاء خادم وكيل لحركة بيانات الشبكة في الساعة.

وفي حال عدم توفّر الهاتف، يتم استخدام شبكة Wi-Fi وشبكات الجوّال بناءً على جهاز الساعة. يعالج نظام Wear OS عمليات الانتقال بين الشبكات.

يمكنك استخدام بروتوكولات مثل HTTP وTCP وUDP. ولا تتوفّر واجهات برمجة التطبيقات android.webkit، بما في ذلك الفئة CookieManager. يمكنك استخدام ملفات تعريف الارتباط من خلال قراءة العناوين وكتابتها في الطلبات والردود.

ننصحك أيضًا باستخدام واجهة برمجة تطبيقات WorkManager للطلبات غير المتزامنة، بما في ذلك استطلاع الرأي على فترات زمنية منتظمة.

إذا كنت بحاجة إلى الاتصال بأنواع شبكات معيّنة، راجِع حالة شبكة القراءة.

الوصول إلى الشبكة ذات النطاق الترددي العالي

يدير نظام Wear OS إمكانية الاتصال بالشبكة بهدف توفير أفضل تجربة مستخدم بشكل عام. تختار المنصة الشبكة النشطة التلقائية من خلال تحقيق التوازن بين الهدفَين التاليَين:

  • عمر بطارية طويل
  • النطاق الترددي للشبكة

عند إعطاء الأولوية للحفاظ على البطارية، قد لا يتوفّر معدل نقل بيانات كافٍ في الشبكة النشطة لتنفيذ مهام الشبكة، مثل نقل الملفات الكبيرة أو بث الوسائط.

يقدّم هذا القسم إرشادات حول استخدام الفئة 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. للحفاظ على عمر البطارية، ارفع إصبعك عن معاودة الاتصال كما هو موضح في المثال التالي عندما لم تعد بحاجة إلى شبكة Wi-Fi.

Kotlin

connectivityManager.bindProcessToNetwork(null)
connectivityManager.unregisterNetworkCallback(callback)

Java

connectivityManager.bindProcessToNetwork(null);
connectivityManager.unregisterNetworkCallback(callback);

تشغيل نشاط إعدادات Wi-Fi

عند طلب شبكة Wi-Fi، يحاول النظام الاتصال بإحدى الشبكات المحفوظة إذا تم ضبط هذه الشبكة وكانت في النطاق. في حال عدم توفّر شبكة Wi-Fi محفوظة، لا يتم استدعاء طريقة معاودة الاتصال onAvailable() على مثيل NetworkCallback.

إذا كنت تستخدم Handler لإنهاء مهلة طلب الشبكة، يمكنك توجيه المستخدم لإضافة شبكة Wi-Fi عند انقضاء المهلة. توجيه المستخدم مباشرةً إلى نشاط إضافة شبكة Wi-Fi باستخدام الغرض التالي:

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"));

لتشغيل نشاط الإعدادات، يجب أن يحصل تطبيقك على الإذن التالي: android.permission.CHANGE_WIFI_STATE.

اعتبارات واجهة المستخدم

وإذا كان تطبيقك يتطلّب الاتصال بشبكة Wi-Fi جديدة لإجراء عملية ذات معدّل نقل بيانات عالي، تأكَّد من أنّ سبب الاتصال واضح للمستخدم قبل بدء تشغيل إعدادات Wi-Fi. ولا تطلب من المستخدم إضافة شبكة Wi-Fi جديدة إلا عندما يكون ذلك مطلوبًا شبكة ذات معدّل نقل بيانات عالي. لا تحظر المستخدم من الوصول إلى ميزات التطبيقات التي لا تتطلب شبكة ذات معدّل نقل بيانات عالٍ.

يعرض الشكل 1 تطبيق موسيقى. يتيح التطبيق للمستخدم تصفُّح الموسيقى على شبكة ذات معدّل نقل بيانات منخفض ولا يتطلب من المستخدم إضافة شبكة Wi-Fi جديدة إلا إذا أراد تنزيل الموسيقى أو بثّها.

جارٍ تنزيل الموسيقى

الشكل 1. مسار تطبيق الموسيقى لتنزيل الموسيقى.

اعتبارات الطاقة واستخدام البيانات

للمساعدة في الحفاظ على عمر البطارية وتقليل استخدام بيانات شبكة الجوّال، يمكنك تأجيل أي مهام غير أساسية بالشبكات، مثل إعداد تقارير إحصائية أو جمع السجلات، إلى أن يُعيد جهاز Wear OS الاتصال عبر البلوتوث أو Wi-Fi.

خدمة المراسلة عبر السحابة الإلكترونية

لإرسال الإشعارات، يمكن للتطبيقات استخدام خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" (FCM) مباشرةً.

لا تتوفّر واجهات برمجة تطبيقات للوصول إلى الشبكة أو المراسلة عبر السحابة الإلكترونية من Firebase فقط لنظام Wear OS. يمكنك الرجوع إلى المستندات الحالية بشأن الاتصال بشبكة وخدمة المراسلة عبر السحابة الإلكترونية.

تعمل ميزة "المراسلة عبر السحابة الإلكترونية من Firebase" بشكل جيد مع Doze، وهي الوسيلة المقترَحة لإرسال إشعارات إلى الساعة.

يمكنك تقديم الرسائل من خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" من خلال جمع الرمز المميّز للتسجيل لجهاز عند تشغيل تطبيق Wear OS. بعد ذلك، عليك تضمين الرمز المميّز كجزء من الوجهة عندما يرسل خادمك رسائل إلى نقطة نهاية FCM REST. ترسل خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" الرسائل إلى الجهاز الذي تم تحديده من خلال الرمز المميّز.

تكون رسالة "المراسلة عبر السحابة الإلكترونية من Firebase" بتنسيق JavaScript Object Notation (JSON) ويمكن أن تتضمّن إحدى الحمولات التالية أو كلتيهما:

  • حمولة الإشعارات: عندما تتلقّي ساعة بيانات حمولة الإشعارات، يتم عرض البيانات للمستخدم مباشرةً في مصدر الإشعارات. عندما ينقر المستخدم على الإشعار، يتم تشغيل التطبيق.
  • حمولة البيانات: تحتوي الحمولة على مجموعة من أزواج المفاتيح المخصّصة أو القيم المخصّصة. يتم تسليم الحمولة كبيانات إلى تطبيق Wear OS.

للاطّلاع على مزيد من المعلومات وأمثلة على الحمولات، يُرجى الاطّلاع على لمحة عن رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".

يتم تلقائيًا نقل الإشعارات من تطبيق هاتف إلى ساعة. إذا كان لديك تطبيق Wear OS مستقل وتطبيق هاتف مماثل، قد تظهر إشعارات مكرَّرة. على سبيل المثال، يمكن أن يتم عرض إشعار فردي من "المراسلة عبر السحابة الإلكترونية من Firebase" من خلال الهاتف والساعة على كلا الجهازين بشكل مستقل. ويمكنك منع ذلك باستخدام واجهات برمجة التطبيقات الوسيطة.

استخدام خدمات الخلفية

للمساعدة في ضمان تنفيذ المهام في الخلفية بشكل صحيح، يجب أن تأخذ في الاعتبار Doze وApp Standby.

عند إيقاف تشغيل شاشة أو دخول وضع عدم النشاط لفترة طويلة، يمكن أن يحدث مجموعة فرعية من القيلولة، ويمكن تأجيل المهام في الخلفية لفترات معينة. في وقت لاحق، عندما يكون الجهاز في وضع الثبات لفترة طويلة، يحدث القيلولة العادية. يمكنك جدولة الطلبات باستخدام واجهة برمجة التطبيقات WorkManager، والتي تتيح لتطبيقك تسجيل تنفيذ رمز Doze-safe.

تحديد موعد مع قيود مفروضة

يمكنك استخدام القيود لضبط الطلبات بطريقة تحافظ على عمر البطارية. حدد واحدًا أو أكثر من القيود التالية لتضمينها في طلباتك:

  • جدولة طلب يتطلب الاتصال بالشبكات. حدِّد ما إذا كانت السمة NetworkType هي CONNECTED أو UNMETERED. تُستخدم UNMETERED لعمليات نقل البيانات الكبيرة، بينما تُستخدم السمة CONNECTED لعمليات النقل الصغيرة.
  • يمكنك جدولة طلب أثناء شحن الجهاز.
  • يمكنك جدولة طلب عندما يكون الجهاز غير نشِط لفترة قصيرة. ويكون ذلك مفيدًا للعمل أو المزامنة الأقل أولوية في الخلفية، خاصةً أثناء شحن الجهاز.

تجدُر الإشارة إلى أنّ بعض الشبكات ذات معدّل نقل البيانات المنخفض، مثل Bluetooth LE، تُعتبر ذات سعة محدودة.

لمزيد من المعلومات، راجِع دليل تأثير القيود على العمل الدوري الصادر عن مدير Work.