Android接收推送消息跳转到指定页面的方法

  

<强>问题的提出

  

本次接入的是个推,其他家的推送没有研究过,思路应该是类似的
  

  

应用在前台,这个时候需要弹出一个对话框,提醒用户有新的消息,是否要查看,查看的话跳转到指定页面
  

  

应用在后台,或是应用进程已经被系统回收,收到推送进后应用程会被个推拉起。这时候要展示通知,点击通知栏打开应用程序并跳转到目标页面,关闭目标页面后需要返回到应用首页,而不是直接推出应用
  

  

<>强实现思路

  

应用在前台时,弹出对话框提醒用户有新消息,但是最新版的个推文档接收推送消息是继承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接收推送消息跳转到指定页面的方法