2013-08-21 32 views
0

我想這樣做(這個爲例): 1.- GCM到達 2:上傳一些數據到我的服務器在後臺運行(我不想表現出任何警報或玩的時候發出任何聲音服務GCM到達),也許將設備當前位置上傳到服務器。如何從Android服務處理GCM?

我想從PhoneGap的做到這一點,所以我想我會寫一個插件或發現通信與JavaScript源的服務的插件。我不需要Phonegap從服務接收任何類型的消息,但是服務本身會上傳我需要的數據。換句話說,我將使用Phonegap作爲用戶界面,並啓動將完成所有工作的服務。我也需要服務來啓動,無論用戶什麼時候打開他/她的手機(我猜這是來自服務配置),但我認爲用戶將不得不啓動應用程序至少一次(我認爲它是正常的,對不對?) 。

我現在的問題是,我不知道怎麼告訴我的服務時,GCM到達做「東西」。 任何意見,將不勝感激。

回答

0

這是很簡單的,只要你在你的服務

@Override 
protected void onMessage(final Context arg0, final Intent arg1) { 
    String arr=arg1.getStringExtra("message"); 
    arr2=arr.split("-"); 

    Handler h = new Handler(Looper.getMainLooper()); 
     h.post(new Runnable(){ 

      public void run() { 
       // TODO Auto-generated method stub 
      Toast.makeText(arg0, arr2[0], Toast.LENGTH_LONG).show(); 
       if(arr2[0]=="desired value"){ 
       //launch a method in your service that post data to your server using requests 
        } 
    }   
     }); 
} 

收到一個GCM的消息,現在我宣佈在ayour服務的方法收集所有的位置數據,並將其上傳到服務器,調用該方法void run()。

我希望這個解決方案可以幫助你。

+0

你怎麼知道剛到的是什麼類型的消息?對不起,但我是新來的原生Android。 – amarruffo

+0

在後臺看到你的服務器將運行一個php腳本,它將以鍵值對的形式發送數據。因此,相應地,您可以設置一個鍵併爲其分配一個值,例如,在上面的代碼中,我正在使用getStringExtra(「message」)---這裏的消息是我要從響應中提取的一個鍵。您也可以根據在後端運行的腳本類型來獲取多個鍵。 –

+0

響應的格式爲數組,其中包含JSON格式的鍵值對。 –