Wear OS पर सूचनाएं

स्मार्टवॉच पर सूचनाएं, फ़ोन पर मिलने वाली सूचनाओं के एपीआई और स्ट्रक्चर का ही इस्तेमाल करती हैं.

स्मार्टवॉच पर सूचनाएं दो तरह से दिख सकती हैं:

  1. मोबाइल ऐप्लिकेशन एक सूचना बनाता है और सिस्टम उस सूचना को स्मार्टवॉच पर अपने-आप भेज देता है.
  2. पहने जाने वाले डिवाइस के लिए ऐप्लिकेशन, सूचना बनाता है.

दोनों ही स्थितियों में, सूचनाएं बनाने के लिए NotificationCompat.Builder क्लास का इस्तेमाल करें. बिल्डर क्लास की मदद से सूचनाएं बनाने पर, सिस्टम सूचनाओं को सही तरीके से दिखाने का काम करता है. उदाहरण के लिए, जब मोबाइल ऐप्लिकेशन से कोई सूचना भेजी जाती है, तो हर सूचना, सूचना स्ट्रीम में एक कार्ड के तौर पर दिखती है.

सूचनाएं कैसे दिखती हैं, यह देखने के लिए यहां दिया गया उदाहरण देखें.

notification-cards

पहली इमेज. फ़ोन और स्मार्टवॉच पर एक ही सूचना दिख रही है.

सबसे अच्छे नतीजों के लिए, NotificationCompat.Style सबक्लास में से किसी एक का इस्तेमाल करें.

ध्यान दें: RemoteViews का इस्तेमाल करने पर, सूचनाओं से कस्टम लेआउट हट जाते हैं. साथ ही, पहने जाने वाले डिवाइस पर सिर्फ़ टेक्स्ट और आइकॉन दिखते हैं.

पहने जाने वाले डिवाइसों के लिए, सुझाई गई सूचनाएं

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

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

expandable-notification

दूसरी इमेज. Wear OS पर MessagingStyle सूचना का उदाहरण.

आपको सूचना में कई कार्रवाइयां दिख सकती हैं. ये कार्रवाइयां, सूचना को बड़ा करने पर सबसे नीचे दिखती हैं.

अहम जानकारी: अगर आपकी सूचनाओं में "जवाब दें" कार्रवाई शामिल है, जैसे कि मैसेजिंग ऐप्लिकेशन के लिए, तो सूचना के व्यवहार को बेहतर बनाया जा सकता है. उदाहरण के लिए, पहने जाने वाले डिवाइस से सीधे तौर पर, बोलकर जवाब देने की सुविधा चालू की जा सकती है. इसके अलावा, setChoices() की मदद से, पहले से तय किए गए टेक्स्ट वाले जवाब देने की सुविधा भी चालू की जा सकती है. ज़्यादा जानकारी के लिए, जवाब देने का बटन जोड़ना लेख पढ़ें.

डुप्लीकेट सूचनाएं पाने से बचना

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

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

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

किसी सूचना में, पहने जाने वाले डिवाइस के लिए खास सुविधाएं जोड़ना

अगर आपको किसी सूचना में, पहने जाने वाले डिवाइस के लिए खास तौर पर बनाई गईं सुविधाएं जोड़नी हैं, तो NotificationCompat.WearableExtender क्लास का इस्तेमाल करके विकल्प तय किए जा सकते हैं. इस एपीआई का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

ध्यान दें: अगर फ़्रेमवर्क के NotificationManager का इस्तेमाल किया जाता है, तो NotificationCompat.WearableExtender की कुछ सुविधाएं काम नहीं करती हैं. इसलिए, NotificationCompat का इस्तेमाल करना न भूलें.

इस उदाहरण में, सूचना पर Wear के लिए खास तौर पर तैयार की गई कार्रवाई सेट करने का तरीका दिखाया गया है. साथ ही, सूचना खारिज करने का आईडी सेट करने का तरीका भी दिखाया गया है. सूचना खारिज होने पर, एक ही डिसमिसल आईडी वाली अन्य सभी सूचनाएं, स्मार्टवॉच और कंपैनियन फ़ोन पर खारिज हो जाती हैं. सूचना खारिज करने का आईडी वापस पाने के लिए, getDismissalId() का इस्तेमाल करें.

// This intent will be fired as a result of the user clicking the "Open on watch" action.
// However, it executes on the phone, not on the watch. Typically, the Activity should then use
// RemoteActivityHelper to then launch the correct activity on the watch.
val intent = Intent(context, LaunchOnWearActivity::class.java)
val wearPendingIntent = PendingIntent.getActivity(
    context,
    wearRequestCode,
    intent,
    PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)

val openOnWatchAction = NotificationCompat.Action.Builder(
    R.drawable.watch,
    "Open on watch",
    wearPendingIntent
)
    .build()

val wearableExtender = NotificationCompat.WearableExtender()
    // This action will only be shown on the watch, not on the phone.
    // Actions added to the Notification builder directly will not be shown on the watch,
    // because one or more actions are defined in the WearableExtender.
    .addAction(openOnWatchAction)
    // This synchronizes dismissals between watch and phone.
    .setDismissalId(chatId)

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(wearableExtender)
    .build()

पहने जाने वाले डिवाइस से फ़ोन ऐप्लिकेशन लॉन्च करना

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

  1. ConfirmationActivity को बढ़ाने वाला नया Activity बनाएं.
  2. फ़ोन ऐप्लिकेशन लॉन्च करने के लिए, नए Activity में RemoteActivityHelper का इस्तेमाल करें.
  3. सूचना से Activity लॉन्च करने के लिए Intent बनाते समय, EXTRA_ANIMATION_TYPE एक्स्ट्रा को OPEN_ON_PHONE_ANIMATION पर सेट करें.
इस तरीके से, उपयोगकर्ता को अपने फ़ोन पर इंटरैक्ट करने का तरीका बताया जाता है. साथ ही, बैकग्राउंड प्रोसेस लॉन्च करने के लिए प्लैटफ़ॉर्म की ज़रूरी शर्तों का पालन किया जाता है.

ध्यान दें: सूचना देने की कार्रवाई के लिए, BroadcastReceiver को टारगेट के तौर पर इस्तेमाल नहीं किया जा सकता.