2012-12-22 20 views
5

का उपयोग कर अरबी भाषा में अधिसूचना भेजें मैं एंड्रॉइड उपकरणों को अधिसूचना भेजने के लिए जीसीएम का उपयोग कर रहा हूं।जीसीएम

कोड है कि मैं GCMIntentService में संदेश प्राप्त करने के लिए उपयोग कर रहा हूँ के रूप में नीचे है:

@Override 
    protected void onMessage(Context ctx, Intent intent) { 
     // TODO Auto-generated method stub 
     String j =intent.getStringExtra("message"); 
     generateNotification(ctx, j); 
    } 

और कोड है कि मैं सर्वर साइड में उपयोग कर रहा हूँ धक्का या उन सूचना भेजने के लिए के रूप में नीचे है:

Dim request As WebRequest = WebRequest.Create("https://android.googleapis.com/gcm/send") 
request.Method = "POST" 
request.ContentType = "application/x-www-form-urlencoded" 
request.Headers.Add("Authorization: key=AIzaSyA47-XMaePL1mmI0P1yQ9V4sntMVn9q-1o") 
request.Headers.Add("Sender: id=648406549877") 
Dim collapsKey = Guid.NewGuid.ToString("n") 
Dim postdata As String = "registration_id=" + regid_String_reveived_from_device_after_registering_with_GCM + "&data.message=" + TextBox1.Text + "&collapse_key=" + collapsKey 
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postdata) 
request.ContentLength = byteArray.Length 
Dim dataStream As Stream = request.GetRequestStream 
dataStream.Write(byteArray, 0, byteArray.Length) 
dataStream.Close() 
Dim resposne As WebResponse = request.GetResponse 
Dim dataresponse As Stream = resposne.GetResponseStream 
Dim reader As New StreamReader(dataresponse) 
Dim sResponseFromServer As String = reader.ReadToEnd 
Label2.Text = sResponseFromServer 
reader.Close() 
dataresponse.Close() 
resposne.Close 

जब मैंने उपरोक्त कोड का उपयोग करके अंग्रेजी भाषा में कोई अधिसूचना भेजी तो मुझे इसे बिना किसी समस्या के मेरे डिवाइस में प्राप्त हुआ, लेकिन जब मैंने उपर्युक्त कोड का उपयोग करके अरबी भाषा में अधिसूचना भेजी तो मुझे संदेश के रूप में कुछ भी नहीं मिला जो मुझे दिखाई देता है Logcat और अधिसूचना दोनों में खाली। एंड्रॉयड एपीआई कि मैं इस एप्लिकेशन को विकसित करने के लिए उपयोग कर रहा हूँ 16.

तो कैसे मैं संदेश है कि अधिसूचना, उसी तरह है कि मैं उन संदेशों को जब अंग्रेजी द्वारा भेजे गए के रूप में अरबी में लिखा मिल सकता है।

ASP.Net साइड या एंड्रॉयड साइड से समस्या है।

कोई मदद या पुनर्निर्देशन पूरी तरह से सराहना की जाएगी।

संदेश है कि मैं जो TextBox1.Text अनुरोध के शरीर में रखा के रूप में प्रस्तुत किया जाता है ASP.net की ओर से भेजा गया था और यह करने की जरूरत है:

उत्तर

6

मैं ऊपर समस्या जो मैं कर रही का पालन करते हुए एक सप्ताह के लिए का सामना करना पड़ रहा था हल यूआरएल एन्कोड होना के बाद से है कि मैं सिर्फ TextBox1.Text मूल्य जो मेरी समस्या का समाधान इनकोडिंग और मेरे Android एप्लिकेशन अरबी भाषाओं का में अधिसूचना प्राप्त होते हैं:

मैं केवल बदला इस से मेरी asp.net कोड:

Dim postdata As String = "registration_id=" + regid(i) + "&data.message=" + TextBox1.Text + "&collapse_key=" + collapsKey 

निम्नलिखित की तरह होना चाहिए:

Dim postdata As String = "registration_id=" + regid(i) + "&data.message=" + HttpUtility.UrlEncode(TextBox1.Text) + "&collapse_key=" + collapsKey 

और मेरे एंड्रॉइड कोड को इसके रूप में रखें।

+0

आपको http पर सब कुछ 'UrlEncode' होना चाहिए। (: –

+0

@ हुसम क्या यह PHP के लिए भी काम करता है? – Mani

+0

@ हुसम, क्या मैं किसी अन्य भाषा में एफसीएम से पुश अधिसूचना भेज सकता हूं? मैं अपनी स्थानीय भाषा में एक अधिसूचना भेजना चाहता हूं। क्या यह संभव है? – Kaveri

3

आपकी समस्या है कि आपके अनुरोध उचित रूप से इनकोडिंग नहीं कर रहे हैं प्रकट होता है। Google has an article in their Google Maps API यह बताते हुए कि यूआरएल कैसे बनाया जाना चाहिए। संक्षेप में, अनुरोध यूटीएफ -8 एन्कोडेड होना चाहिए (हालांकि रिक्त स्थान + हो सकते हैं)।

एक टुकड़ा:

सभी वर्ण URL- एनकोडेड एक % चरित्र और एक दो-वर्ण हेक्स उनके UTF-8 वर्ण के लिए इसी मान का उपयोग कर इनकोड किया जाना है। उदाहरण के लिए, यूटीएफ -8 में 上海 + 中國 यूआरएल-एन्कोडेड %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B होगा। स्ट्रिंग ? and the Mysterians यूआरएल-एन्कोडेड %3F+and+the+Mysterians के रूप में होगा।

लेख this Wikipedia article पर इंगित करता है, जहां प्रतिशत-एन्कोडिंग के बारे में विवरण मिल सकते हैं।

GCM architectural overview उपरोक्त में से किसी का उल्लेख नहीं है, लेकिन यह विशेष रूप से की रूपरेखा तैयार करता है:

HTTP शीर्ष लेख निम्न हेडर शामिल होना चाहिए:

  • Authorization: key=YOUR_API_KEY
  • JSON के लिए Content-Type: application/json; सादा पाठ के लिए application/x-www-form-urlencoded;charset=UTF-8

आप charset=UTF-8 निर्दिष्ट और उसके अनुसार अपने अनुरोध एन्कोड करने के लिए अपने Content-Type हैडर बदलने पर विचार कर सकता है। वैकल्पिक रूप से, आप अपने अनुरोधों को अनएन्कोडेड और ISO-8859-6 जैसे अन्य वर्णों के साथ प्रयोग करने का प्रयास कर सकते हैं।

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