Wear OS by Google की मदद से, स्मार्टवॉच सीधे नेटवर्क से कनेक्ट हो सकती है. इसके लिए, Android या iOS फ़ोन का ऐक्सेस ज़रूरी नहीं है. किसी Wear OS ऐप्लिकेशन को नेटवर्क से कनेक्ट करने के लिए, Data Layer API का इस्तेमाल न करें. इसके बजाय, इस गाइड में दिए गए दिशा-निर्देशों और चरणों का पालन करें.
नेटवर्क ऐक्सेस
Wear OS ऐप्लिकेशन, नेटवर्क अनुरोध कर सकते हैं. जब स्मार्टवॉच, ब्लूटूथ के ज़रिए फ़ोन से कनेक्ट होती है, तो स्मार्टवॉच का नेटवर्क ट्रैफ़िक आम तौर पर फ़ोन के ज़रिए प्रॉक्सी किया जाता है.
फ़ोन उपलब्ध न होने पर, स्मार्टवॉच के हार्डवेयर के हिसाब से वाई-फ़ाई और सेल्युलर नेटवर्क का इस्तेमाल किया जाता है. Wear OS प्लैटफ़ॉर्म, नेटवर्क के बीच ट्रांज़िशन को मैनेज करता है.
एचटीटीपी, टीसीपी, और यूडीपी जैसे प्रोटोकॉल का इस्तेमाल किया जा सकता है. हालांकि, android.webkit एपीआई उपलब्ध नहीं हैं. इनमें CookieManager क्लास भी शामिल है. अनुरोधों और जवाबों पर हेडर को पढ़ने और लिखने के लिए, कुकी का इस्तेमाल किया जा सकता है.
एसिंक्रोनस अनुरोधों के लिए, WorkManager का इस्तेमाल करें. इनमें तय समय पर पोलिंग करना भी शामिल है.
अगर आपको किसी खास तरह के नेटवर्क से कनेक्ट करना है, तो नेटवर्क की स्थिति पढ़ना लेख पढ़ें.
ज़्यादा बैंडविथ वाले नेटवर्क का ऐक्सेस
Wear OS प्लैटफ़ॉर्म, नेटवर्क कनेक्टिविटी को मैनेज करता है. इसका मकसद, उपयोगकर्ताओं को सबसे अच्छा अनुभव देना है. यह प्लैटफ़ॉर्म, डिफ़ॉल्ट रूप से चालू नेटवर्क को दो बातों को ध्यान में रखकर चुनता है: लंबी बैटरी लाइफ़ और नेटवर्क बैंडविड्थ.
बैटरी बचाने को प्राथमिकता देने पर, ऐसा हो सकता है कि चालू नेटवर्क में नेटवर्क से जुड़े टास्क के लिए ज़रूरी बैंडविथ न हो. जैसे, बड़ी फ़ाइलें ट्रांसफ़र करना या मीडिया स्ट्रीम करना.
इस सेक्शन में, ConnectivityManager क्लास का इस्तेमाल करने के बारे में दिशा-निर्देश दिए गए हैं. इससे यह पक्का करने में मदद मिलती है कि आपके ऐप्लिकेशन के पास ज़रूरी नेटवर्क बैंडविड्थ है. नेटवर्क संसाधनों पर ज़्यादा कंट्रोल पाने के बारे में सामान्य जानकारी के लिए, नेटवर्क के इस्तेमाल को मैनेज करना लेख पढ़ें.
वाई-फ़ाई कनेक्टिविटी का अनुरोध करना
जिन मामलों में ज़्यादा बैंडविड्थ वाले नेटवर्क ऐक्सेस की ज़रूरत होती है उनके लिए, ज़्यादा बैंडविड्थ वाले नेटवर्क से कनेक्ट करने का अनुरोध करें. जैसे, बड़ी फ़ाइलें ट्रांसफ़र करना या मीडिया स्ट्रीम करना. इसके लिए, वाई-फ़ाई जैसे ज़्यादा बैंडविड्थ वाले नेटवर्क का इस्तेमाल करें. इसे यहां दिए गए उदाहरण में दिखाया गया है:
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. } } fun requestWifiNetwork() { connectivityManager.requestNetwork( NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(), callback ) }
नेटवर्क से कनेक्ट होने में कुछ समय लग सकता है, क्योंकि बैटरी बचाने के लिए घड़ी का वाई-फ़ाई या मोबाइल रेडियो बंद हो सकता है. अगर स्मार्टवॉच किसी नेटवर्क से कनेक्ट नहीं हो पाती है, तो आपके NetworkCallback इंस्टेंस के onAvailable() तरीके को कॉल नहीं किया जाता है.
onAvailable() को कॉल करने के बाद, डिवाइस NetworkCallback के रिलीज़ होने तक वाई-फ़ाई नेटवर्क से कनेक्ट रहता है. बैटरी लाइफ़ बचाने के लिए, जब आपको वाई-फ़ाई नेटवर्क की ज़रूरत न हो, तब कॉलबैक को रिलीज़ करें. इसका उदाहरण यहां दिया गया है.
connectivityManager.bindProcessToNetwork(null) connectivityManager.unregisterNetworkCallback(callback)
वाई-फ़ाई की सेटिंग वाली गतिविधि लॉन्च करना
वाई-फ़ाई नेटवर्क का अनुरोध करने पर, सिस्टम सेव किए गए नेटवर्क से कनेक्ट करने की कोशिश करता है. ऐसा तब होता है, जब कोई नेटवर्क कॉन्फ़िगर किया गया हो और वह रेंज में हो. अगर कोई सेव किया गया वाई-फ़ाई नेटवर्क उपलब्ध नहीं है, तो आपके NetworkCallback इंस्टेंस का onAvailable कॉलबैक तरीका कॉल नहीं किया जाता है.
अगर नेटवर्क अनुरोध के टाइम आउट होने का समय तय करने के लिए Handler का इस्तेमाल किया जा रहा है, तो टाइम आउट होने पर उपयोगकर्ता को वाई-फ़ाई नेटवर्क जोड़ने के लिए कहा जा सकता है. उपयोगकर्ता को सीधे तौर पर, वाई-फ़ाई नेटवर्क जोड़ने की गतिविधि पर भेजें. इसके लिए, इस इंटेंट का इस्तेमाल करें:
val networkSettingsAction = "com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS" val intent = Intent(networkSettingsAction).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } context.startActivity(intent)
सेटिंग की गतिविधि शुरू करने के लिए, आपके ऐप्लिकेशन के पास CHANGE_WIFI_STATE
अनुमति होनी चाहिए.
यूज़र इंटरफ़ेस से जुड़ी बातें
अगर आपके ऐप्लिकेशन को ज़्यादा बैंडविथ वाले ऑपरेशन के लिए, किसी नए वाई-फ़ाई नेटवर्क से कनेक्ट करने की ज़रूरत है, तो आपको इसे आसानी से हासिल करना चाहिए और ज़रूरत के मुताबिक इसे रिलीज़ करना चाहिए. अगर कोई वाई-फ़ाई नेटवर्क उपलब्ध नहीं है, तो बताएं कि इस सुविधा के लिए वाई-फ़ाई ज़रूरी है. साथ ही, वाई-फ़ाई सेटिंग ऐक्टिविटी लॉन्च करने का तरीका बताएं. उपयोगकर्ता को ऐप्लिकेशन की उन सुविधाओं को ऐक्सेस करने से न रोकें जिनके लिए ज़्यादा बैंडविथ वाले नेटवर्क की ज़रूरत नहीं होती.
बैटरी और डेटा के इस्तेमाल से जुड़ी बातें
बैटरी लाइफ़ को बेहतर बनाए रखने और मोबाइल डेटा के इस्तेमाल को कम करने के लिए, गैर-ज़रूरी नेटवर्किंग टास्क को तब तक के लिए रोक दें, जब तक Wear OS डिवाइस, एलटीई या मीटर वाले कनेक्शन के बजाय ब्लूटूथ या वाई-फ़ाई कनेक्शन से फिर से कनेक्ट न हो जाए. जैसे, आंकड़ों की रिपोर्टिंग या लॉग इकट्ठा करना.
क्लाउड से मैसेज भेजने की सुविधा
सूचनाएं भेजने के लिए, सीधे Firebase क्लाउड से मैसेज (FCM) का इस्तेमाल करें.
नेटवर्क ऐक्सेस या FCM के लिए कोई भी एपीआई, Wear OS के लिए खास नहीं है. नेटवर्क से कनेक्ट करने और क्लाउड मैसेजिंग के बारे में मौजूदा दस्तावेज़ पढ़ें.
FCM, Doze मोड के साथ अच्छी तरह से काम करता है. साथ ही, स्मार्टवॉच पर सूचनाएं भेजने का यह सबसे सही तरीका है.
Wear OS ऐप्लिकेशन के चालू होने पर, डिवाइस के लिए रजिस्ट्रेशन टोकन इकट्ठा करके, FCM से मैसेज पाने की सुविधा उपलब्ध कराता है. इसके बाद, जब आपका सर्वर FCM REST एंडपॉइंट को मैसेज भेजता है, तब टोकन को डेस्टिनेशन के हिस्से के तौर पर शामिल करें. FCM, टोकन से पहचाने गए डिवाइस को मैसेज भेजता है.
FCM मैसेज, JavaScript ऑब्जेक्ट नोटेशन (JSON) फ़ॉर्मैट में होता है. इसमें यहां दिए गए एक या दोनों पेलोड शामिल हो सकते हैं:
- सूचना पेलोड: जब किसी स्मार्टवॉच को सूचना पेलोड मिलता है, तो डेटा सीधे तौर पर उपयोगकर्ता को सूचना स्ट्रीम में दिखता है. जब उपयोगकर्ता सूचना पर टैप करता है, तो आपका ऐप्लिकेशन लॉन्च हो जाता है.
- डेटा पेलोड: जब पेलोड में कस्टम की या वैल्यू पेयर का सेट होता है. यह पेलोड, आपके Wear OS ऐप्लिकेशन को डेटा के तौर पर डिलीवर किया जाता है.
ज़्यादा जानकारी और पेलोड के उदाहरणों के लिए, मैसेज टाइप देखें.
डिफ़ॉल्ट रूप से, सूचनाएं फ़ोन ऐप्लिकेशन से स्मार्टवॉच पर भेजी जाती हैं. अगर आपके पास Wear OS के लिए स्टैंडअलोन ऐप्लिकेशन और उससे जुड़ा फ़ोन ऐप्लिकेशन है, तो आपको डुप्लीकेट सूचनाएं मिल सकती हैं. उदाहरण के लिए, FCM से भेजी गई एक सूचना, फ़ोन और स्मार्टवॉच, दोनों पर मिलती है. ऐसे में, दोनों डिवाइसों पर यह सूचना अलग-अलग दिख सकती है. ब्रिजिंग एपीआई का इस्तेमाल करके, इस समस्या को रोका जा सकता है.
बैकग्राउंड में चलने वाली सेवाओं का इस्तेमाल करना
यह पक्का करने के लिए कि बैकग्राउंड में किए जाने वाले टास्क सही तरीके से पूरे हों, उन्हें डोज़ मोड और ऐप्लिकेशन स्टैंडबाय मोड के हिसाब से डिज़ाइन किया जाना चाहिए.
जब स्क्रीन बंद हो जाती है या लंबे समय तक ऐंबियंट मोड में रहती है, तो डोज़ मोड का एक सबसेट चालू हो सकता है. साथ ही, बैकग्राउंड में चल रहे टास्क को कुछ समय के लिए टाला जा सकता है.
इसके बाद, जब डिवाइस लंबे समय तक एक ही जगह पर रखा रहता है, तब डोज़ मोड चालू हो जाता है.
WorkManager एपीआई की मदद से अनुरोध शेड्यूल करें. इससे आपका ऐप्लिकेशन, डोज़ मोड में कोड को सुरक्षित तरीके से एक्ज़ीक्यूट करने के लिए रजिस्टर कर सकता है.
पाबंदियों के साथ शेड्यूल करना
बैटरी लाइफ़ को बनाए रखने के लिए, अनुरोधों को इस तरह से कॉन्फ़िगर करने के लिए कंस्ट्रेंट का इस्तेमाल किया जा सकता है. अपने अनुरोधों में शामिल करने के लिए, यहां दी गई एक या उससे ज़्यादा पाबंदियां चुनें:
नेटवर्किंग की सुविधा का इस्तेमाल करके अनुरोध शेड्यूल करना.
यह बताएं कि
NetworkTypeCONNECTEDहै याUNMETERED.UNMETEREDका इस्तेमाल बड़े डेटा को ट्रांसफ़र करने के लिए किया जाता है, जबकिCONNECTEDका इस्तेमाल छोटे डेटा को ट्रांसफ़र करने के लिए किया जाता है.चार्ज करते समय, अनुरोध शेड्यूल करें.
डिवाइस के इस्तेमाल में न होने पर, अनुरोध को शेड्यूल करें. यह सुविधा, बैकग्राउंड में कम प्राथमिकता वाले काम या सिंक्रनाइज़ेशन के लिए फ़ायदेमंद होती है. खास तौर पर, तब जब डिवाइस चार्ज हो रहा हो.
ज़्यादा जानकारी के लिए, WorkManager की Effect of constraints on periodic work गाइड देखें.