2010-09-05 12 views
6

मैं सी 2 डीएम ढांचे का परीक्षण करने की कोशिश कर रहा हूं। मुझे दो दिन पहले पुष्टिकरण ईमेल मिला और फिर एक ग्राहक बनाने के लिए प्रयास किया जो पंजीकरण कर सकता था। इस उद्देश्य के लिए, मैंने इस ट्यूटोरियल में वर्णित चरणों के बाद एक साधारण क्लाइंट बनाया: http://code.google.com/intl/es-419/android/c2dm/index.htmlAndroid में C2DM के लिए पंजीकरण करने में समस्या

Android मेनिफेस्ट फ़ाइल अन्य बातों के अलावा इस कोड में शामिल हैं:

<permission android:name="com.bilthon.ufrj.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 
<uses-permission android:name="com.bilthon.ufrj.permission.C2D_MESSAGE" /> 

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

<uses-permission android:name="android.permission.INTERNET"/> 

<receiver android:name=".C2DMReceiver" android:permission="com.google.android.c2dm.permission.SEND"> 

<intent-filter> 
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
    <category android:name="com.bilthon.ufrj" /> 
</intent-filter> 

<intent-filter> 
    <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
    <category android:name="com.bilthon.ufrj" /> 
</intent-filter> 
</receiver> 

और फिर, मुख्य गतिविधि का शुभारंभ किया जब कार्यक्रम शुरू होता है निम्नलिखित कोड है:

Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER"); 
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // boilerplate 
registrationIntent.putExtra("sender","[email protected]"); 
Log.d("WelcomeScreen","[email protected]"); 
startService(registrationIntent); 

मैं भी एक गूगल पंजीकृत एवीडी पर मेरा ग्राहक चल रहा है, जैसा कि उन्होंने कहा था कि यह आवश्यक था। लेकिन समस्या यह है कि मैं प्रसारण प्राप्तकर्ता को "जागृत" नहीं कर सकता। मुझे नहीं पता कि क्या गलत हो सकता है। लॉग का विश्लेषण करके, मैं देख सकता हूं कि पंजीकरण का इरादा बनाया गया है और जाहिर तौर पर सही तरीके से उपयोग किया जाता है, लेकिन रिसीवर कोड को कभी निष्पादित नहीं किया जाता है, क्या गलत हो सकता है?

अग्रिम धन्यवाद नेल्सन

उत्तर

9

अच्छा .. बस इसे हल किया गया, समस्या रिसीवर की घोषणा के साथ थी। रिसीवर के लिए टैग को एप्लिकेशन टैग के अंदर जाना चाहिए, जैसा कि यहां प्रदर्शित किया गया है: http://developer.android.com/guide/topics/manifest/manifest-intro.html

यहां एक सी 2 डीएम एप्लिकेशन के लिए एक अच्छी तरह से तैयार किए गए मेनिफेस्ट का एक उदाहरण दिया गया है। एंड्रॉइड-सी 2 डीएम समूह में लिंक पोस्ट करने के लिए मार्क मर्फी के लिए धन्यवाद।

और मूर्खतापूर्ण गलती के लिए खेद है।

नेल्सन

1

चीजें आप देख सकते हैं:

मैंने देखा है कि तुम एक C2DM अनुमति की घोषणा कर रहे हैं लेकिन न तो जैसे कि यह अपने आवेदन में उपयोग कार्य करें:

<uses-permission android:name="com.bilthon.ufrj.permission.C2D_MESSAGE" /> 

आप C2DM पुस्तकालय पर एक नजर है, तो आपको लगता है कि helpe देखेंगे आर C2DMessaging की register विधि setPackage पर अतिरिक्त कॉल के साथ इरादा बनाती है।

registrationIntent.setPackage("com.google.android.gsf"); 
+0

मुझे खेद है, मैंने यहां टेक्स्ट कॉपी करते समय गलती की होगी, क्योंकि मैंने अभी अपना मैनिफेस्ट चेक किया है और आपके पास एक लाइन है जैसा कि आप कहते हैं।और आपके उत्तर के दूसरे भाग के लिए मुझे यह कहना होगा कि मैं अभी तक एक संदेश भेजने की कोशिश भी नहीं कर रहा हूं। मैं सिर्फ आवेदन पंजीकृत करने की कोशिश कर रहा हूं और यह समझने के लिए इरादों के माध्यम से किया जाता है। – Bilthon

+0

मुझे वास्तव में पता नहीं है कि इसका क्या अर्थ है, लेकिन मैंने अभी देखा है कि मुझे यह लाइन लॉगक पर मिलती है: 09-06 20: 08: 04.063: ERROR/C2DMRegistrar (16 9): [C2DMReg] handleRequest पकड़ा java.io.IOException: एसएसएल शट डाउन विफल: सिस्टम कॉल के दौरान I/O त्रुटि, टूटी हुई पाइप – Bilthon

+0

एचएम। दिलचस्प। मैंने एक और चीज जोड़ा जो आप मेरी पोस्ट को आजमा सकते हैं। –

3

मैं सिर्फ यह अपने आप काम कर रहे कुछ समय के लिए इसके साथ कुश्ती के बाद मिला है।

प्रकट में, आप लाइन

<receiver android:name=".C2DMReceiver" android:permission="com.google.android.c2dm.permission.SEND"> 

आप एक वर्ग C2DMReceiver कहा जाता है कि C2DM पैकेज में C2DMBaseReceiver फैली जरूरत है जिसका मतलब है की है। इसे कार्यान्वित करने के लिए, मैंने क्रोमेटोफोन-एंड्रॉइड उदाहरण से सी 2 डीएम पैकेज और सी 2 डीएमआरसीसीवर.जेवा फ़ाइल दोनों को मेरी परियोजना पर कॉपी किया और सी 2 डीएम सर्वर से पंजीकरण आईडी प्राप्त करने में सक्षम था।

2

मुझे एक ही समस्या थी। मेरा समाधान एप्लिकेशन टैग के ऊपर मेरे मैनिफेस्ट में सभी अनुमतियों को ले जा रहा था।

संबंधित मुद्दे