【发布时间】:2014-08-24 21:52:40
【问题描述】:
我正在尝试将 GCM 设置为在向我的应用发送消息时发布状态栏通知。当按下通知时,它应该启动应用程序以实际检索消息。我遇到的问题是试图决定如何拦截和处理传入的 GCM 消息。收到 GCM 消息时应用程序可能未运行,因此我认为我需要 GCMIntentService 来接收 GCM 消息并将通知发布到状态栏。这听起来对吗?按下状态栏通知时启动应用程序是通过设置通知的方式完成的吗?是这样,还是需要自定义广播接收器来接收状态栏通知点击?在进入实现细节之前,我需要对整体设计问题的回答。我已经通过 GCM 注册了 AndroidManifest.xml 设置和 MainActivity.java 设置,但我仍然需要知道如何设计传入消息处理。关键点是应用程序可能没有运行,但消息仍必须转到状态栏,然后单击通知启动应用程序。另外,当广播接收者被杀死时,应用程序不应该被杀死,所以广播接收者必须是分开的。
在这个冗长的问题之后,我希望你仍然和我在一起,并就如何设置它提供一些建议。如果有帮助,我可以发布到目前为止我所拥有的代码。谢谢。
更新: 似乎我可能想使用 GCMIntentService 在 onMessage() 函数中发布通知。评论?
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:protectionLevel="signature"
android:name="com.pictureplay.permission.C2D_MESSAGE" />
<uses-permission android:name="com.pictureplay.permission.C2D_MESSAGE" />
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.pictureplay.gcm" />
</intent-filter>
</receiver>
【问题讨论】:
-
您阅读过 GCM 文档吗?您需要的一切都在那里。
-
我已经阅读了十几遍,但仍然缺少部分内容。文档是零散的,并不总是适合我的使用。
标签: android notifications google-cloud-messaging