क्या वास्तविक समय पुश सूचना के पास Android समर्थन है?


343

मैंने हाल ही में ऐप्स को ऐप सूचनाओं के लिए लगभग तात्कालिक सूचनाएं प्राप्त करने के लिए iPhone ऐप की क्षमता के बारे में सीखा ।

यह पुश नोटिफिकेशन, एक bespoke प्रोटोकॉल के रूप में प्रदान किया जाता है, जो कि iPhone के लिए हमेशा डेटा कनेक्शन पर रहता है और ऐप के लिए बाइनरी पैकेट्स को संदेश देता है, जो सर्वर ऐप से 0.5 से 5 सेकंड के बीच फोन ऐप पर सेंड होने पर अविश्वसनीय रूप से तेज़ी से अलर्ट करता है। जवाब देने का समय। यह डेटा के रूप में भेजा जाता है - एसएमएस के बजाय - बहुत कम पैकेट में डेटा प्लान के हिस्से के रूप में चार्ज किया जाता है जो आने वाले संदेशों के रूप में नहीं होता है।

मैं जानना चाहूंगा कि क्या, Android का उपयोग करना, या तो एक समान सुविधा है, या क्या Android API का उपयोग करके इसके करीब कुछ लागू करना संभव है। स्पष्ट करने के लिए, मैं इसी तरह परिभाषित करता हूं:

  • एसएमएस संदेश नहीं, बल्कि कुछ डेटा संचालित समाधान
  • जितना संभव हो उतना वास्तविक समय
  • स्केलेबल है, यानी, मोबाइल ऐप के सर्वर भाग के रूप में, मैं सेकंड में हजारों ऐप इंस्टेंस को सूचित कर सकता हूं

मैं सराहना करता हूं कि ऐप आधारित खींचा जा सकता है, HTTP अनुरोध / प्रतिक्रिया शैली, लेकिन आदर्श रूप से मैं मतदान नहीं करना चाहता जो केवल अधिसूचना के लिए जांच करना है; इसके अलावा यह डेटा प्लान को ड्रिप करने जैसा है।


3
Gmail और gchat की सूचना आमतौर पर उस सीमा के भीतर होती है। अपने स्वयं के ऐप में इसे दोहराने का एक तरीका होना चाहिए।
द साने

हां, एक एंड्रॉइड लाइब्रेरी है जो पुश मैसेजिंग को बहुत सरल बनाती है ... बस अपने ऐप में जिगी के Droid Notifications लाइब्रेरी को शामिल करें और वहां से यह कोड की सिर्फ 10 लाइनें हैं ... उम्मीद है कि यह मदद करता है :)
कोरी हार्डन

बेहतर विश्वसनीयता के लिए हुड के तहत MQTT का उपयोग करने वाले एक रीयल टाइम पुश अधिसूचना गेटवे के लिए Pushy ( pushy.me ) देखें। पूर्ण प्रकटीकरण - मैंने पुष्य की स्थापना की।
एलाड नवा

जवाबों:


215

फायरबेस क्लाउड मैसेजिंग FCM FAQ GCM का नया संस्करण है। यह Android, iOS और Chrome पर मज़बूती से संदेश देने के लिए GCM के मुख्य बुनियादी ढांचे को विरासत में देता है। हालाँकि, वे GCM का समर्थन करना जारी रखेंगे क्योंकि बहुत सारे डेवलपर आज सूचनाओं को संभालने के लिए GCM SDK का उपयोग कर रहे हैं, और क्लाइंट ऐप अपग्रेड होने में समय लगता है।

26 जून 2012 तक, Google क्लाउड मैसेजिंग उपकरणों पर चलने वाले एप्लिकेशन को संदेश भेजने का पसंदीदा तरीका है।

पहले (और अब पदावनत), सेवा को क्लाउड टू डिवाइस मैसेजिंग कहा जाता था ।


