ننصح بأن تعمل تطبيقات Wear OS بشكل مستقل عن الهاتف، حتى يتمكّن المستخدمون من إكمال المهام على الساعة بدون الحاجة إلى هاتف Android أو iOS. إذا كان تطبيق الساعة يتطلّب التفاعل مع الهاتف، عليك تصنيف تطبيق Wear OS على أنّه ليس تطبيقًا مستقلاً واتّخاذ خطوات لضمان توفُّر تطبيق الهاتف للمستخدم.
التخطيط لتطبيقك
يمكنك استخدام مجموعة حزمات تطبيق Android لإنشاء حِزم تطبيقات Android (APK) محسَّنة تلقائيًا تتوافق مع إعدادات جهاز كل مستخدم ضمن بطاقة بيانات المتجر نفسها. يتيح ذلك للمستخدمين تنزيل الرموز والموارد التي يحتاجون إليها فقط لتشغيل تطبيقك.
للحصول على معلومات حول إعداد تطبيقك للتوزيع من خلال "متجر Google Play"، يُرجى الاطّلاع على حِزم تطبيقات Wear OS وتوزيعها ودليل البدء في استخدام مجموعات حزمات تطبيق Android.
بالنسبة إلى التطبيقات الجديدة، يجب أن يكون مستوى واجهة برمجة التطبيقات المستهدَف هو 30 أو أعلى. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة استيفاء متطلبات مستوى واجهة برمجة التطبيقات المستهدَف في Google Play. اضبط قيمة targetSdkVersion على المستوى 30 من واجهة برمجة التطبيقات (Wear OS 3) للمساعدة في ضمان عمل تطبيقك بشكل جيد على أحدث إصدار من النظام الأساسي.
للحصول على معلومات حول طلبات الشبكة والوصول إلى الشبكة ذات النطاق الترددي العالي، يُرجى الاطّلاع على الوصول إلى الشبكة والمزامنة على Wear OS.
تحديد تطبيق على أنّه تطبيق Wear OS
يجب تحديد العلامة
<uses-feature> في ملف بيان Android الخاص بتطبيقك.
للإشارة إلى أنّه تطبيق ساعة، أضِف إدخالاً على النحو التالي:
<uses-feature android:name="android.hardware.type.watch" />
تحديد ما إذا كان التطبيق مستقلاً أو غير مستقل
يُصنّف تطبيق الساعة على أنّه تطبيق مستقل أو غير مستقل:
- تطبيق مستقل: هو تطبيق مستقل تمامًا ولا يتطلّب تطبيقًا على الهاتف لتشغيل الميزات الأساسية. على الرغم من أنّ طلبات "الفتح على الهاتف" مقبولة، يجب أن يوفّر التطبيق وسائل بديلة للمستخدمين لإكمال وظيفة التطبيق، مثل رابط مختصر أو رمز استجابة سريعة، بدون الاعتماد على هاتف مرتبط.
- غير مستقل: تطبيق تابع يتطلّب تطبيقًا على هاتف أو جهاز آخر لتوفير الميزات الأساسية. هذا الخيار هو الأنسب للتطبيقات التي لا يمكنها توفير وسيلة بديلة بسهولة، مثل رمز استجابة سريعة أو رابط مختصر، لإكمال وظيفة أساسية في التطبيق، مثل المصادقة.
ملاحظة: حتى بالنسبة إلى التطبيقات غير المستقلة، يمكن للمستخدمين تثبيت تطبيق Wear OS قبل تطبيق الأجهزة الجوّالة. لذا، إذا رصد تطبيق Wear OS أنّ جهازًا جوّالاً قريبًا لا يتضمّن التطبيق المصاحب اللازم، اطلب من المستخدم تثبيت التطبيق المصاحب.
تتحقّق Google من دقّة حالة التطبيق المستقل أثناء عرضه. تؤثر هذه القيمة في إمكانية ظهور التطبيقات على "متجر Play" على الأجهزة غير المرتبطة، مثل أجهزة Wear OS غير المقترنة بأجهزة محمولة. لن تكون التطبيقات غير المستقلة، بالإضافة إلى التطبيقات التي يصنّفها المطوّرون بشكل غير صحيح على أنّها "مستقلة"، متاحة للمستخدمين على هذه الأجهزة غير المرتبطة.
في تطبيق Wear OS، اضبط قيمة العنصر
meta-data com.google.android.wearable.standalone
في ملف بيان Android لتحديد ما إذا كان تطبيقك مستقلاً أو غير مستقل.
إذا كان تطبيق الساعة تطبيقًا مستقلاً تمامًا، عليك إبلاغ متجر Google Play بذلك من خلال ضبط قيمة com.google.android.wearable.standalone على true:
<meta-data android:name="com.google.android.wearable.standalone" android:value="true" />
إذا كان تطبيق الساعة غير مستقل ويعتمد على تطبيق آخر لتوفير الميزات الأساسية،
اضبط قيمة com.google.android.wearable.standalone على
false. يشير ذلك إلى أنّ تطبيق الساعة يتطلّب جهازًا آخر، ولكنّه لا يؤثر في الترويج لتطبيقك على "متجر Google Play".
ملاحظة:
حتى إذا كانت قيمة com.google.android.wearable.standalone هي
false، يمكن تثبيت تطبيق الساعة
قبل تثبيت تطبيق الهاتف.
لذلك، إذا اكتشف تطبيق الساعة أنّ الهاتف المصاحب لا يتضمّن تطبيق الهاتف اللازم، كما هو موضّح في هذه الصفحة، اطلب من المستخدم تثبيت تطبيق الهاتف.
مساحة تخزين البيانات والرموز البرمجية المشتركة
يمكن مشاركة الرمز بين تطبيق Wear OS وتطبيق الهاتف. على سبيل المثال، يمكن أن يكون الرمز البرمجي الشائع للشبكات في مكتبة مشترَكة.
يمكنك اختياريًا وضع الرمز البرمجي الخاص بشكل جهاز معيّن في وحدة منفصلة.
يمكنك استخدام واجهات برمجة التطبيقات العادية الخاصة بمساحة التخزين في Android لتخزين البيانات محليًا، كما تفعل على الهاتف. على سبيل المثال، يمكنك استخدام واجهات برمجة التطبيقات SharedPreferences أو مكتبة Room للتخزين الدائم.
رصد تطبيقك على جهاز آخر
يمكن لتطبيق الساعة وتطبيق الهاتف المرتبط به أن يرصد كل منهما ما إذا كان التطبيق الآخر متاحًا.
يمكن لتطبيقات الهاتف والساعة استخدام
CapabilityClient للإعلان عن توفّرها
لجهاز مقترن. ويمكنهم إجراء ذلك بشكل ثابت أو ديناميكي.
عندما يكون تطبيق
مثبّتًا على جهاز في شبكة Wear OS الخاصة بالمستخدم، مثل هاتف أو ساعة مقترنة أو
في السحابة الإلكترونية، يتيح الرمز CapabilityClient للتطبيقات الأخرى
اكتشافه. لمزيد من المعلومات، اطّلِع على
ميزات الإعلان.
إذا لم يتمكّن أحد تطبيقاتك من رصد التطبيق الآخر، يمكنك أن تطلب من المستخدم فتح بطاقة بيانات المتجر على الجهاز المتأثر. هذا الحل مخصّص لتطبيقات الساعات التي تتطلّب توفّر تطبيق الهاتف المرتبط بها لتعمل بشكل سليم.
عليك التحقّق مما إذا كان "متجر Play" متاحًا على الجهاز، لأنّه غير متوافق مع بعض الهواتف، مثل هواتف iPhone.
توضّح الأقسام التالية أفضل الممارسات في سيناريوهَين:
- يحتاج تطبيق الساعة المستقل إلى تطبيق الهاتف.
- يحتاج تطبيق الهاتف إلى تطبيق الساعة المستقل.
يمكنك أيضًا مراجعة
نموذج أدوات مساعدة Datalayer الذي يوضّح كيفية استخدام
مكتبات أدوات مساعدة Datalayer، وهي جزء من
Horologist. تتيح لك هذه الفئات مراقبة الاتصال بين جهاز محمول وجهاز Wear OS.
لمزيد من المعلومات حول الفئات الموضّحة في القسم التالي، يُرجى الاطّلاع على مرجع Wear OS API.
يتضمّن هذا المرجع أيضًا معلومات حول الفئة
PhoneTypeHelper التي تحتوي على
الطريقة getPhoneDeviceType() التي تتيح لتطبيق Wear OS التحقّق مما إذا كان الهاتف المصاحب جهاز Android أو iOS.
تحديد أسماء الإمكانات لرصد تطبيقاتك
بالنسبة إلى التطبيق المتوافق مع كل نوع من الأجهزة، سواء كان ساعة أو هاتفًا، حدِّد سلسلة فريدة لاسم الإمكانية في الملف res/values/wear.xml.
على سبيل المثال، في وحدة التطبيق على الأجهزة الجوّالة، يمكن أن يتضمّن الملف wear.xml ما يلي:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_phone_app</item> </string-array> </resources>
في وحدة Wear OS، يتضمّن الملف wear.xml قيمة مختلفة لاسم الإمكانية، مثل ما يلي:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_wear_app</item> </string-array> </resources>
لمزيد من المعلومات، اطّلِع على إمكانات الإعلان.
رصد التطبيقات وفتح عنوان URL من ساعة
يمكن لتطبيق الساعة رصد ما إذا كان الهاتف المصاحب للمستخدم يتضمّن تطبيق الهاتف. اتّبِع الخطوات التالية:
-
استخدِم
CapabilityClientللتحقّق ممّا إذا كان تطبيق الهاتف مثبّتًا على الهاتف المقترن. لمزيد من المعلومات، يُرجى الاطّلاع على نموذج أدوات مساعدة طبقة البيانات على GitHub. -
إذا لم يكن تطبيق "الهاتف" مثبّتًا على الهاتف، استخدِم طريقة
PhoneDeviceType.getPhoneDeviceType()للتحقّق من نوع الهاتف. يُرجى الاطّلاع على القسم التالي لمعرفة التفاصيل. -
إذا تم عرض
PhoneDeviceType.DEVICE_TYPE_ANDROID، يعني ذلك أنّ الهاتف هو هاتف Android. اتّصِلRemoteActivityHelper.startRemoteActivity()على جهاز Wear OS لفتح "متجر Play" على الهاتف. استخدِم معرّف الموارد المنتظم (URI) الخاص بسوق التطبيقات على هاتفك، والذي قد يختلف عن معرّف الموارد المنتظم (URI) الخاص بتطبيق Wear. على سبيل المثال، استخدِم عنوان URI خاصًا بالسوق، مثل:market://details?id=com.example.android.wearable.wear.finddevices. -
إذا تم عرض
PhoneDeviceType.DEVICE_TYPE_IOS، يعني ذلك أنّ الهاتف هو هاتف iOS غير متوافق مع "متجر Play". افتح App Store على هاتف iPhone من خلال الاتصال بـRemoteActivityHelper.startRemoteActivity()على جهاز Wear OS. يمكنك تحديد عنوان URL للتطبيق على iTunes، مثلhttps://itunes.apple.com/us/app/yourappname.لا يمكنك من خلال Wear OS تحديد ما إذا كان تطبيق الهاتف مثبَّتًا على جهاز iOS. في إطار أفضل الممارسات، ننصحك بتوفير آلية تتيح للمستخدم فتح App Store يدويًا.
ملاحظة: استخدِم واجهة برمجة التطبيقات RemoteActivityHelper الموضّحة سابقًا لتحديد أنّه يجب فتح أي عنوان URL على الهاتف من الساعة، وأنه لا يلزم توفّر تطبيق على الهاتف.
تفاصيل حول رصد نوع الهاتف المقترن
في ما يلي مقتطف يستخدم طريقة getPhoneDeviceType() للتحقّق من نوع الهاتف الذي تم إقران الساعة به:
var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)
القيمة التي تعرضها الطريقة getPhoneDeviceType()
هي إحدى القيم التالية:
| القيمة المعروضة | الوصف |
|---|---|
DEVICE_TYPE_ANDROID
|
الهاتف المرافق هو جهاز Android. |
DEVICE_TYPE_IOS
|
الهاتف المصاحب هو جهاز iOS. |
DEVICE_TYPE_UNKNOWN
|
الهاتف المرتبط هو جهاز غير معروف. |
DEVICE_TYPE_ERROR
|
حدث خطأ في تحديد نوع الهاتف المقترن، ويجب إجراء فحص آخر لاحقًا. |
بدء رصد التطبيقات من هاتف Android
يمكن لهاتف Android رصد ما إذا كانت أجهزة Wear OS الخاصة بالمستخدم تتضمّن تطبيق الساعة. اتّبِع الخطوات التالية:
-
باستخدام
NodeClient، ابحث عن جميع الساعات المرتبطة بهاتف المستخدم. لمزيد من المعلومات، يُرجى الاطّلاع على نموذج أدوات مساعدة طبقة البيانات على GitHub. -
باستخدام
CapabilityClient، تحقَّق من الساعات التي ثبَّت عليها المستخدم تطبيقك. -
إذا لم يكن تطبيقك مثبَّتًا على جميع ساعات المستخدم، اطلب منه فتح "متجر Play" على أجهزة Wear OS المتبقية من الهاتف باستخدام الطريقة
RemoteActivityHelper.startRemoteActivity(). استخدِم معرّف الموارد المنتظم (URI) الخاص بسوق تطبيقات Wear OS، والذي قد يختلف عن معرّف الموارد المنتظم (URI) الخاص بتطبيق الهاتف. على سبيل المثال، استخدِم عنوان URI خاصًا بالسوق، مثل:market://details?id=com.example.android.wearable.wear.finddevices.
بيانات الموقع الجغرافي للساعات المقترنة بأجهزة iPhone
بالنسبة إلى الساعات المقترنة بهواتف iPhone، استخدِم موفِّر الموقع المدمج (FLP) للحصول على بيانات الموقع الجغرافي على الساعة. لمزيد من المعلومات، اطّلِع على مقالة رصد الموقع الجغرافي على Wear OS.
إذا كان الهاتف المقترن متاحًا، تستخدم ميزة "موفِّر الموقع المدمج" الهاتف المقترن للحصول على بيانات الموقع الجغرافي.
الحصول على البيانات الضرورية فقط
بشكل عام، عند الحصول على بيانات من الإنترنت، احصل فقط على البيانات الضرورية. وإلا، قد يؤدي ذلك إلى حدوث تأخير غير ضروري، واستهلاك للذاكرة والبطارية.
عند ربط ساعة عبر اتصال Bluetooth LE، قد يتمكّن تطبيقك من الوصول إلى نطاق ترددي يبلغ 4 كيلوبايت في الثانية فقط، وذلك حسب الساعة. لذلك، يُنصح باتّباع الخطوات التالية:
- راجِع طلبات الشبكة وردودها بحثًا عن بيانات إضافية لا تحتاج إليها إلا تطبيقات الهواتف.
- تصغير الصور الكبيرة قبل إرسالها عبر شبكة إلى ساعة
في الحالات التي تتطلّب شبكة ذات معدل نقل بيانات عالٍ، يُرجى الاطّلاع على الوصول إلى شبكة ذات معدل نقل بيانات عالٍ.
عيّنات تعليمات برمجية إضافية
يوضّح نموذج أدوات المساعدة في طبقة البيانات كيفية استخدام واجهات برمجة التطبيقات الموضّحة في هذه الصفحة.