在android中的GCM还有什么

时间:2012-12-18 08:04:16

标签: android google-cloud-messaging

我想在我的应用中实施Google云消息传递。我有一个类GCMIntentService,我添加了清单的权限,并将此代码添加到主要活动:

checkNotNull(SENDER_ID, "SENDER_ID");
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);

requestWindowFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.activity_main);
extras = getIntent().getExtras();

if (savedInstanceState == null) {

    if (extras == null) {

        GlobalConfig.setAPPLICATION_ID(APP_ID);

    } else {

        GlobalConfig.setAPPLICATION_ID(extras.getInt("application_id", 0));
    }

} else {

    MY_DEBUG.print("SavedInstanceState is not null");

}

GlobalConfig.setBookmark(0);

//notifications
final String regId = GCMRegistrar.getRegistrationId(this);
Log.i(TAG, "registration id  " + regId);

if (regId.equals("")) {


    GCMRegistrar.register(this, SENDER_ID);

} else {

    Log.v(TAG, "Already registered");

}

我得到了RegId,但我需要从谷歌获取消息吗?我用webservice连接。我需要发送这个regId服务吗?我的下一步应该是什么?

2 个答案:

答案 0 :(得分:2)

这是一张图片,描述了通过GCM服务器从服务器(您的网络服务)向您的设备发送消息的所有步骤。

步骤1和2已经完成(如果我理解你所说的话),因为你检索了注册ID。

因此,您必须按照以下步骤接收通知。

希望这对你有帮助!

答案 1 :(得分:1)

我撰写了一篇博文,介绍了GCM的工作原理以及服务器在此过程中的作用:http://blog.andromo.com/2012/how-does-airbop-push-messaging-work/在本文中,您只需将服务器替换为AirBop服务器即可。

您的下一步是将注册ID发送到将处理您的设备注册的服务器。这将是您的服务器或第三方服务器,如AirBopUrban Airship

您应该查看GCM Demo Application教程和GCM架构概述以及GCM sample

来自Google文档:

  

这是在移动设备上运行的Android应用程序注册接收消息时发生的事件序列:

     

(1)Android应用程序第一次需要使用消息传递服务时,它会向GCM服务器发出注册Intent。

     

此注册Intent(com.google.android.c2dm.intent.REGISTER)包含发件人ID和Android应用程序ID。

     

注意:由于第一次运行应用程序时没有调用生命周期方法,因此应该在onCreate()上发送注册意图,但前提是该应用程序尚未注册。

     

(2)如果注册成功,GCM服务器会广播com.google.android.c2dm.intent.REGISTRATION意图,该意图为Android应用程序提供注册ID。

     

Android应用程序应该存储此ID以供以后使用(例如,如果已经注册,则检查onCreate())。请注意,Google可能会定期刷新注册ID,因此您应该设计Android应用程序,并了解可能会多次调用com.google.android.c2dm.intent.REGISTRATION意图。您的Android应用程序需要能够做出相应的响应。

     

(3)为了完成注册,Android应用程序将注册ID发送到应用服务器。应用程序服务器通常将注册ID存储在数据库中。

     

注册ID会持续到Android应用程序明确取消注册,或直到Google刷新Android应用程序的注册ID。

您正在上面列表中的第三步。您可以通过查看ServerUtilities

中的register()方法来了解gcm-demo-client如何执行第3步