14
Google अपने Android ऐप में Java में code.google.com/android/c2dm पर इसे लागू करने के लिए विस्तृत प्रलेखन प्रदान करता है, लेकिन C2DM के सर्वर साइड पहलू के साथ संचार करने के लिए उनके नमूना कोड की कमी है। मैंने उस पहलू के लिए एक ट्यूटोरियल यहाँ लिखा है: blog.boxedice.com/2010/10/07/…
DavidM

2
क्या एंड्रॉइड 2.2 के साथ उपयोगकर्ताओं को पुश नोटिफिकेशन की पेशकश करने का एक तरीका है, लेकिन पुराने नोटों पर उसी ऐप को रनवेबल बना सकते हैं, बस बिना पुश नोटिफिकेशन के?
OneWorld

3
@OneWorld: हाँ, किसी भी अन्य Android पिछड़े संगतता तकनीक की तरह, C2DM अनुपलब्ध होने पर वैकल्पिक रणनीति चुनने के लिए प्रतिबिंब का उपयोग करें, अधिक देखने के लिए: developer.android.com/resources/articles/…
रयान


6
C2DM को आधिकारिक तौर पर 26 जून 2012 तक हटा दिया गया है, इसके बजाय [Android के लिए Google क्लाउड मैसेजिंग] ( डेवलपर.
android.com/guide/google/gcm/index.html) का

47

XMPP एक अच्छा उपाय है। मैंने इसे एक पुश इनेबल, रियलटाइम, एंड्रॉइड एप्लिकेशन के लिए उपयोग किया है। XMPP शक्तिशाली, अत्यधिक एक्सटेंसिबल और एकीकृत और उपयोग करने में आसान है।

मुक्त XMPP सर्वरों का भार है (हालांकि शिष्टाचार से बाहर आपको उनका दुरुपयोग नहीं करना चाहिए) और खुले स्रोत सर्वर हैं जिन्हें आप अपने स्वयं के बक्से में चला सकते हैं। OpenFire एक उत्कृष्ट पसंद है।

लाइब्रेरी जिसे आप चाहते हैं, जैसा कि ऊपर उल्लेखित नहीं है, स्मैक है, यह aSmack है । लेकिन ध्यान दें, यह एक बिल्ड माहौल है - आपको लाइब्रेरी का निर्माण करना होगा।

यह एक गणना है जो मैंने एक्सएमपीपी समाधान के बैटरी जीवन प्रभाव पर किया था:

एंड्रॉइड क्लाइंट को एक्सएमपीपी सर्वर पर दिल की धड़कन भेजने के लिए समय-समय पर जागते हुए लगातार टीसीपी कनेक्शन बनाए रखना चाहिए।
यह स्पष्ट रूप से बिजली के उपयोग के संदर्भ में लागत लगाता है। इस लागत का एक अनुमान नीचे दिया गया है:

  • 1400mAh की बैटरी का उपयोग करना (जैसा कि नेक्सस वन और एचटीसी डिज़ायर में दिया गया है)
  • एक निष्क्रिय डिवाइस, जो 3 जी नेटवर्क से जुड़ा है, लगभग 5mA का उपयोग करता है
  • हर 5 मिनट में उठने, दिल की धड़कन, नींद का चक्र पूरा होने में तीन सेकंड लगते हैं और 300mA का उपयोग होता है
  • प्रति घंटे बैटरी उपयोग में लागत इसलिए है:
    • 36 सेकंड 300mA = 3mAh दिल की धड़कन भेज रहा है
    • निष्क्रिय में 3600 सेकंड 5mA = 5mAh
    • 4:95 + 3 = 7: 95mAh संयुक्त
  • 1400 mAh की बैटरी लगभग 11.6 दिन बेकार और 7.3 दिनों तक चलती है, जब एप्लिकेशन चल रहा होता है, जो बैटरी जीवन में लगभग 37% की कमी का प्रतिनिधित्व करता है।
  • हालांकि, 37% की बैटरी जीवन में कमी अभ्यास में पूर्ण रूप से सबसे खराब स्थिति का प्रतिनिधित्व करती है जो कि उपकरण शायद ही कभी पूरी तरह से निष्क्रिय हैं।

