当我使用GCM收到推送通知时,有一个要求我需要显示带有是和否按钮的警告框。
将会有两个scnerios:
如果app在后台,则User会在titile栏中获取通知。点击通知后,用户将被定向到应用程序并且此处需要显示警告框,其中用户将有两个选项,即是或否
如果应用程序位于前台,则需要显示用户自动获取警告框,其中用户将有两个选项,即是或否**
请帮助我实现这一目标。
答案 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
希望这有帮助。