Wear OS के लिए अलग-अलग बनाम स्टैंडअलोन ऐप्लिकेशन

हमारा सुझाव है कि Wear OS ऐप्लिकेशन, फ़ोन से अलग काम करें. इससे उपयोगकर्ता, Android या iOS फ़ोन का ऐक्सेस न होने पर भी, स्मार्टवॉच पर टास्क पूरे कर पाएंगे. अगर आपके स्मार्टवॉच ऐप्लिकेशन को फ़ोन से कनेक्ट करने की ज़रूरत होती है, तो आपको अपने Wear OS ऐप्लिकेशन को नॉन-स्टैंडअलोन के तौर पर मार्क करना होगा. साथ ही, यह पक्का करना होगा कि उपयोगकर्ता के पास फ़ोन ऐप्लिकेशन उपलब्ध हो.

अपने ऐप्लिकेशन के लिए प्लान बनाना

Android ऐप्लिकेशन बंडल का इस्तेमाल करके, हर उपयोगकर्ता के डिवाइस कॉन्फ़िगरेशन के हिसाब से ऑप्टिमाइज़ किए गए Android पैकेज किट (एपीके) अपने-आप जनरेट किए जा सकते हैं. ये सभी एपीके, एक ही ऐप्लिकेशन लिस्टिंग के तहत जनरेट किए जाते हैं. इससे उपयोगकर्ता, सिर्फ़ उस कोड और रिसॉर्स को डाउनलोड कर पाते हैं जिनकी उन्हें आपका ऐप्लिकेशन चलाने के लिए ज़रूरत होती है.

Google Play Store के ज़रिए ऐप्लिकेशन उपलब्ध कराने के लिए, उसे सेट अप करने के बारे में जानकारी पाने के लिए, Wear OS ऐप्लिकेशन पैकेज करना और उन्हें उपलब्ध कराना लेख पढ़ें. साथ ही, Android ऐप्लिकेशन बंडल का इस्तेमाल शुरू करने के बारे में गाइड पढ़ें.

नए ऐप्लिकेशन के लिए, टारगेट एपीआई लेवल 30 या उसके बाद का होना चाहिए. ज़्यादा जानकारी के लिए, Google Play के टारगेट एपीआई लेवल की ज़रूरी शर्तें पूरी करना लेख पढ़ें. targetSdkVersion को एपीआई लेवल 30 (Wear OS 3) पर सेट करें. इससे यह पक्का करने में मदद मिलेगी कि आपका ऐप्लिकेशन, प्लैटफ़ॉर्म के नए वर्शन पर अच्छी तरह काम करता है.

नेटवर्क के अनुरोधों और ज़्यादा बैंडविथ वाले नेटवर्क के ऐक्सेस के बारे में जानकारी पाने के लिए, Wear OS पर नेटवर्क ऐक्सेस और सिंक करने की सुविधा लेख पढ़ें.

किसी ऐप्लिकेशन को Wear OS ऐप्लिकेशन के तौर पर तय करना

आपको अपने ऐप्लिकेशन की Android मेनिफ़ेस्ट फ़ाइल में, <uses-feature> टैग को तय करना होगा. यह स्मार्टवॉच के लिए बना ऐप्लिकेशन है, यह बताने के लिए इस तरह की एंट्री जोड़ें:

<uses-feature android:name="android.hardware.type.watch" />

किसी ऐप्लिकेशन की पहचान स्टैंडअलोन या नॉन-स्टैंडअलोन के तौर पर करना

वॉच ऐप्लिकेशन को स्टैंडअलोन या नॉन-स्टैंडअलोन माना जाता है:

  • स्टैंडअलोन: यह पूरी तरह से स्वतंत्र ऐप्लिकेशन होता है. इसकी मुख्य सुविधाओं के लिए, फ़ोन ऐप्लिकेशन की ज़रूरत नहीं होती. "फ़ोन पर खोलें" प्रॉम्प्ट स्वीकार किए जाते हैं. हालांकि, ऐप्लिकेशन को उपयोगकर्ताओं के लिए, ऐप्लिकेशन के फ़ंक्शन को पूरा करने के अन्य तरीके उपलब्ध कराने चाहिए. जैसे, शॉर्टलिंक या क्यूआर कोड. इसके लिए, उन्हें टेथर किए गए फ़ोन पर निर्भर नहीं रहना चाहिए.
  • नॉन-स्टैंडअलोन: यह एक ऐसा ऐप्लिकेशन होता है जो किसी दूसरे ऐप्लिकेशन पर निर्भर होता है. इसके मुख्य फ़ीचर इस्तेमाल करने के लिए, फ़ोन या किसी दूसरे डिवाइस पर ऐप्लिकेशन होना ज़रूरी है. यह विकल्प उन ऐप्लिकेशन के लिए सबसे सही है जो पुष्टि करने जैसे मुख्य फ़ंक्शन को पूरा करने के लिए, आसानी से कोई दूसरा तरीका उपलब्ध नहीं करा सकते. जैसे, क्यूआर कोड या छोटा लिंक.

