التواصل مباشرةً عبر شبكة على أجهزة مستقلة

باستخدام Wear OS من Google، يمكن للساعة الاتصال بإحدى الشبكات مباشرةً، بدون هاتف Android أو iOS. لا تستخدم واجهة برمجة تطبيقات طبقة البيانات لتوصيل تطبيق 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"));

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

للمساعدة في ضمان تنفيذ المهام في الخلفية بشكل صحيح، يجب على المستخدمين مراعاة لكل من القيلولة وتطبيقات وضع الاستعداد.

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

الجدولة مع قيود

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

  • قم بجدولة طلب يتطلب الاتصال بالشبكة.

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

  • يمكنك جدولة طلب أثناء الشحن.

  • يمكنك جدولة طلب عندما يكون الجهاز غير نشِط لمدة معيّنة. هذا مفيد عمل خلفية أو مزامنة ذات أولوية منخفضة، خاصةً عندما شحن الجهاز.

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