如何从Android服务处理GCM?

时间:2013-08-21 15:34:23

标签: java android cordova android-service

我想做(例如这个): 1.- GCM到达 2.-从后台运行的服务上传一些数据到我的服务器(我不想在GCM到达时显示任何警报或播放任何声音),也许将设备当前位置上传到服务器。

我想从Phonegap这样做,所以我想我要写一个插件或找一个与javascript源通信服务的插件。我不需要Phonegap从服务接收任何类型的消息,但是服务本身将上传我需要的数据。换句话说,我将使用Phonegap作为UI并启动将完成所有工作的服务。我还需要服务启动,只要用户打开他/她的手机(我想这来自服务配置)但我认为用户必须至少启动一次应用程序(我认为这是正常的,对吗?)

我现在的问题是,当GCM到达时,我不知道如何告诉我的服务做'某事'。 任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

只要您在

中收到服务中的GCM消息,就会非常简单
@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
                  }
    }         
        });
}

现在在你的服务中声明一个方法,它收集所有位置数据并将其发布到你的服务器,在void run()中调用该方法。

我希望这个解决方案可以帮到你。