ध्यान दें: स्टैंडअलोन ऐप्लिकेशन के अलावा, अन्य ऐप्लिकेशन के लिए भी लोग मोबाइल ऐप्लिकेशन से पहले Wear OS ऐप्लिकेशन इंस्टॉल कर सकते हैं. इसलिए, अगर आपके Wear OS ऐप्लिकेशन को पता चलता है कि आस-पास मौजूद हैंडहेल्ड डिवाइस में ज़रूरी साथी ऐप्लिकेशन नहीं है, तो उपयोगकर्ता को साथी ऐप्लिकेशन इंस्टॉल करने के लिए कहें.

Google, ऐप्लिकेशन दिखाने के दौरान, ऐप्लिकेशन के स्टैंडअलोन स्टेटस की पुष्टि करता है. इस वैल्यू से, Play Store में उन डिवाइसों पर ऐप्लिकेशन के दिखने पर असर पड़ता है जो किसी दूसरे डिवाइस से कनेक्ट नहीं हैं. जैसे, Wear OS डिवाइस जो हैंडहेल्ड डिवाइसों से पेयर नहीं किए गए हैं. जिन ऐप्लिकेशन को स्टैंडअलोन ऐप्लिकेशन के तौर पर डिज़ाइन नहीं किया गया है वे इन डिवाइसों पर उपलब्ध नहीं होते. इसके अलावा, जिन ऐप्लिकेशन को डेवलपर ने "स्टैंडअलोन" के तौर पर गलत तरीके से डिज़ाइन किया है वे भी इन डिवाइसों पर उपलब्ध नहीं होते.

अपने Wear OS ऐप्लिकेशन में, Android मेनिफ़ेस्ट फ़ाइल में मौजूद meta-data एलिमेंट com.google.android.wearable.standalone की वैल्यू सेट करें. इससे यह एलान किया जा सकेगा कि आपका ऐप्लिकेशन स्टैंडअलोन है या नॉन-स्टैंडअलोन.

अगर आपकी स्मार्टवॉच का ऐप्लिकेशन, पूरी तरह से स्वतंत्र और स्टैंडअलोन ऐप्लिकेशन है, तो Google Play Store को इसकी जानकारी दें. इसके लिए, 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 Store पर आपके ऐप्लिकेशन के प्रमोशन पर कोई असर नहीं पड़ता.

ध्यान दें: अगर com.google.android.wearable.standalone की वैल्यू false है, तब भी फ़ोन ऐप्लिकेशन इंस्टॉल होने से पहले, स्मार्टवॉच ऐप्लिकेशन इंस्टॉल किया जा सकता है. इसलिए, अगर आपकी स्मार्टवॉच का ऐप्लिकेशन यह पता लगाता है कि कंपैनियन फ़ोन में ज़रूरी फ़ोन ऐप्लिकेशन नहीं है, तो उपयोगकर्ता को फ़ोन ऐप्लिकेशन इंस्टॉल करने के लिए कहें. इस पेज पर, ज़रूरी फ़ोन ऐप्लिकेशन के बारे में बताया गया है.

शेयर किया गया कोड और डेटा स्टोरेज

Wear OS ऐप्लिकेशन और फ़ोन ऐप्लिकेशन के बीच कोड शेयर किया जा सकता है. उदाहरण के लिए, नेटवर्किंग के लिए इस्तेमाल होने वाला सामान्य कोड, शेयर की गई लाइब्रेरी में हो सकता है.

इसके अलावा, डिवाइस के नाप या आकार के हिसाब से कोड को अलग मॉड्यूल में रखा जा सकता है.

डेटा को अपने डिवाइस पर सेव करने के लिए, Android के स्टैंडर्ड स्टोरेज एपीआई का इस्तेमाल किया जा सकता है. ठीक वैसे ही जैसे किसी फ़ोन पर किया जाता है. उदाहरण के लिए, SharedPreferences APIs या Room परसिस्टेंस लाइब्रेरी का इस्तेमाल किया जा सकता है.

किसी दूसरे डिवाइस पर आपके ऐप्लिकेशन का पता लगाना

आपकी स्मार्टवॉच पर मौजूद ऐप्लिकेशन और उससे जुड़ा फ़ोन ऐप्लिकेशन, दोनों यह पता लगा सकते हैं कि दूसरा ऐप्लिकेशन उपलब्ध है या नहीं.