2
हालाँकि, फोन में 3 घंटे तक चलेगा, जब फोन के उठने पर या नेटवर्क की स्थिति बदलने पर डिस्प्ले स्विच करने या प्रदर्शित होने पर सैकड़ों इंट्रेंस चलते हैं।
मॉन्स्टिएर

33

मैंने हाल ही में एंड्रॉइड के लिए MQTT http://mqtt.org के साथ खेलना शुरू किया, जो आप पूछ रहे हैं (यानी एसएमएस नहीं बल्कि डेटा संचालित, लगभग तत्काल संदेश डिलीवरी, स्केलेबल, मतदान नहीं, आदि)।

मेरे पास इस पर पृष्ठभूमि की जानकारी के साथ एक ब्लॉग पोस्ट है, यह उपयोगी है http://dalelane.co.uk/blog/?p=938

(नोट: MQTT एक आईबीएम तकनीक है, और मुझे यह बताना चाहिए कि मैं आईबीएम के लिए काम करता हूं।)


Mqtt यह कैसे कर रहा है? कहीं न कहीं कुछ मतदान अवश्य होना चाहिए? यहां तक ​​कि ऐप्पल को भी चुनाव करना पड़ता है, लेकिन मुझे लगता है कि वे एक समय में केवल एक ही कनेक्शन कर रहे हैं, इसलिए बैटरी को नहीं निकालेंगे ...
Janusz

3
यह एक टीसीपी / आईपी कनेक्शन खोलकर और इसे खुला छोड़ कर करता है। यह चुनाव नहीं करता है, हालांकि इसे कभी-कभी इसे जीवित रखने के लिए कनेक्शन के नीचे एक छोटा पिंग संदेश भेजना पड़ता है।
23

MQTT निश्चित रूप से जाने का तरीका है यदि Google के माध्यम से अपना पुश संदेश भेजना आपको असुविधाजनक बनाता है। इसके अलावा, हमारे पास हमारे ग्राहकों के साथ एक nondisclosure समझौते हैं जो डेटा एक्सचेंजों के लिए क्लाउड सेवाओं के उपयोग पर रोक लगाते हैं।
VH-NZZ

14

Xtify प्लेटफ़ॉर्म पर एक नज़र डालें । ऐसा लगता है कि वे क्या कर रहे हैं,


12

Google C2DM की अवहेलना कर रहा है, लेकिन इसके स्थान पर उनके GCM (Google क्लाउड मैसेजिंग) को शुरू करने में मुझे नहीं लगता कि उनका कोई कोटा है और यह मुफ़्त है! हालाँकि इसके लिए Android 2.2+ की आवश्यकता होती है! http://developer.android.com/guide/google/gcm/index.html


8

यदि आप अपने लक्षित बाज़ार के लिए वहां मौजूद Google पुस्तकालयों पर निर्भर हो सकते हैं, तो आप GTalk कार्यक्षमता (मौजूदा उपयोगकर्ता नाम पर एक संसाधन दर्ज करना - यह संदेश को इंटरसेप्ट करना जैसे कि वे ब्रॉडकास्टसीवर के साथ आते हैं) में वापस पिला सकते हैं ।

यदि नहीं, और मुझे उम्मीद है कि आप नहीं कर सकते हैं , तो आप XMPP के अपने संस्करणों को बंडल कर रहे हैं । यह एक दर्द है, लेकिन अगर एक्सएमपीपी को स्टैंडअलोन लाइब्रेरी के रूप में अलग से बंडल किया जाता है, तो इसे आसान बनाया जा सकता है।

आप PubSubHubub पर भी विचार कर सकते हैं , लेकिन मुझे इसके नेटवर्क उपयोग का कोई पता नहीं है। मेरा मानना ​​है कि यह XMPP के ऊपर बनाया गया है।


