收到FCM通知时显示警告框

时间:2014-05-28 11:45:28

标签: android alert google-cloud-messaging android-alertdialog

当我使用GCM收到推送通知时,有一个要求我需要显示带有是和否按钮的警告框。

将会有两个scnerios:

  1. 如果app在后台,则User会在titile栏中获取通知。点击通知后,用户将被定向到应用程序并且此处需要显示警告框,其中用户将有两个选项,即是或否

  2. 如果应用程序位于前台,则需要显示用户自动获取警告框,其中用户将有两个选项,即是或否**

  3. 请帮助我实现这一目标。

2 个答案:

答案 0 :(得分:0)

使用本地事件总线实现,如LocalBroadcastManager,greenrobot的EventBus或Square的Otto。 GCM消息到达时引发事件。当UI事件位于前台时,让UI层注册该事件,并在其移动到后台时注销。如果您确定UI图层未响应该事件,请显示Notification

Here are three sample apps - 上述每个事件总线实现的一个 - 证明了这一点。我使用AlarmManager而不是GCM消息,但概念保持不变。

答案 1 :(得分:0)

首先,您需要检查您的应用程序是否在后台。您可以在应用程序中的每个活动上调用onPause()上面的代码:

/**
* Checks if the application is being sent in the background (i.e behind
* another application's Activity).
* 
* @param context the context
* @return <code>true</code> if another application will be above this one.
*/
public static boolean isApplicationSentToBackground(final Context context) {
 ActivityManager am = (ActivityManager)        context.getSystemService(Context.ACTIVITY_SERVICE);
 List<RunningTaskInfo> tasks = am.getRunningTasks(1);
 if (!tasks.isEmpty()) {
 ComponentName topActivity = tasks.get(0).topActivity;
  if (!topActivity.getPackageName().equals(context.getPackageName())) {
  return true;
 }
}

return false;

}

如果是,则向用户显示通知。

在清单文件中添加以下行:

<uses-permission android:name="android.permission.GET_TASKS" />

要生成通知,您可以查看我的回答here

希望这有帮助。