स्मार्टवॉच की होम स्क्रीन पर सूचनाएं भेजने की सुविधा के लिए, Wear OS ऐप्लिकेशन को कॉन्फ़िगर करना

स्मार्टवॉच की होम स्क्रीन को पुश करने की सुविधा की मदद से, आपका ऐप्लिकेशन Wear OS डिवाइस पर स्मार्टवॉच की होम स्क्रीन मैनेज कर सकता है. इसमें वॉच फ़ेस जोड़ना, अपडेट करना, और हटाना शामिल है. साथ ही, स्मार्टवॉच के मौजूदा वॉच फ़ेस को सेट करना भी शामिल है. Watch Face Push API का इस्तेमाल करने के लिए, अपने Wear OS ऐप्लिकेशन को कॉन्फ़िगर करें.

सेटअप

ज़रूरी डिपेंडेंसी शामिल करें:

implementation("androidx.wear.watchface:watchface-push:1.3.0-alpha07")

अपने AndroidManifest.xml में यह जोड़ें:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Required to use the Watch Face Push API.  -->
    <uses-permission android:name="com.google.wear.permission.PUSH_WATCH_FACES" />

    <!-- Required to be able to call the setWatchFaceAsActive() method. -->
    <uses-permission android:name="com.google.wear.permission.SET_PUSHED_WATCH_FACE_AS_ACTIVE" />

</manifest>

मैनेजर इंस्टेंस का रेफ़रंस पाना

WatchFacePushManager का इंस्टेंस पाने के लिए:

val manager = WatchFacePushManager(context)

WatchFacePushManager, स्मार्टवॉच की होम स्क्रीन पर सूचनाएं भेजने की सुविधा के साथ इंटरैक्ट करने के सभी तरीकों का ऐक्सेस देता है.

स्लॉट के साथ काम करना

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

स्मार्टवॉच की होम स्क्रीन को अपडेट करने या हटाने के लिए, slotId का इस्तेमाल किया जाता है. इससे, स्मार्टवॉच की होम स्क्रीन की पहचान की जाती है, ताकि उस पर कार्रवाई की जा सके.

स्मार्टवॉच की होम स्क्रीन की सूची

इंस्टॉल की गई स्मार्ट वॉच की होम स्क्रीन की सूची देखने के लिए, listWatchFaces() का इस्तेमाल करें:

val response = watchFacePushManager.listWatchFaces()
val installedList = response.installedWatchFaceDetails
val remainingSlots = response.remainingSlots

इससे यह पता चलता है कि स्लॉट उपलब्ध है या नहीं या किसी दूसरी होम स्क्रीन को जोड़ने के लिए, मौजूदा होम स्क्रीन को बदलना होगा या नहीं. इस सूची में, आपको स्मार्टवॉच की इंस्टॉल की गई होम स्क्रीन के बारे में भी जानकारी मिलती है. उदाहरण के लिए, यह देखने के लिए कि स्मार्टवॉच की होम स्क्रीन का कोई पैकेज इंस्टॉल है या नहीं:

suspend fun isInstalled(packageName: String) = watchFacePush.listWatchFaces()
    .installedWatchFaceDetails.any { it.packageName == packageName }

स्मार्टवॉच की होम स्क्रीन जोड़ना

अगर listWatchFaces रिस्पॉन्स के मुताबिक स्लॉट उपलब्ध हैं, तो addWatchFace() तरीके का इस्तेमाल किया जाना चाहिए:

try {
    // Supply the validation token along with the watch face package data itself.
    val slot = watchFacePushManager.addWatchFace(parcelFileDescriptor, token)
    Log.i(TAG, "${slot.packageName} (${slot.versionCode}) added in slot ${slot.slotId}")
} catch (e: AddWatchFaceException) {
    // Something went wrong adding the watch face.
}

स्मार्टवॉच की होम स्क्रीन अपडेट करना

स्मार्टवॉच की होम स्क्रीन को अपडेट करने पर, किसी स्लॉट के कॉन्टेंट को नए पैकेज से बदला जा सकता है. इसके लिए, होम स्क्रीन को नए वर्शन पर अपग्रेड किया जा सकता है या पूरी तरह से किसी दूसरी होम स्क्रीन से बदला जा सकता है.

