एंड्रॉइड पर लाइव अपडेट
Pushwoosh pushwoosh-liveupdates मॉड्यूल (SDK 6.9.0 और बाद के संस्करण) के माध्यम से एंड्रॉइड लाइव अपडेट का समर्थन करता है। लाइव अपडेट एक सतत, प्रगति-शैली की सूचना है जिसे सिस्टम लॉक स्क्रीन पर, सूचना ड्रॉअर में, और स्टेटस बार में एक स्टेटस चिप के रूप में बढ़ावा देता है, ताकि उपयोगकर्ता आपके ऐप को खोले बिना किसी गतिविधि का अनुसरण कर सकें।
पूरा जीवनचक्र सर्वर से संचालित होता है: आपका बैकएंड गतिविधि शुरू होने पर एक पुश भेजता है, जैसे-जैसे यह आगे बढ़ता है और पुश भेजता है, और समाप्त होने पर एक अंतिम पुश भेजता है। SDK प्रत्येक को स्वचालित रूप से प्रस्तुत करता है।
लाइव अपडेट क्या हैं
Anchor link toलाइव अपडेट एंड्रॉइड 16 (API 36) में एक उपयोगकर्ता-प्रारंभित, समय-संवेदनशील गतिविधि को शुरू से अंत तक सतह पर लाने के तरीके के रूप में पेश किए गए थे। वे प्लेटफ़ॉर्म की प्रगति-केंद्रित सूचनाओं और Notification.ProgressStyle API पर आधारित हैं। वैचारिक रूप से वे iOS लाइव गतिविधियों के एंड्रॉइड समकक्ष हैं।
यह पृष्ठ केवल Pushwoosh एकीकरण को कवर करता है। प्लेटफ़ॉर्म व्यवहार, प्रचार नियमों और डिज़ाइन मार्गदर्शन के लिए, आधिकारिक एंड्रॉइड दस्तावेज़ देखें:
लाइव अपडेट का उपयोग कब करें
Anchor link toलाइव अपडेट एक ऐसी गतिविधि के लिए हैं जो चल रही है, उपयोगकर्ता-प्रारंभित है, और समय-संवेदनशील है — कुछ ऐसा जिसमें एक स्पष्ट शुरुआत और अंत हो और उपयोगकर्ता अभी सक्रिय रूप से उसकी परवाह करता हो। Pushwoosh ग्राहकों के लिए विशिष्ट परिदृश्य:
- खाद्य वितरण — ऑर्डर स्वीकार किया गया, तैयार किया जा रहा है, डिलीवरी के लिए बाहर, आ रहा है।
- राइड-हेलिंग और टैक्सी — ड्राइवर सौंपा गया, रास्ते में, आ रहा है, यात्रा प्रगति पर है।
- ऑर्डर और शिपमेंट ट्रैकिंग — एक ऑर्डर की लाइव स्थिति जो सक्रिय रूप से पारगमन में है।
- लाइव खेल और मीडिया — मैच का स्कोर और समय जैसे-जैसे खेल आगे बढ़ता है।
- फिटनेस — बीता हुआ समय और प्रगति के साथ एक सक्रिय कसरत या दौड़।
- फिनटेक — एक लेनदेन या सत्यापन प्रवाह जो अपने चरणों से गुजर रहा है।
क्योंकि जीवनचक्र वास्तविक घटनाओं से संचालित होता है जिनके बारे में आपका बैकएंड पहले से ही जानता है (एक ऑर्डर की स्थिति बदलती है, एक कूरियर चलता है), एक लाइव अपडेट आमतौर पर आपके मौजूदा इवेंट प्रवाह में वायर्ड एक API कॉल होता है — न कि कुछ ऐसा जो कोई व्यक्ति हाथ से भेजता है।
आवश्यकताएं
Anchor link to- एंड्रॉइड 16 (API 36) या नया। पुराने उपकरणों पर मॉड्यूल निष्क्रिय रहता है और प्रत्येक लाइव अपडेट API कॉल एक सुरक्षित नो-ऑप है।
- Pushwoosh एंड्रॉइड 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आप मैसेजिंग API v2 के माध्यम से android सामग्री ब्लॉक में एक live_update ऑब्जेक्ट जोड़कर लाइव अपडेट भेजते हैं। एक transactional अनुरोध का उपयोग करें — एक लाइव अपडेट उस विशिष्ट उपयोगकर्ता को लक्षित करता है जिसकी गतिविधि को वह ट्रैक करता है। schedule फ़ील्ड आवश्यक है; { "after": "0s" } तुरंत भेजता है। जीवनचक्र में तीन ऑपरेशन होते हैं, जो live_update.op में सेट होते हैं:
OPERATION_START— एक गतिविधि के लिए पहला पुश। चल रही सूचना पोस्ट करता है।OPERATION_UPDATE— उसी गतिविधि के लिए बाद का पुश। इसे चुपचाप ताज़ा करता है।OPERATION_END— टर्मिनल पुश। सूचना को खारिज करता है।
एक ही गतिविधि से संबंधित सभी पुश को एक ही live_update.id साझा करना होगा। वह आईडी अपडेट को एक साथ बांधती है और यह भी है कि आप ऐप से अपडेट को खारिज करने के लिए उपयोग करते हैं।
प्रत्येक पुश पूरी तरह से सूचना का वर्णन करता है — पिछले पुश से कुछ भी आगे नहीं बढ़ता है। प्रत्येक फ़ील्ड जिसे आप रखना चाहते हैं, जैसे कि सेगमेंट और बड़ा आइकन, प्रत्येक OPERATION_UPDATE के साथ फिर से भेजें; एक छोड़ा गया फ़ील्ड अनुपस्थित के रूप में प्रस्तुत किया जाता है।
लाइव अपडेट पैरामीटर
Anchor link toये कुंजियाँ android सामग्री ब्लॉक के live_update ऑब्जेक्ट के अंदर जाती हैं। शीर्षक, मुख्य भाग और बड़ा आइकन मानक एंड्रॉइड पुश फ़ील्ड (title, body, custom_icon) का उपयोग करते हैं, जो live_update के साथ भेजे जाते हैं।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
op | स्ट्रिंग | जीवनचक्र ऑपरेशन: OPERATION_START, OPERATION_UPDATE, या OPERATION_END। आवश्यक। |
id | स्ट्रिंग | एक लाइव अपडेट के सभी पुश द्वारा साझा की गई स्थिर गतिविधि आईडी। आवश्यक। |
progress | इंट | प्रगति मान, संचित खंड लंबाई के विरुद्ध मापा जाता है। |
progress_indeterminate | बूल | एक ठोस मान के बजाय एक अनिश्चित एनीमेशन दिखाएं। |
progress_bar | बूल | प्रगति बार को बिल्कुल दिखाएं। डिफ़ॉल्ट true है। |
segments | ऐरे | आदेशित प्रगति खंड, प्रत्येक { "color": "#RRGGBB", "length": N }। |
extras | ऑब्जेक्ट | एक कस्टम शैली प्रदाता को पास किया गया मनमाना डेटा। |
when | int64 | हेडर समय एंकर, युग मिलीसेकंड में। |
chronometer | बूल | हेडर समय को एक चालू टाइमर के रूप में दिखाएं। |
chronometer_count_down | बूल | एक चालू टाइमर ऊपर की बजाय नीचे की ओर गिनता है। |
show_when | बूल | हेडर समय कॉलम को बिल्कुल दिखाएं। डिफ़ॉल्ट true है। |
चार समय फ़ील्ड इस प्रकार संयोजित होते हैं: show_when को false पर सेट करने के साथ समय छिपा होता है; अन्यथा when एंकर है, chronometer इसे एक लाइव काउंटर में बदल देता है, और 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", "live_update": { "op": "OPERATION_START", "id": "order_4521", "progress": 1, "segments": [ { "color": "#34A853", "length": 3 }, { "color": "#FBBC05", "length": 4 }, { "color": "#4285F4", "length": 3 } ], "extras": { "eta": "18:40" } } } } } } }, "schedule": { "after": "0s" }, "message_type": "MESSAGE_TYPE_TRANSACTIONAL" } }'अपडेट पुश
Anchor link toजब भी गतिविधि आगे बढ़े तो उसी id के साथ एक OPERATION_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", "live_update": { "op": "OPERATION_UPDATE", "id": "order_4521", "progress": 7, "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": { "live_update": { "op": "OPERATION_END", "id": "order_4521" } } } } } }, "schedule": { "after": "0s" }, "message_type": "MESSAGE_TYPE_TRANSACTIONAL" } }'उपस्थिति को अनुकूलित करें
Anchor link toSDK progress, progress_indeterminate, और 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" />live_update.extras में भेजे गए JSON को पढ़ने और शैली को अपने स्वयं के व्यावसायिक डेटा के अनुकूल बनाने के लिए LiveUpdateState.getExtras() का उपयोग करें।
अपने ऐप से लाइव अपडेट प्रबंधित करें
Anchor link toसर्वर प्रत्येक OPERATION_START, OPERATION_UPDATE, और OPERATION_END को संचालित करता है, इसलिए लाइव अपडेट पोस्ट करने या ताज़ा करने के लिए कोई ऐप-साइड API नहीं है। PushwooshLiveUpdates मुखौटा केवल वही कवर करता है जो सर्वर नहीं कर सकता है — स्थानीय रूप से एक अपडेट को खारिज करना और यह जांचना कि कौन से स्क्रीन पर हैं।
import com.pushwoosh.liveupdates.PushwooshLiveUpdates;
// जब उपयोगकर्ता इन-ऐप गतिविधि समाप्त करता है, तो एक विशिष्ट लाइव अपडेट को खारिज करें,// सर्वर के टर्मिनल "एंड" पुश की प्रतीक्षा किए बिनाPushwooshLiveUpdates.endLiveUpdate("order_4521");
// इस ऐप द्वारा वर्तमान में दिखाए जा रहे गतिविधि आईडी की सूची बनाएंList<String> active = PushwooshLiveUpdates.getActiveIds();
// इस ऐप द्वारा दिखाई जा रही हर चीज़ को साफ़ करें, उदाहरण के लिए लॉगआउट परPushwooshLiveUpdates.endAllLiveUpdates();सभी विधियाँ किसी भी थ्रेड से कॉल करने के लिए सुरक्षित हैं और एंड्रॉइड 16 से नीचे के उपकरणों पर एक नो-ऑप हैं।