आपके फ़ोन और स्मार्टवॉच के ऐप्लिकेशन, CapabilityClient का इस्तेमाल करके, पेयर किए गए डिवाइस पर अपनी मौजूदगी का विज्ञापन दिखा सकते हैं. ऐसा स्टैटिक या डाइनैमिक तरीके से किया जा सकता है.

जब कोई ऐप्लिकेशन, उपयोगकर्ता के Wear OS नेटवर्क के किसी नोड पर होता है, जैसे कि फ़ोन, जोड़ी गई स्मार्टवॉच या क्लाउड पर, तो CapabilityClient की मदद से अन्य ऐप्लिकेशन इसका पता लगा सकते हैं. ज़्यादा जानकारी के लिए, विज्ञापन दिखाने की सुविधाएं लेख पढ़ें.

अगर आपका कोई ऐप्लिकेशन, दूसरे ऐप्लिकेशन का पता नहीं लगा पाता है, तो उपयोगकर्ता को उस डिवाइस पर Play Store पेज खोलने के लिए कहा जा सकता है जिस पर समस्या आ रही है. यह स्मार्टवॉच ऐप्लिकेशन के लिए एक समाधान है. इसके ज़रिए, स्मार्टवॉच ऐप्लिकेशन को ठीक से काम करने के लिए, कंपैनियन फ़ोन ऐप्लिकेशन की ज़रूरत होती है.

आपको यह देखना होगा कि डिवाइस पर Play Store उपलब्ध है या नहीं. ऐसा इसलिए, क्योंकि सभी फ़ोन पर Play Store काम नहीं करता. जैसे, iPhone पर Play Store काम नहीं करता.

यहां दिए गए सेक्शन में, दो स्थितियों के लिए सबसे सही तरीकों के बारे में बताया गया है:

  • आपके स्टैंडअलोन वॉच ऐप्लिकेशन को फ़ोन ऐप्लिकेशन की ज़रूरत होती है.
  • आपके फ़ोन ऐप्लिकेशन को स्टैंडअलोन स्मार्टवॉच ऐप्लिकेशन की ज़रूरत है.

डेटालेयर हेल्पर के सैंपल की समीक्षा भी की जा सकती है. इससे पता चलता है कि 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>

ज़्यादा जानकारी के लिए, विज्ञापन दिखाने की सुविधाएं लेख पढ़ें.

स्मार्टवॉच से ऐप्लिकेशन का पता लगाना और यूआरएल खोलना

स्मार्टवॉच ऐप्लिकेशन यह पता लगा सकता है कि उपयोगकर्ता के कंपैनियन फ़ोन में आपका फ़ोन ऐप्लिकेशन है या नहीं. इसके लिए, यह तरीका अपनाएं:

  1. CapabilityClient का इस्तेमाल करके देखें कि आपके फ़ोन पर, जोड़े गए फ़ोन का ऐप्लिकेशन इंस्टॉल है या नहीं. ज़्यादा जानकारी के लिए, GitHub पर मौजूद डेटालेयर हेल्पर का सैंपल देखें.
  2. अगर आपके फ़ोन में फ़ोन ऐप्लिकेशन इंस्टॉल नहीं है, तो फ़ोन का टाइप देखने के लिए, PhoneDeviceType.getPhoneDeviceType() तरीके का इस्तेमाल करें. ज़्यादा जानकारी के लिए, यहां दिया गया सेक्शन देखें.
  3. अगर PhoneDeviceType.DEVICE_TYPE_ANDROID वापस मिलता है, तो इसका मतलब है कि फ़ोन एक Android फ़ोन है. Wear OS डिवाइस पर कॉल RemoteActivityHelper.startRemoteActivity() करके, फ़ोन पर Play Store खोलें. अपने फ़ोन ऐप्लिकेशन के लिए मार्केट यूआरआई का इस्तेमाल करें. यह आपके Wear ऐप्लिकेशन के यूआरआई से अलग हो सकता है. उदाहरण के लिए, मार्केट यूआरआई का इस्तेमाल करें. जैसे: market://details?id=com.example.android.wearable.wear.finddevices.
  4. अगर PhoneDeviceType.DEVICE_TYPE_IOS वैल्यू मिलती है, तो इसका मतलब है कि फ़ोन एक iOS फ़ोन है और इसमें Play Store उपलब्ध नहीं है. Wear OS डिवाइस पर RemoteActivityHelper.startRemoteActivity() को कॉल करके, iPhone पर App Store खोलें. अपने ऐप्लिकेशन का iTunes यूआरएल दिया जा सकता है. जैसे, https://itunes.apple.com/us/app/yourappname.

    Wear OS से, यह प्रोग्राम के हिसाब से तय नहीं किया जा सकता कि आपके फ़ोन का ऐप्लिकेशन, iOS डिवाइस पर इंस्टॉल है या नहीं. सबसे सही तरीका यह है कि उपयोगकर्ता को App Store को मैन्युअल तरीके से खोलने की सुविधा दें.