// Replacing the com.example.watchfacepush.green watch face with
// com.example.watchfacepush.red.
val slotId = watchFacePushManager.listWatchFaces().installedWatchFaceDetails.
    firstOrNull { it.packageName == "com.example.watchfacepush.green" }?.slotId

try {
    watchFacePushManager.updateWatchFace(slotId, redParcelFileDesc, redValidationToken)
} catch (e: UpdateWatchFaceException) {
    // Something went wrong updating the watch face.
}

स्मार्टवॉच की होम स्क्रीन हटाना

स्मार्टवॉच की होम स्क्रीन हटाने के लिए:

// Remove the com.example.watchfacepush.green watch face.
val slotId = watchFacePushManager.listWatchFaces().installedWatchFaceDetails.
    firstOrNull { it.packageName == "com.example.watchfacepush.green" }?.slotId

try {
    watchFacePushManager.removeWatchFace(slotId)
} catch (e: RemoveWatchFaceException) {
    // Something went wrong removing the watch face.
}

इससे यह पक्का होगा कि स्मार्टवॉच की होम स्क्रीन, सिस्टम की स्मार्टवॉच की होम स्क्रीन चुनने वाली सुविधा में हमेशा दिखेगी. साथ ही, इसमें आपका लोगो प्रमुखता से दिखेगा. इसके अलावा, इसमें फ़ोन पर आपके Marketplace ऐप्लिकेशन को लॉन्च करने के लिए बटन भी दिख सकता है.

देखें कि आपकी स्मार्टवॉच का वॉच फ़ेस चालू है या नहीं

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

यह पता लगाने के लिए कि मार्केटप्लेस पर स्मार्टवॉच का मौजूदा वॉच फ़ेस सेट है या नहीं:

स्मार्टवॉच की डिफ़ॉल्ट होम स्क्रीन जोड़ना

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

इस सुविधा का इस्तेमाल करने के लिए:

  1. अपने Wear OS ऐप्लिकेशन के बिल्ड में, स्मार्टवॉच की डिफ़ॉल्ट होम स्क्रीन को पाथ में शामिल करें: assets/default_watchface.apk
  2. अपने AndroidManifest.xml में यह एंट्री जोड़ें

    <application ...>
    <meta-data
        android:name="com.google.android.wearable.marketplace.DEFAULT_WATCHFACE_VALIDATION_TOKEN"
        android:value="@string/default_wf_token" />
    

स्मार्टवॉच की होम स्क्रीन सेट करना

स्मार्टवॉच की होम स्क्रीन पर इमेज की झलक दिखाने की सुविधा, Marketplace ऐप्लिकेशन को स्मार्टवॉच की होम स्क्रीन के तौर पर सेट करने की सुविधा देती है.

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

स्मार्टवॉच की होम स्क्रीन को दो चरणों में सेट किया जा सकता है:

  1. स्मार्टवॉच के मौजूदा वॉच फ़ेस को सेट करने के लिए, Android की ज़रूरी अनुमति पाएं.
  2. setWatchFaceAsActive वाले तरीके को कॉल करें.

स्मार्टवॉच के मौजूदा वॉच फ़ेस को सेट करने की अनुमतियां पाना

आपके पास SET_PUSHED_WATCH_FACE_AS_ACTIVE की अनुमति होनी चाहिए. इसे आपके मेनिफ़ेस्ट में जोड़ना ज़रूरी है:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    ...
    <uses-permission android:name="com.google.wear.permission.SET_PUSHED_WATCH_FACE_AS_ACTIVE" />
</manifest>

यह रनटाइम की अनुमति है. इसलिए, आपके ऐप्लिकेशन को ऐप्लिकेशन के चलने पर, उपयोगकर्ता से इस अनुमति का अनुरोध करना होगा. इसकी मदद के लिए, Accompanist लाइब्रेरी का इस्तेमाल करें.

वॉच फ़ेस को 'चालू है' के तौर पर सेट करना

अनुमति मिलने के बाद, स्मार्टवॉच की उस स्क्रीन के स्लॉट आईडी पर setWatchFaceAsActive को कॉल करें जो चालू होनी चाहिए:

watchFacePushManager.setWatchFaceAsActive(slotId)

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

स्मार्टवॉच की होम स्क्रीन के APK से अतिरिक्त मेटाडेटा पढ़ना

