सामग्री पर जाएं

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_segmentsJSON स्ट्रिंगआदेशित प्रगति खंड, प्रत्येक {"color": "#RRGGBB", "length": N}
pw_live_extrasJSON स्ट्रिंगएक कस्टम शैली प्रदाता को दिया गया मनमाना डेटा।
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 to
Terminal window
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": "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 भेजें। सेगमेंट और आइकन को दोहराएं - एक अपडेट जो उन्हें छोड़ देता है, उनके बिना प्रस्तुत होता है।

Terminal window
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

टर्मिनल पुश को केवल ऑपरेशन और आईडी की आवश्यकता होती है।

Terminal window
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 to

SDK 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;
}
}

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 से नीचे के उपकरणों पर एक नो-ऑप हैं।

संबंधित लिंक

Anchor link to