<强>问题的提出强>
本次接入的是个推,其他家的推送没有研究过,思路应该是类似的
应用在前台,这个时候需要弹出一个对话框,提醒用户有新的消息,是否要查看,查看的话跳转到指定页面
应用在后台,或是应用进程已经被系统回收,收到推送进后应用程会被个推拉起。这时候要展示通知,点击通知栏打开应用程序并跳转到目标页面,关闭目标页面后需要返回到应用首页,而不是直接推出应用
<>强实现思路强>
应用在前台时,弹出对话框提醒用户有新消息,但是最新版的个推文档接收推送消息是继承IntentService,无法获取弹出对话框所需要的上下文(注意不能用getApplicationContext()),所以采样用对话框式的活动来实现
应用在后台时,如果直接在PendingIntent中传目标活动的意图,则在退出目标活动时会直接退出应用,感觉像是闪退了一样,如果是跳转到首页,然后在首页中检测是否是由点击通知进入应用的来进行跳转,这样的话首页就会闪屏。综上方法都不是很理想,一个比较好的解决方案是给PendingIntent传递一个意图数组,分别放置目标活动和首页,这样效果比较好
<强>应用在前台时,弹对话框出样式的活动强>
设置活动样式
& lt;样式名=" AlertDialogActivityTheme "父=癟heme.AppCompat.Dialog”比; & lt;项目名称=" windowActionBar "祝辞false & lt;项目名称=" android: windowFrame "祝辞@null & lt;项目名称=" windowNoTitle "祝辞true//去掉标题 & lt;项目名称=" android: windowBackground "祝辞@android:颜色/transparent//背景透明 & lt;项目名称=" android: windowCloseOnTouchOutside "祝辞true//设置触摸弹框外面是否会消失 & lt;项目名称=" android: windowIsFloating "祝辞true & lt;项目名称=" android: windowContentOverlay "祝辞@null & lt;项目名称=" android: windowIsTranslucent "祝辞true & lt;/style>
AndroidManifest。xml
& lt;活动 android: name=" .getui.AlertDialogActivity " android:主题=癅style/AlertDialogActivityTheme”比; & lt;/activity>
此处需要注意的是这里的活动继承的是AppCompatActivity,如果是继承活动,则一些属性设置需要微调,比如去掉标题要改为
& lt;项目名称=" android: windowNoTitle "祝辞true >之前以上设置以后还需要设置弹框的大小
公开课AlertDialogActivity延伸AppCompatActivity { @Override 保护空白>//关键的地方 PendingIntent contentIntent=PendingIntent。getActivities(上下文、0的意图,PendingIntent.FLAG_UPDATE_CURRENT); NotificationManager mNotificationManager=(NotificationManager) context.getSystemService (Context.NOTIFICATION_SERVICE); NotificationCompat。Builder构建器=new NotificationCompat.Builder(上下文)//省略其他的一些设置 .setContentIntent (contentIntent)//省略其他的一些设置 通知通知=builder.build (); 通知。旗帜=Notification.FLAG_AUTO_CANCEL; mNotificationManager.notify ((int) System.currentTimeMillis()/1000,通知); >之前上面关键的改动就在PendingIntent,里面的意图参数存放首页活动和目标活动,比如
意图[]意图=新意图[2]; 意图intent_main=new意图(getApplicationContext (), MainActivity.class); 意图intent_target=new意图(getApplicationContext (), TargetActivity.class); 意图[0]=intent_main; 意图[1]=intent_target; >之前通过以上的设置后,点击通知栏就会打开TargetActivity,从TargetActivity返回后会打开MainActivity,而不会直接退出
需要注意的是,MainActivity需要设置启动模式为singleInstance
AndroidManifest。xml
& lt;活动 android: name=" .ui.main.MainActivity " android: launchMode=" singleInstance "/祝辞以上就是接收推送消息后的跳转的一些内容,希望对大家的学习有所帮助,也希望大家多多支持。
Android接收推送消息跳转到指定页面的方法