我很难理解关于如何 <intent-filter>
的基本概念处理 BroadCastReceiver 。使用下面的代码,我设置了一个 WakeFullBroadCastReciever 来处理任何下游消息。我的代码运行良好,我能够从 GCM 接收消息,但从概念上讲,<receiver>
是怎样的?能够识别要打开的应用程序。在流程图的任何地方,Google 都没有使用我的 packageName 来匹配 <category android:name>
.我在概念上哪里出错了,gcm 如何为设备上具有 gcm 服务的两个应用程序处理这个问题。
<receiver
android:name=".GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.gcmexample" />
</intent-filter>
</receiver>
最佳答案
这是一个闭源实现,所以我不能确定,但我假设您在服务器端使用的注册 token 包含 Google 系统建立连接所需的信息。换句话说,是云中的 GCM 服务或手机上的 Play 服务客户端将注册 token 及其关联的发件人 ID 与应用程序的包名称相关联。
关于android - GCM 如何处理带有 BroadCastReceiver 的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31901242/