मुझे लगता है कि लेख आँकड़े कि गुल्लक वापस कार्यक्षमता हमेशा उपलब्ध होगी जब तक कि डिवाइस पर gtalk पुस्तकालय हैं। क्या आपके पास उदाहरण के साथ कुछ संसाधन हैं जो वास्तव में ऐसा कैसे करते हैं?
Janusz

GTK को 1.0 (iirc) के बाद से SDK से हटा दिया गया है।
२३:१५ पर MrSnowflake

8

मैं इस पर गौर कर रहा हूं और रमेश द्वारा अनुशंसित PubSubHubBub एक विकल्प नहीं है। PubSubHubBub सर्वर से सर्वर संचार के लिए अभिप्रेत है

"मैं एक NAT के पीछे हूं। क्या मैं हब की सदस्यता ले सकता हूं? हब मुझसे कनेक्ट नहीं हो सकता है।"

/ बेनामी

नहीं, PSHB एक सर्वर-टू-सर्वर प्रोटोकॉल है। यदि आप NAT के पीछे हैं, तो आप वास्तव में एक सर्वर नहीं हैं। जबकि हमने ऐसे क्लाइंट्स के लिए हैंगिंग ("लॉन्ग पोलिंग") और / या मैसेजबॉक्स पोलिंग के लिए वैकल्पिक PSHB एक्सटेंशन के आइडिया के बारे में सोचा है, यह मूल कल्पना में नहीं है। मूल युक्ति केवल सर्वर से सर्वर है।

/ ब्रैड फिट्ज़पैट्रिक, सैन फ्रांसिस्को, सीए

स्रोत: http://moderator.appspot.com/#15/e=43e1a&t=426ac&f=b0c2d (सीधा लिंक संभव नहीं)

मैं इस निष्कर्ष पर पहुंचा हूं कि सरलतम तरीका धूमकेतु HTTP पुश का उपयोग करना है। यह एक सरल और अच्छी तरह से समझा गया समाधान है, लेकिन इसे वेब अनुप्रयोगों के लिए भी फिर से उपयोग किया जा सकता है।


8

एंड्रॉइड पर पुश नोटिफिकेशन के लिए जावा लाइब्रेरी विकसित करने के लिए एक नया ओपन-सोर्स प्रयास है, जो मेटाडोर धूमकेतु सर्वर का उपयोग बैकएंड के रूप में करता है। आप इसे Deacon प्रोजेक्ट ब्लॉग पर देख सकते हैं । हमें डेवलपर्स की आवश्यकता है, इसलिए कृपया इस शब्द का प्रसार करें!


7

गूगल ने हाल ही (18May2016) की घोषणा की है कि Firebase अब यह वास्तविक समय धक्का notifications.It के पास सहित मोबाइल डेवलपर्स के लिए मंच एकीकृत है भी बहु मंच है:

कंपनी अब सभी फायरबेस उपयोगकर्ताओं को आईओएस, एंड्रॉइड और वेब के लिए समर्थन के साथ मुफ्त और असीमित सूचनाएं प्रदान करती है।

स्रोत


6

मुझे पता नहीं है कि मैं इसे कहाँ पर पढ़ता हूँ, लेकिन मेरा मानना ​​है कि जीमेल ई-मेल पुश करने के लिए एक खुले टीसीपी कनेक्शन का उपयोग करता है।


Joelapenna.com/blog/2009/07/android-foursquare-and-push पर एक ब्लॉग पोस्ट एक Android ऐप के डेवलपर द्वारा दिया गया है जो इस बात का समर्थन करता है।
dalelane 28

