推送到达时显示警报
Posted
技术标签:
【中文标题】推送到达时显示警报【英文标题】:Display Alert when push arrives 【发布时间】:2012-10-09 15:34:35 【问题描述】:当推送通知从 C2DM 或 GCM 到达时,如何显示警报。现在我在状态栏上显示通知。那么我怎样才能获得通知作为警报。
【问题讨论】:
您认为“警报”是什么?请记住,用户喜欢Notifications
是为了让他们知道后台的事情,除非事件真的很重要。
【参考方案1】:
在用户正在做的事情中间弹出一个对话框是一种对用户充满敌意的做法。如果他们在玩愤怒的小鸟,而你刚刚毁了他们的投篮怎么办?只有平台可以并且应该摆脱这种情况。
按照 Google 的意图使用通知区域,除非您的应用当前拥有控制权(您的 Activity 处于运行状态)。然后只需使用该活动的上下文来弹出AlertDialog()
。您可以通过覆盖 onResume()
和 onPause()
来检测 Activity 是否正在运行 - 两者之间发生的任何事情都是您的 Activity 时间。
可以像这样弹出一个 AlertDialog:
new AlertDialog.Builder(Ctxt) //Use an activity object here
.setMessage(R.string.MyMessageID) //Provide a message here... A string or a string ID will do
.setCancelable(true) //If you want them to be able to dismiss with a Back button
.setNegativeButton(R.string.IDS_NO, null) //No action on NO, right?
.setPositiveButton(R.string.IDS_YES, OnYesClickListener) //Plug your own listener...
.create()
.show();
对于简单的消息/是/否对话框,AlertDialog
就足够了。对于更复杂的 UI,从 Dialog
派生一个类并设计自己的布局。
【讨论】:
如何在 IntentService 中获取 'Ctxt' 活动对象?IntentService
派生自上下文。使用this
。
但是,使用意图服务作为上下文在这里不起作用。错误:android.view.WindowManager$BadTokenException:无法添加窗口——令牌 null 不适用于应用程序
如果有活动活动,请使用该活动。如果没有,请参阅我的答案。
还有一件事通过调用函数activity.runOnUiThread()在UI线程中运行代码【参考方案2】:
对于警报,您需要在
中编写代码generateNotification(上下文上下文,字符串消息)
在这个方法中。
谢谢
【讨论】:
你能解释更多吗,因为我是推送通知的新手。请扩大你的答案。 如果你有任何推送通知,那么 onMessage 方法上的 GCMBaseIntentService 会通知一条消息通过推送通知接收,然后调用 generateNotification 方法生成通知并显示它的 android 状态栏...我认为它对你有帮助。 我想通知用户当某个应用程序处于前台时推送已到达。我想使用带有 YES 或 NO 选项的警报对话框来执行此操作。以上是关于推送到达时显示警报的主要内容,如果未能解决你的问题,请参考以下文章
从 parse.com 控制台接收推送时显示警报对话框而不是通知