Android पर लाइव अपडेट
Pushwoosh pushwoosh-liveupdates मॉड्यूल (SDK 6.9.0 और बाद के संस्करण) के माध्यम से Android लाइव अपडेट का समर्थन करता है। एक लाइव अपडेट एक सतत, प्रगति-शैली की सूचना है जिसे सिस्टम लॉक स्क्रीन पर, सूचना ड्रॉअर में और स्टेटस बार में एक स्टेटस चिप के रूप में बढ़ावा देता है, ताकि उपयोगकर्ता आपके ऐप को खोले बिना किसी गतिविधि का अनुसरण कर सकें।
पूरा जीवनचक्र सर्वर से संचालित होता है: आपका बैकएंड गतिविधि शुरू होने पर एक पुश भेजता है, जैसे-जैसे यह आगे बढ़ता है, और अधिक पुश भेजता है, और समाप्त होने पर एक अंतिम पुश भेजता है। SDK प्रत्येक को स्वचालित रूप से प्रस्तुत करता है।
लाइव अपडेट क्या हैं
Anchor link toलाइव अपडेट Android 16 (API 36) में एक उपयोगकर्ता-आरंभित, समय-संवेदनशील गतिविधि को शुरू से अंत तक सतह पर लाने के तरीके के रूप में पेश किए गए थे। वे प्लेटफ़ॉर्म की प्रगति-केंद्रित सूचनाओं और Notification.ProgressStyle API पर आधारित हैं। वैचारिक रूप से वे iOS लाइव गतिविधियों के Android समकक्ष हैं।
यह पृष्ठ केवल Pushwoosh एकीकरण को कवर करता है। प्लेटफ़ॉर्म व्यवहार, प्रचार नियमों और डिज़ाइन मार्गदर्शन के लिए, आधिकारिक Android दस्तावेज़ देखें:
लाइव अपडेट का उपयोग कब करें
Anchor link toलाइव अपडेट एक ऐसी गतिविधि के लिए हैं जो चल रही है, उपयोगकर्ता-आरंभित है, और समय-संवेदनशील है - कुछ ऐसा जिसमें एक स्पष्ट शुरुआत और अंत है जिसके बारे में उपयोगकर्ता अभी सक्रिय रूप से परवाह करता है। Pushwoosh ग्राहकों के लिए विशिष्ट परिदृश्य:
- भोजन वितरण — आदेश स्वीकार किया गया, तैयार किया जा रहा है, वितरण के लिए बाहर, आ रहा है।
- राइड-हेलिंग और टैक्सी — ड्राइवर सौंपा गया, रास्ते में, आ रहा है, यात्रा प्रगति पर है।
- ऑर्डर और शिपमेंट ट्रैकिंग — एक ऑर्डर की लाइव स्थिति जो सक्रिय रूप से पारगमन में है।
- लाइव स्पोर्ट्स और मीडिया — जैसे-जैसे खेल आगे बढ़ता है, मैच का स्कोर और समय।
- फिटनेस — बीता हुआ समय और प्रगति के साथ एक सक्रिय कसरत या दौड़।
- फिनटेक — एक लेनदेन या सत्यापन प्रवाह जो अपने चरणों से गुजर रहा है।
क्योंकि जीवनचक्र वास्तविक घटनाओं से संचालित होता है जिनके बारे में आपका बैकएंड पहले से ही जानता है (एक ऑर्डर की स्थिति बदलती है, एक कूरियर चलता है), एक लाइव अपडेट आमतौर पर आपके मौजूदा ईवेंट प्रवाह में एक एपीआई कॉल होता है - ऐसा कुछ नहीं जिसे कोई व्यक्ति हाथ से भेजता है।
आवश्यकताएं
Anchor link to- Android 16 (API 36) या नया। पुराने उपकरणों पर मॉड्यूल निष्क्रिय रहता है और प्रत्येक लाइव अपडेट एपीआई कॉल एक सुरक्षित नो-ऑप है।
- Pushwoosh Android SDK 6.9.0 या बाद का संस्करण।
pushwoosh-liveupdates मॉड्यूल जोड़ें
Anchor link toअपने app/build.gradle में निर्भरता जोड़ें:
dependencies { implementation 'com.pushwoosh:pushwoosh-liveupdates:<latest-version>'}<latest-version> को Maven Central से वर्तमान संस्करण से बदलें।
मॉड्यूल स्टार्टअप पर स्वचालित रूप से खोजा जाता है। यह आवश्यक POST_PROMOTED_NOTIFICATIONS अनुमति की घोषणा करता है, अपने स्वयं के अधिसूचना चैनल को पंजीकृत करता है, और डिफ़ॉल्ट अधिसूचना पथ से पहले लाइव अपडेट पुश को रोकता है। कोई अतिरिक्त आरंभीकरण कोड नहीं है - SDK चल रहे और प्रचारित झंडे सेट करता है, बड़े आइकन को डाउनलोड करता है, एक्शन बटन को मैप करता है, और आपके लिए अधिसूचना पोस्ट करता है।
एक लाइव अपडेट भेजें
Anchor link toआप android सामग्री ब्लॉक के root_params ऑब्जेक्ट में लाइव अपडेट फ़ील्ड जोड़कर मैसेजिंग एपीआई v2 के माध्यम से लाइव अपडेट भेजते हैं। एक transactional अनुरोध का उपयोग करें - एक लाइव अपडेट उस विशिष्ट उपयोगकर्ता को लक्षित करता है जिसकी गतिविधि को वह ट्रैक करता है। schedule फ़ील्ड आवश्यक है; { "after": "0s" } तुरंत भेजता है। जीवनचक्र में तीन ऑपरेशन होते हैं, जो pw_live_op में सेट होते हैं:
start— एक गतिविधि के लिए पहला पुश। चल रही अधिसूचना पोस्ट करता है।update— उसी गतिविधि के लिए बाद का पुश। इसे चुपचाप ताज़ा करता है।end— टर्मिनल पुश। अधिसूचना को खारिज करता है।
एक ही गतिविधि से संबंधित सभी पुश को एक ही pw_live_id साझा करना होगा। वह आईडी अपडेट को एक साथ बांधती है और यह भी है कि आप ऐप से अपडेट को खारिज करने के लिए उपयोग करते हैं।
प्रत्येक पुश पूरी तरह से अधिसूचना का वर्णन करता है - पिछले पुश से कुछ भी आगे नहीं बढ़ता है। प्रत्येक update के साथ प्रत्येक फ़ील्ड जिसे आप रखना चाहते हैं, जैसे कि सेगमेंट और बड़ा आइकन, फिर से भेजें; एक छोड़े गए फ़ील्ड को अनुपस्थित के रूप में प्रस्तुत किया जाता है।
लाइव अपडेट पैरामीटर
Anchor link toये कुंजियाँ android सामग्री ब्लॉक के root_params ऑब्जेक्ट के अंदर जाती हैं। शीर्षक, मुख्य भाग और बड़ा आइकन मानक Android पुश फ़ील्ड (title, body, custom_icon) का उपयोग करते हैं।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
pw_live_op | स्ट्रिंग | जीवनचक्र संचालन: start, update, या end। आवश्यक। |
pw_live_id | स्ट्रिंग | एक लाइव अपडेट के सभी पुश द्वारा साझा की गई स्थिर गतिविधि आईडी। आवश्यक। |
pw_live_progress | इंट | प्रगति मान, संचित खंड लंबाई के विरुद्ध मापा जाता है। |
pw_live_progress_indeterminate | बूल | एक ठोस मान के बजाय एक अनिश्चित एनीमेशन दिखाएं। |
pw_live_segments | JSON स्ट्रिंग | आदेशित प्रगति खंड, प्रत्येक {"color": "#RRGGBB", "length": N}। |
pw_live_extras | JSON स्ट्रिंग | एक कस्टम शैली प्रदाता को दिया गया मनमाना डेटा। |
pw_live_when | लॉन्ग | हेडर टाइम एंकर, युग मिलीसेकंड में। |
pw_live_chronometer | बूल | हेडर समय को एक चालू टाइमर के रूप में दिखाएं। |
pw_live_chronometer_count_down | बूल | एक चालू टाइमर ऊपर की बजाय नीचे की ओर गिनता है। |
pw_live_show_when | बूल | हेडर समय कॉलम को बिल्कुल दिखाएं। डिफ़ॉल्ट true है। |
चार समय क्षेत्र इस प्रकार संयोजित होते हैं: pw_live_show_when को false पर सेट करने के साथ समय छिपा हुआ है; अन्यथा pw_live_when एंकर है, pw_live_chronometer इसे एक लाइव काउंटर में बदल देता है, और pw_live_chronometer_count_down उस काउंटर को पीछे की ओर चलाता है।
पुश शुरू करें
Anchor link tocurl -X POST https://api.pushwoosh.com/messaging/v2/notify \ -H "Authorization: Token YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "transactional": { "application": "XXXXX-XXXXX", "platforms": ["ANDROID"], "users": { "list": ["customer-42"] }, "payload": { "content": { "localized_content": { "default": { "android": { "title": "Order #4521", "body": "We are preparing your order", "custom_icon": "https://example.com/restaurant.png", "root_params": { "pw_live_op": "start", "pw_live_id": "order_4521", "pw_live_progress": "1", "pw_live_segments": "[{\"color\":\"#34A853\",\"length\":3},{\"color\":\"#FBBC05\",\"length\":4},{\"color\":\"#4285F4\",\"length\":3}]", "pw_live_extras": "{\"eta\":\"18:40\"}" } } } } } }, "schedule": { "after": "0s" }, "message_type": "MESSAGE_TYPE_TRANSACTIONAL" } }'पुश अपडेट करें
Anchor link toजब भी गतिविधि आगे बढ़ती है तो उसी pw_live_id के साथ एक update भेजें। सेगमेंट और आइकन को दोहराएं - एक अपडेट जो उन्हें छोड़ देता है, उनके बिना प्रस्तुत होता है।
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \ -H "Authorization: Token YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "transactional": { "application": "XXXXX-XXXXX", "platforms": ["ANDROID"], "users": { "list": ["customer-42"] }, "payload": { "content": { "localized_content": { "default": { "android": { "title": "Order #4521", "body": "Your courier is on the way", "custom_icon": "https://example.com/restaurant.png", "root_params": { "pw_live_op": "update", "pw_live_id": "order_4521", "pw_live_progress": "7", "pw_live_segments": "[{\"color\":\"#34A853\",\"length\":3},{\"color\":\"#FBBC05\",\"length\":4},{\"color\":\"#4285F4\",\"length\":3}]" } } } } } }, "schedule": { "after": "0s" }, "message_type": "MESSAGE_TYPE_TRANSACTIONAL" } }'पुश समाप्त करें
Anchor link toटर्मिनल पुश को केवल ऑपरेशन और आईडी की आवश्यकता होती है।
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \ -H "Authorization: Token YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "transactional": { "application": "XXXXX-XXXXX", "platforms": ["ANDROID"], "users": { "list": ["customer-42"] }, "payload": { "content": { "localized_content": { "default": { "android": { "root_params": { "pw_live_op": "end", "pw_live_id": "order_4521" } } } } } }, "schedule": { "after": "0s" }, "message_type": "MESSAGE_TYPE_TRANSACTIONAL" } }'उपस्थिति को अनुकूलित करें
Anchor link toSDK pw_live_progress, pw_live_progress_indeterminate, और pw_live_segments से निर्मित एक डिफ़ॉल्ट प्रगति शैली भेजता है। प्रगति बार पर पूर्ण नियंत्रण लेने के लिए, LiveUpdateProgressStyleProvider लागू करें और स्वयं एक Notification.ProgressStyle को आकार दें।
प्रदाता एकल अनुकूलन बिंदु है। SDK अभी भी चैनल सेटअप, चल रहे और प्रचारित झंडे, बड़े आइकन, एक्शन बटन और हेडर समय का मालिक है - एक कस्टम प्रदाता केवल प्रगति बार को आकार दे सकता है, इसलिए यह प्रचार पात्रता को नहीं तोड़ सकता है। यह स्टेटलेस होना चाहिए: लौटाए गए स्टाइल को केवल आपूर्ति किए गए LiveUpdateState से प्राप्त करें। यदि यह फेंकता है, तो SDK डिफ़ॉल्ट शैली पर वापस आ जाता है और अधिसूचना अभी भी पोस्ट होती है।
import android.app.Notification;import androidx.annotation.NonNull;import com.pushwoosh.liveupdates.LiveUpdateProgressStyleProvider;import com.pushwoosh.liveupdates.LiveUpdateSegment;import com.pushwoosh.liveupdates.LiveUpdateState;import java.util.List;
public class OrderStyleProvider implements LiveUpdateProgressStyleProvider { @NonNull @Override public Notification.ProgressStyle createStyle(@NonNull LiveUpdateState state) { Notification.ProgressStyle style = new Notification.ProgressStyle(); if (state.getProgress() != null) { style.setProgress(state.getProgress()); } style.setProgressIndeterminate(state.isProgressIndeterminate());
List<LiveUpdateSegment> segments = state.getSegments(); int boundary = 0; for (int i = 0; i < segments.size(); i++) { LiveUpdateSegment seg = segments.get(i); style.addProgressSegment( new Notification.ProgressStyle.Segment(seg.getLength()).setColor(seg.getColor())); boundary += seg.getLength(); if (i < segments.size() - 1) { style.addProgressPoint(new Notification.ProgressStyle.Point(boundary)); } } return style; }}import android.app.Notificationimport com.pushwoosh.liveupdates.LiveUpdateProgressStyleProviderimport com.pushwoosh.liveupdates.LiveUpdateState
class OrderStyleProvider : LiveUpdateProgressStyleProvider { override fun createStyle(state: LiveUpdateState): Notification.ProgressStyle { val style = Notification.ProgressStyle() state.progress?.let { style.setProgress(it) } style.setProgressIndeterminate(state.isProgressIndeterminate)
val segments = state.segments var boundary = 0 segments.forEachIndexed { i, seg -> style.addProgressSegment( Notification.ProgressStyle.Segment(seg.length).setColor(seg.color)) boundary += seg.length if (i < segments.size - 1) { style.addProgressPoint(Notification.ProgressStyle.Point(boundary)) } } return style }}AndroidManifest.xml में <meta-data> टैग के साथ प्रदाता को पंजीकृत करें। क्लास में एक सार्वजनिक नो-आर्ग्यूमेंट कंस्ट्रक्टर होना चाहिए।
<meta-data android:name="com.pushwoosh.LIVE_UPDATE_STYLE_PROVIDER" android:value="com.example.OrderStyleProvider" />pw_live_extras में भेजे गए JSON को पढ़ने और शैली को अपने स्वयं के व्यावसायिक डेटा के अनुकूल बनाने के लिए LiveUpdateState.getExtras() का उपयोग करें।
अपने ऐप से लाइव अपडेट प्रबंधित करें
Anchor link toसर्वर प्रत्येक start, update, और end को संचालित करता है, इसलिए लाइव अपडेट पोस्ट करने या ताज़ा करने के लिए कोई ऐप-साइड एपीआई नहीं है। PushwooshLiveUpdates मुखौटा केवल वही कवर करता है जो सर्वर नहीं कर सकता है - स्थानीय रूप से एक अपडेट को खारिज करना और यह जांचना कि कौन से स्क्रीन पर हैं।
import com.pushwoosh.liveupdates.PushwooshLiveUpdates;
// उपयोगकर्ता द्वारा इन-ऐप गतिविधि समाप्त करने पर एक विशिष्ट लाइव अपडेट को खारिज करें,// सर्वर के टर्मिनल "एंड" पुश की प्रतीक्षा किए बिनाPushwooshLiveUpdates.endLiveUpdate("order_4521");
// इस ऐप द्वारा वर्तमान में दिखाई गई गतिविधि आईडी की सूची बनाएंList<String> active = PushwooshLiveUpdates.getActiveIds();
// यह ऐप जो कुछ भी दिखा रहा है उसे साफ़ करें, उदाहरण के लिए लॉगआउट परPushwooshLiveUpdates.endAllLiveUpdates();सभी विधियों को किसी भी थ्रेड से कॉल करना सुरक्षित है और Android 16 से नीचे के उपकरणों पर एक नो-ऑप हैं।