2013-05-09 4 views
5

क्या मेरे एंड्रॉइड डिवाइस को किसी अन्य डिवाइस के लिए जीसीएम संदेश भेजने के लिए सर्वर के रूप में कार्य करने का कोई भी संभावित तरीका है। मैं webservice और सभी का उपयोग कर रास्ता जानता हूँ। लेकिन मैं सीधे जीसीएम एमएसजेड भेजने के लिए केवल एंड्रॉइड डिवाइस का उपयोग करना चाहता हूं।एंड्रॉइड डिवाइस को सर्वर के रूप में जीसीएम को सीधे संदेश भेजने के लिए

धन्यवाद। अपने सर्वर classpath को एसडीके के gcm-सर्वर/जिले निर्देशिका से

कॉपी gcm-server.jar फ़ाइल:

उत्तर

1

Android डिवाइस पर सर्वर साइड आवेदन लिखने के लिए।

एक सर्वलेट (या अन्य सर्वर-साइड तंत्र) बनाएं जिसका उपयोग एंड्रॉइड एप्लिकेशन द्वारा जीसीएम द्वारा प्राप्त पंजीकरण आईडी भेजने के लिए किया जा सकता है। एप्लिकेशन को अन्य जानकारी भेजने की भी आवश्यकता हो सकती है - जैसे कि उपयोगकर्ता का ईमेल पता या उपयोगकर्ता नाम-ताकि सर्वर पंजीकरण आईडी को डिवाइस के मालिक के साथ जोड़ सके। इसी तरह, पंजीकरण आईडी को पंजीकरण रद्द करने के लिए उपयोग की जाने वाली एक सर्वलेट बनाएं। जब सर्वर को पंजीकरण आईडी को संदेश भेजने की आवश्यकता होती है, तो यह com.google.android.gcm.server का उपयोग कर सकता है। जीसीएम लाइब्रेरी से सहायक सहायक वर्ग।

For example: 
import com.google.android.gcm.server.*; 

Sender sender = new Sender(myApiKey); 
Message message = new Message.Builder().build(); 
MulticastResult result = sender.send(message, devices, 5); 

स्निपेट के ऊपर करता है निम्नलिखित:

अपनी परियोजना के एपीआई कुंजी का उपयोग कर एक भेजने वाले वस्तु बनाता है। किसी दिए गए पंजीकरण आईडी का उपयोग करके एक संदेश बनाता है (संदेश निर्माता के पास सभी संदेश पैरामीटर जैसे पतन कुंजी और पेलोड डेटा सेट करने के तरीके भी होते हैं)। संदेश को अधिकतम 5 पुनः प्रयासों के साथ भेजता है (यदि जीसीएम सर्वर अनुपलब्ध हैं), और परिणाम पर प्रतिक्रिया संग्रहीत करता है। अब परिणाम को पार्स करना और निम्नलिखित मामलों में उचित कार्रवाई करना आवश्यक है:

यदि संदेश बनाया गया था, लेकिन परिणाम एक कैननिकल पंजीकरण आईडी लौटा, तो वर्तमान पंजीकरण आईडी को कैननिकल के साथ प्रतिस्थापित करना आवश्यक है। यदि लौटाई गई त्रुटि को पंजीकृत नहीं किया गया है, तो उस पंजीकरण आईडी को निकालना आवश्यक है, क्योंकि एप्लिकेशन को डिवाइस से अनइंस्टॉल किया गया था।

if (result.getMessageId() != null) { 
String canonicalRegId = result.getCanonicalRegistrationId(); 
if (canonicalRegId != null) { 
    // same device has more than on registration ID: update database 
} 
} else { 
String error = result.getErrorCodeName(); 
if (error.equals(Constants.ERROR_NOT_REGISTERED)) { 
    // application has been removed from device - unregister database 
} 
} 

आवश्यक अनुमतियां हैं::

<!-- App receives GCM messages. --> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <!-- GCM connects to Google Services. --> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <!-- GCM requires a Google account. --> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <!-- Keeps the processor from sleeping when a message is received. --> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
<permission android:name="my_app_package.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 
<uses-permission android:name="my_app_package.permission.C2D_MESSAGE" /> 

इसके अलावा, आप की आवश्यकता होगी: कोड स्निपेट है कि इन 2 शर्तों को संभालती है com.google.android.c2dm.permission.SEND permission

अधिक जानकारी के लिए कृपया अधिक का पता लगाने के .. कृपया उपयोग न करें और जब तक आप चीजों की अच्छी तरह से खोज नहीं करते।Referal Link

+0

धन्यवाद अर्पित गर्ग मैंने पहले ही ऐसा किया है। लेकिन मैं सिर्फ एक डिवाइस से दूसरे डिवाइस पर जीसीएम संदेश भेजना चाहता हूं। हार्डकोडेड Regid का उपयोग कर। मैं टॉव रास्ता संचार से वेबसर्वर या सर्वलेट को खत्म करना चाहता हूं। क्या यह संभव है? – Roodie

+0

@Roodie प्रदान कोड में, वेब सर्वर या सर्वलेट की कोई आवश्यकता नहीं है। हार्ड-कोडेड रेजीड का उपयोग करके ऐप में भेजने और प्राप्त करने के लिए केवल नियंत्रण प्रदान करें और दोनों डिवाइस पर ऐप लॉन्च करें .. आप वांछित के बीच संचार कर सकते हैं। लेकिन सुनिश्चित करें कि क्लाउड की आवश्यकता है इसलिए मध्यस्थ केवल बादल होगा .. –

+0

यह मेरे लिए काम नहीं करता है। क्या मैनिफ़ में प्रेषक पक्ष का वर्णन करने के लिए कोई विशेष अनुमति है? आपने कोशिश की? – Roodie

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