ये मुझे लगता है, ये भी मतदान कर रहे हैं। मोबाइल डिवाइस सर्वर से एक कनेक्शन बनाता है और उस सर्वर को सूचित करता है जिसे वह अपडेट का इंतजार कर रहा है। वास्तविक पुश सर्वर द्वारा शुरू किया गया है, जो मोबाइल उपकरणों के लिए बहुत कठिन है, और अधिकांश समय में नेटवर्क प्रदाता समर्थन (sms / वैप पुश) शामिल है ...
MrSnowflake

1
"C2DM तृतीय-पक्ष डेवलपर्स को उसी सेवा का उपयोग करने की अनुमति देता है जो Google ऐप्स करते हैं।" एंड्रॉइड क्लाउड से डिवाइस मैसेजिंग के लिए
कोलोराडियम

6

जैसा GTalkकि SDK से चला गया है, यह एक 'मानक' पुश मैसेजिंग सिस्टम बनाने के लिए एक अच्छा विचार हो सकता है। इस तरह, केवल एक सेवा को चलाना होगा, केवल एक अतिरिक्त tcp कनेक्शन को खोलना होगा। एप्लिकेशन को इस सेवा का उपयोग करके बात करनी चाहिए Intentsऔर पहले सेवा से अधिसूचना भेजने और प्राप्त करने की अनुमति का अनुरोध करना चाहिए। सेवा को तब उपयोगकर्ता को सूचित करना चाहिए कि एक नया एप्लिकेशन संदेश भेजना और प्राप्त करना चाहता है। उपयोगकर्ता तब अनुमति देगा या अनुमति से इनकार करेगा, इसलिए वह नियंत्रण में रहता है। एप्लिकेशन फिर सेवा को एक एक्शन + श्रेणी दर्ज करेगा, इसलिए सेवा को पता है कि पुश किए गए संदेश को कैसे वितरित किया जाए।

एक अच्छा विचार होगा या नहीं?


6

आप XMPP कार्यान्वयन के साथ क्यों नहीं जाते हैं। अभी Android के लिए gtalk, jabber, Citadel इत्यादि सहित कई सार्वजनिक सर्वर उपलब्ध हैं। एक SDK भी उपलब्ध है जिसे SMACK नाम दिया गया है। यह हम नहीं कह सकते हैं कि एक धक्का सूचना है लेकिन एक्सएमपीपी का उपयोग करके आप क्लाइंट और सर्वर के बीच एक कनेक्शन खुला रख सकते हैं जो दो तरह से संचार की अनुमति देगा। मतलब एंड्रॉइड क्लाइंट और सर्वर दोनों एक दूसरे से संवाद कर सकते हैं। वर्तमान में यह Android में पुश की आवश्यकता को पूरा करेगा। मैंने एक नमूना कोड लागू किया है और यह वास्तव में बहुत अच्छा काम करता है


अपने नमूना कोड का लिंक प्रदान करने के लिए देखभाल? बैटरी जीवन के संबंध में कोई परीक्षण किया?
एलेक्स

मैंने बैटरी जीवन पर परीक्षण किया है - हर छह मिनट में आपको जिस धड़कन को भेजने की आवश्यकता होती है वह सबसे खराब स्थिति में बैटरी जीवन को 30% कम कर देता है (यानी डिवाइस केवल दिल की धड़कन भेजने के लिए उठता है)। सर्वोत्तम स्थिति में (उपयोगकर्ता ब्राउज़िंग, कॉल आदि के लिए उपकरण का उपयोग कर रहा है), बैटरी जीवन पर प्रभाव नगण्य है।
मांस

6

मैंने हाल ही में http://pushdroid.org को विकसित किया है। इसका एक एकल अनुप्रयोग है जिसे फोन पर स्थापित किया जाना चाहिए जैसे कि Google ने इसे 2.2 में कार्यान्वित किया है। यह 1.5 से काम करता है और आशय से प्रसारित होता है।


4