WatchFaceSlot ऑब्जेक्ट से, आपको ज़्यादा जानकारी पाने का तरीका भी मिलता है. इस जानकारी को वॉच फ़ेस पर दिखाया जा सकता है.

यह सुविधा तब खास तौर पर मददगार हो सकती है, जब आपके पास स्मार्टवॉच की एक ही होम स्क्रीन के छोटे-मोटे वैरिएंट हों. उदाहरण के लिए, स्मार्टवॉच की होम स्क्रीन पर यह जानकारी दिख सकती है:

  • पैकेज का नाम: com.myapp.watchfacepush.mywatchface
  • पैकेज का वर्शन: 1.0.0

हालांकि, यह हो सकता है कि स्मार्टवॉच की यह होम स्क्रीन, चार अलग-अलग APK के तौर पर उपलब्ध हो. ये सभी स्क्रीन एक जैसी ही होती हैं, लेकिन इनके डिफ़ॉल्ट रंग अलग-अलग होते हैं: लाल, पीला, हरा, और नीला. ये रंग, Watch Face Format वाले एक्सएमएल में ColorConfiguration में सेट किए जाते हैं.

इसके बाद, यह मामूली अंतर चारों APK में दिखता है:

<!-- For watch face com.myapp.watchfacepush.mywatchface -->
<property
        android:name="default_color"
        android:value="red" />

कस्टम प्रॉपर्टी का इस्तेमाल करके, आपके ऐप्लिकेशन को यह तय करने में मदद मिलती है कि इनमें से कौनसा वैरिएंट इंस्टॉल किया गया है:

watchFaceDetails
    .getMetaDataValues("com.myapp.watchfacepush.mywatchface.default_color")
    .invoke()

ज़रूरी बातें

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

ताकत

Wear OS पर चलने वाले किसी भी ऐप्लिकेशन के लिए, बैटरी खर्च करना एक अहम बात है. अपने मार्केटप्लेस ऐप्लिकेशन के Wear OS कॉम्पोनेंट के लिए:

  1. आपका ऐप्लिकेशन कम से कम और कम से कम बार चलना चाहिए. ऐसा तब तक करना चाहिए, जब तक उपयोगकर्ता सीधे तौर पर उससे इंटरैक्ट न कर रहा हो. इसमें ये चीज़ें शामिल हैं:
    • फ़ोन ऐप्लिकेशन से ऐप्लिकेशन को कम से कम जगाने की सुविधा
    • WorkManager जॉब को कम से कम चलाना
  2. स्मार्टवॉच चार्ज होने के दौरान, आंकड़ों की रिपोर्टिंग शेड्यूल करना:
    1. अगर आपको Wear OS ऐप्लिकेशन या किसी अन्य मेट्रिक के इस्तेमाल के आंकड़े की रिपोर्ट करनी है, तो requiresCharging शर्त के साथ WorkManager का इस्तेमाल करें.
  3. स्मार्टवॉच चार्ज होने और वाई-फ़ाई का इस्तेमाल करने के दौरान अपडेट शेड्यूल करना:
    1. आपके पास इंस्टॉल की गई स्मार्ट वॉच की होम स्क्रीन के वर्शन देखने और उन्हें अपने-आप अपडेट करने का विकल्प होता है. फिर से, requiresNetworkType के लिए requiresCharging की पाबंदी और UNMETERED नेटवर्क टाइप का इस्तेमाल करें.
    2. डिवाइस चार्ज होने के दौरान, हो सकता है कि वह वाई-फ़ाई से कनेक्ट हो. अपडेट किए गए APK को तुरंत डाउनलोड करने के लिए, वाई-फ़ाई का अनुरोध करें. इसके बाद, डाउनलोड पूरा होने पर नेटवर्क को छोड़ दें.
    3. यह तरीका उन मामलों में भी लागू होता है जहां मार्केटप्लेस स्मार्टवॉच की होम स्क्रीन के लिए कोई विकल्प उपलब्ध कराता है. स्मार्टवॉच चार्ज होने के दौरान, होम स्क्रीन को पहले से डाउनलोड कर लें.
  4. स्मार्टवॉच की होम स्क्रीन देखने के लिए, जॉब शेड्यूल न करें:
    1. समय-समय पर यह जांच करना कि आपके मार्केटप्लेस पर अब भी स्मार्टवॉच की होम स्क्रीन चालू है या नहीं और कौनसी होम स्क्रीन चालू है, इससे बैटरी पर असर पड़ता है. इस तरीके का इस्तेमाल न करें.
  5. स्मार्टवॉच पर सूचनाएं पाने की सुविधा का इस्तेमाल न करना:
    1. अगर आपका ऐप्लिकेशन सूचनाओं का इस्तेमाल करता है, तो उन्हें फ़ोन पर फ़ोकस करें. यहां उपयोगकर्ता की कार्रवाई, फ़ोन ऐप्लिकेशन को खोलती है, ताकि वह प्रोसेस जारी रख सके. पक्का करें कि ये setLocalOnly का इस्तेमाल करके, स्मार्टवॉच ऐप्लिकेशन पर न ले जाएं.