ध्यान दें: यह तय करने के लिए कि किसी भी यूआरएल को फ़ोन पर घड़ी से खोला जाए और इसके लिए किसी फ़ोन ऐप्लिकेशन की ज़रूरत न हो, पहले बताए गए RemoteActivityHelper एपीआई का इस्तेमाल करें.

जोड़े गए फ़ोन के टाइप का पता लगाने के लिए जानकारी

यहां एक स्निपेट दिया गया है, जिसमें 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 डिवाइसों पर आपका वॉच ऐप्लिकेशन है या नहीं. इसके लिए, यह तरीका अपनाएं:

  1. NodeClient का इस्तेमाल करके, उपयोगकर्ता के फ़ोन से कनेक्ट की गई सभी घड़ियां ढूंढें. ज़्यादा जानकारी के लिए, GitHub पर मौजूद डेटालेयर हेल्पर का सैंपल देखें.
  2. CapabilityClient का इस्तेमाल करके, यह देखें कि उपयोगकर्ता की किस स्मार्टवॉच पर आपका ऐप्लिकेशन इंस्टॉल है.
  3. अगर आपका ऐप्लिकेशन, उपयोगकर्ता की सभी घड़ियों पर इंस्टॉल नहीं है, तो उसे RemoteActivityHelper.startRemoteActivity() तरीके का इस्तेमाल करके, फ़ोन से Wear OS वाले बाकी डिवाइसों पर Play Store खोलने दें. Wear OS ऐप्लिकेशन के लिए मार्केट यूआरआई का इस्तेमाल करें. यह आपके फ़ोन ऐप्लिकेशन के यूआरआई से अलग हो सकता है. उदाहरण के लिए, मार्केट यूआरआई का इस्तेमाल करें. जैसे: market://details?id=com.example.android.wearable.wear.finddevices.

iPhone से जोड़ी गई स्मार्टवॉच के लिए जगह की जानकारी का डेटा

iPhone से जोड़ी गई स्मार्टवॉच पर जगह की जानकारी का डेटा पाने के लिए, फ़्यूज़्ड लोकेशन प्रोवाइडर (एफ़एलपी) का इस्तेमाल करें. ज़्यादा जानकारी के लिए, Wear OS पर जगह की जानकारी का पता लगाना लेख पढ़ें.

अगर कंपैनियन फ़ोन उपलब्ध है, तो एफएलपी जगह की जानकारी के डेटा के लिए कंपैनियन फ़ोन का इस्तेमाल करता है.

सिर्फ़ ज़रूरी डेटा पाना

आम तौर पर, इंटरनेट से डेटा हासिल करते समय, सिर्फ़ ज़रूरी डेटा हासिल करें. ऐसा न करने पर, आपको ज़रूरत से ज़्यादा इंतज़ार करना पड़ सकता है. साथ ही, मेमोरी और बैटरी की खपत भी बढ़ सकती है.

जब कोई स्मार्टवॉच, ब्लूटूथ LE कनेक्शन से कनेक्ट होती है, तो आपका ऐप्लिकेशन स्मार्टवॉच के हिसाब से, सिर्फ़ चार किलोबाइट प्रति सेकंड के बैंडविड्थ को ऐक्सेस कर सकता है. इसलिए, हमारा सुझाव है कि आप यह तरीका अपनाएं:

  • अपने नेटवर्क अनुरोधों और जवाबों की जांच करें. देखें कि उनमें ऐसा अतिरिक्त डेटा तो शामिल नहीं है जो सिर्फ़ फ़ोन ऐप्लिकेशन के लिए ज़रूरी है.
  • किसी वॉच पर नेटवर्क के ज़रिए बड़ी इमेज भेजने से पहले, उनका साइज़ कम करें.

ऐसे मामलों के लिए जहां ज़्यादा बैंडविड्थ वाले नेटवर्क की ज़रूरत होती है, ज़्यादा बैंडविड्थ वाले नेटवर्क का ऐक्सेस देखें.

अन्य कोड सैंपल

डेटालेयर हेल्पर के सैंपल में, इस पेज पर शामिल किए गए एपीआई के इस्तेमाल के बारे में ज़्यादा जानकारी दी गई है.