GCM के साथ समस्या यह है कि इस प्रक्रिया में बहुत सारे कॉन्फ़िगरेशन शामिल हैं:

  • आपको एंड्रॉइड ऐप में बहुत सारे बॉयलरप्लेट जोड़ना होगा
  • आपको GCM सर्वर के साथ संचार करने के लिए एक बाहरी सर्वर को कॉन्फ़िगर करने की आवश्यकता है
  • आपको परीक्षण लिखने होंगे

अगर आपको साधारण चीजें पसंद हैं (मेरी तरह) तो आपको अर्बनएरशिप की कोशिश करनी चाहिए । यह (IMHO) बहुत सारे कॉन्फ़िगरेशन के बिना अपने ऐप में GCM का उपयोग करने का सबसे आसान तरीका है। यह आपको परीक्षण करने के लिए एक सुंदर GUI भी देता है कि आपके GCM संदेश सही तरीके से वितरित किए जा रहे हैं।

  • आप डॉक्स पा सकते हैं और यहां गाइड शुरू कर सकते हैं
  • आप यहां एक नमूना आवेदन पा सकते हैं

नोट: मैं किसी भी तरह से अर्बनएयरशिप से नाराज नहीं हूं



2

उनके पास उनके श्रोता हैं जो आपके द्वारा अपने कोड में अपने पुस्तकालय कक्षाओं का उपयोग करके उपयोग किया जाना है। आपको धक्का देने की जरूरत नहीं है। आपको सर्वर पर संदेश भेजना होगा सर्वर संदेश को डिवाइस पर धकेल देगा। वे OAuth का उपयोग करते हैं। प्रोटोकॉल के बारे में, CCS और XMPP का उपयोग करने के दो तरीके हैं। CCS केवल XMPP को एक प्रामाणिक ट्रांसपोर्ट परत के रूप में उपयोग करता है, इसलिए आप कनेक्शन को प्रबंधित करने के लिए अधिकांश XMPP लाइब्रेरीज़ का उपयोग कर सकते हैं। डिवाइस पर सूचनाएं भेजने के लिए आप एंड्रॉइड ऐप में कोड लिख सकते हैं और साथ ही अपना सर्वर कोड भी भेज सकते हैं। संदेश भेजने का काम आपके कोड द्वारा ही किया जाएगा। जीसीएम मामले में Google सर्वर द्वारा आराम का ध्यान रखा जाएगा। आप इस लिंक पर विस्तार से जांच कर सकते हैं

http://developer.android.com/google/gcm/server.html

इसके अलावा, सुरक्षा मुद्दों के लिए

Google क्लाउड मैसेजिंग सुरक्षा https://groups.google.com/forum/# .topic/android-gcm/M- EevBitbhQ

यदि आपका ऐप नहीं चल रहा है, तो भी डिवाइस अधिसूचना को पुनः प्राप्त कर सकते हैं क्योंकि आपको प्रसारण श्रोताओं के लिए कोड लिखना होगा। बैकग्राउंड में यह सर्वर को सुन रहा होगा और जब भी कोई मैसेज पैकेट आएगा, यह मैसेज को नोटिफिकेशन के रूप में रिसीव करेगा। एंड्रॉइड में वह सेवा है जिसके बारे में आपको परेशान नहीं होना चाहिए। आपके पास केवल पुस्तकालय वर्ग का उपयोग करने वाले उन संसाधनों का उपयोग करना है जो आपके काम को आसान बनाते हैं और उन्हें लिखते हैं कि यदि आपका ऐप नहीं चल रहा है, तो यह अधिसूचना को पुनः प्राप्त करता है। जाहिर है, वहाँ कुछ श्रोता होगा करने के लिए एप्लिकेशन को दूर करने के लिए बना। इस लिंक में "संदेश को पुनः प्राप्त करें" अनुभाग देखें

http://developer.android.com/google/gcm/client.html

यह उपयोगकर्ताओं से अनुरोध को भी स्वीकार करेगा। जीसीएम के लिए यह करेगा। कृपया "संदेश भेजें" जांचें

http://developer.android.com/google/gcm/client.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.