संचय कर रहा है

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

उपयोगकर्ताओं को बेहतर अनुभव देने और डेटा को फिर से भेजने की प्रक्रिया में लगने वाले समय को कम करने के लिए, Wear OS डिवाइस में कुछ APKs को सेव करने के लिए, छोटा कैश मेमोरी लागू करें.

अगर उपयोगकर्ता किसी दूसरी स्मार्टवॉच की होम स्क्रीन आज़माता है, लेकिन फिर अपनी पसंद की पिछली स्मार्टवॉच की होम स्क्रीन पर वापस जाना चाहता है, तो यह कार्रवाई तुरंत पूरी हो जाती है.

इसी तरह, इसका इस्तेमाल दिन की स्मार्टवॉच की होम स्क्रीन या ऐसी ही अन्य योजनाओं के लिए, पहले से कैश मेमोरी में सेव करने के लिए किया जा सकता है. इन योजनाओं में, Wear OS डिवाइस चार्ज होने के दौरान स्मार्टवॉच की होम स्क्रीन डाउनलोड की जाती हैं.

बंडल में शामिल वॉच फ़ेस अपडेट करना

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

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

स्मार्टवॉच की डिफ़ॉल्ट होम स्क्रीन

डिफ़ॉल्ट वॉच फ़ेस, लोगों को आपके मार्केटप्लेस को खोजने और इस्तेमाल करने में मदद करने का एक बेहतरीन तरीका है: आपका मार्केटप्लेस इंस्टॉल होने पर, वॉच फ़ेस भी इंस्टॉल हो जाती है, ताकि लोग इसे वॉच फ़ेस की गैलरी में देख सकें.

स्मार्टवॉच की डिफ़ॉल्ट होम स्क्रीन पर काम करते समय, इन बातों का ध्यान रखें:

  • अगर उपयोगकर्ता आपके मार्केटप्लेस ऐप्लिकेशन से स्मार्ट वॉच की होम स्क्रीन को अनइंस्टॉल करना चाहता है, तो removeWatchFace का इस्तेमाल न करें. इसके बजाय, updateWatchFace का इस्तेमाल करके स्मार्ट वॉच की होम स्क्रीन को डिफ़ॉल्ट होम स्क्रीन पर वापस लाएं. इससे, लोगों को आपकी स्मार्टवॉच की होम स्क्रीन ढूंढने और गैलरी से उसे सेट करने में मदद मिलती है.
  • अपने लोगो और थीम की मदद से, डिफ़ॉल्ट वॉच फ़ेस को आसान बनाएं और तुरंत पहचाना जा सके. इससे उपयोगकर्ताओं को स्मार्टवॉच की होम स्क्रीन की गैलरी में इसे ढूंढने में मदद मिलती है.
  • फ़ोन ऐप्लिकेशन खोलने के लिए, स्मार्टवॉच की डिफ़ॉल्ट होम स्क्रीन पर बटन जोड़ें. ऐसा दो चरणों में किया जा सकता है:

    1. Wear OS ऐप्लिकेशन का इस्तेमाल करके कोई इंटेंट लॉन्च करने के लिए, स्मार्टवॉच की होम स्क्रीन पर Launch एलिमेंट जोड़ें. उदाहरण के लिए:

      <Launch target="com.myapp/com.myapp.LaunchOnPhoneActivity" />

    2. LaunchOnPhoneActivity में, RemoteActivityHelper का इस्तेमाल करके फ़ोन ऐप्लिकेशन लॉन्च करें.