2013-01-02 69 views
0

我在Android的GCM上工作,我通過asp.net服務器將數據發送到設備,如下面的代碼。gcm onMessage()被調用但數據爲空...?

public void SendCommandToPhone(String sCommand) 
    { 
     String DeviceID = ""; 
     DeviceID = "APA91bF9SSDEp-UPU8UwvctGt5ogfrSw0UdilTWlCujqItHcr-eiPJ31ZDI-IeqTbLr92ZOPF31bXtB1_5gNEPHAq82N4ji0stm4cy9U0Yuk0Awhjl9PS02okuc9rRhJobkgOt-ofm5Br0KR-Y"; 
     WebRequest tRequest; 
     tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send"); 
     tRequest.Method = "post"; 
     //tRequest.ContentType = "application/json"; 
     tRequest.ContentType = "application/x-www-form-urlencoded"; 
     tRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyBgCKDhyHnRmmu8jCfmupHVJA8cVkIa-XEZS")); 
     String collaspeKey = Guid.NewGuid().ToString("n"); 
     String postData = string.Format("registration_id={0}&data.message={1}&collapse_key={2}", DeviceID, "YourMessage", collaspeKey); 
     Byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
     tRequest.ContentLength = byteArray.Length; 
     Stream dataStream = tRequest.GetRequestStream(); 
     dataStream.Write(byteArray, 0, byteArray.Length); 
     dataStream.Close(); 
     WebResponse tResponse = tRequest.GetResponse(); 
     dataStream = tResponse.GetResponseStream(); 
     StreamReader tReader = new StreamReader(dataStream); 
     String sResponseFromServer = tReader.ReadToEnd(); 
     tReader.Close(); 
     dataStream.Close(); 
     tResponse.Close(); 
    } 

,並在應用程序的onMessage代碼波紋管

@Override 
protected void onMessage(Context context, Intent intent) { 
String message = intent.getStringExtra("message"); 
} 

它被稱爲正常在調試時,我打電話asp.net的服務,但在這裏消息串變爲零。

任何人可以幫助,我在哪裏出了問題......

+0

如果你可以嘗試發佈你的請求看起來像(你的代碼的結果)它窩幫助我們看到究竟發生了什麼。 – selsine

回答

0

應用試試這個

@Override 
protected void onMessage(Context context, Intent intent) { 
Bundle extras = intent.getExtras(); 
String message = extras.getString("message"); 
} 
+0

謝謝你回答almuneef,但我做了同樣的事情,只是你在捆綁存儲extras,然後gettring。這是同一件事。但無論如何,我嘗試過,但仍然在**消息中爲空** –

+0

你可以檢查捆綁包是否爲空 – almuneef

+0

是的,它是空的,這是onMessage()調用但沒有數據檢索 –

1

你的消息應該與這些參數被張貼:

'registration_ids' => DeviceID , 
'data' => array("notification" => YOUR_JSON_MESSAGE_STRING), 

在機器人側::

Bundle data = intent.getExtras(); 
data.getString("notification") 
0

可能的原因是對參數的「消息」與服務器中定義的內容不完全相同。

代碼:

@Override 
protected void onMessage(Context context, Intent intent) { 
    String message = intent.getStringExtra("message"); 
} 

但服務器中,例如像PHP服務器:

$msg = array("mess" => "Hellow World!"); 
sendNotif($msg); 

看到PHP文件亂七八糟=消息,最可能是一個空將返回除非你會改變你的代碼

@Override 
protected void onMessage(Context context, Intent intent) { 
     String message = intent.getStringExtra("mess"); 
} 
相關問題