收到通知后跳转指定页面

react-native
android
标签: #<Tag:0x00007fb82fc54b28> #<Tag:0x00007fb82fc549c0>

(量世) #1

用jpush-react-native在安卓平台里,当应用在前台运行时,js模块里可以正常处理通知相关事件。

但是当应用运行在后台或者关闭时来了个通知或者点击了通知,js模块里的事件处理函数此时就不会被调用了,只能通过原生模块来跳转指定页面。

但是我看了文档并不详细只是告诉我在哪里改,因为我的页面是js写的,难道我的页面也要用原生代码写才能指定跳转页面吗?请问有没有更好的方法


#2

点击跳转:

你所说的[quote=“mieri, post:1, topic:11960”]
在后台或者关闭时来了个通知或者点击了通知,js模块里的事件处理函数此时就不会被调用了
[/quote]

如果你把手机系统对app的一些限制权限都打开后再测试呢
https://docs.jiguang.cn/jpush/client/Android/android_faq/#_2


(量世) #3

不好意思,刚才的情况是集成react-native-jpush这个插件的项目的表现,集成jpush-react-native的项目的表现是在关闭应用后点击通知无法拉起应用,您给的链接这里的权限我都有开启
我修改了原生模块里点击通知的处理代码,如下:

Intent intent = new Intent();
                if (mModule != null && mModule.mContext != null) {
                 //   intent.setClass(context, mModule.mContext.getClass());
                 //   Logger.d(TAG, "context.getClass: " + mModule.mContext.getClass());
                 //   intent.putExtras(bundle);
                //    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                //    context.startActivity(intent);
                } else {
                    String packageName = context.getApplicationContext().getPackageName();
                    Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(packageName);
                    launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                    launchIntent.putExtras(bundle);
                    context.startActivity(launchIntent);
                }

我的理解是第一个if是应用在运行的时候,else就是应用关闭后的处理,所以我注释了if里的处理代码,不过关闭后还是没有拉起应用


(KenChoi) #4

并不是这样,if 里的代码还是不要去掉,因为你应用在后台会走到 if 里去。


#5

这里的问题,应该是在于部分手机系统对app启动的限制,因为你首先是关闭了应用,然后在某种情况下,长连接还连着,所以消息能收到,但是点击消息去启动app时被你的系统限制了,所以我才要你打开各种权限,你可以看看不自定义跳转,仅点击消息,打开应用,这样可否成功。

参考: android客户端进程结束掉,然后点击通知栏极光推送的通知,极光有没有监听去启动这个客户端


APP滑动移除退出后接收不到离线消息
(量世) #6

关闭APP后是收不到通知的,之所以能在APP关闭有通知,是因为我特意在打开APP的时候接到通知不点击,然后关闭APP,再去点击的


(量世) #7

嗯,好的,后来我测试到了这种情况,于是又添加上了


(KenChoi) #8

你可以在关闭应用的时候,调用 clearAllNotifications 接口,把所有的通知清除掉。


#9

参照我给你的那个链接


(量世) #10

可是这种办法好像只适合原生开发者,因为跳转的后的界面也需要在原生界面指定,所以界面无法使用react native来写,这对我来说代价太大,主要是我这里没有安卓开发者,希望有其它办法解决


react native 的Android中,怎样设置能够让程序在未运行时能够收到通知
(KenChoi) #11

可以用 react native 来写,你只需要在 Android 中再创建一个点击通知后指定的 Activity,但是界面用 JS 来写。


(量世) #12

能否再明白点或者给个例子,谢谢了


(KenChoi) #13

参考一下这篇文章: https://segmentfault.com/a/1190000006082315


(KenChoi) #14

我帮你总结一下,主要是三点:
1、创建 Activity,并且继承 ReactActivity
2、在 Activity 中重写方法:


3、注册 Component,用来渲染上面的 Activity


常见问题 - JPush 合集(持续更新)
(量世) #15

非常感谢,我先去学习下


(Roy) #16

@mieri 请问你的指定页面跳转搞定了吗 我也遇到这个 一直解决不了 麻烦加下我QQ 770580039 万分谢谢