我找了各种博客没有找到解决办法,自己找到了办法,来记录下,来帮助没有解决这个问题的朋友,这个涉及到极光推送的下发策略,极光推送当你集成了厂商推送了,就全部优先用产商推送了,导致大部分手机都收不到flutter的回调方法,但是能收到推送,点击通知也不会做任何处理。所以我们修改极光推送的策略,让app在线的时候时候用极光推送,不在线了用厂商推送,这个需要后台改下。具体要求看下面的图
这个是极光官网推送设置,然后看后台怎么设置
图片截图不是很全,但还是能看出来具体的查看极光的文档链接http://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#options
到这里我们就完成了极光推送集成了厂商推送导致flutter的回调收不到问题,但是我们的厂商推送的集成还是没有用,下面我接着说。
集成集成厂商推送,集成的步骤很多人都说过了我就不写了,我们直说收到推送如何点击进入app,官方回他一样要我们看原生的,所以我们还是看文档,我就拿华为的来说,魅族我没有集成不知道,但小米和vivo一样的,oppo有点不同。我们在看图
从这两张图就可以看到又需要服务器在推送时候传入uri_activity:包名.要跳转的activity,所以我们只要配置好这个activity就行了,我们看下官方给的样例
点击后直接跳转到你指定的页面,然后在可以得到服务传过来的值,来进行具体操作,当然如果app杀掉情况下我们只需要打开app,不需要操作的话,是不是可以直接给服务器传我们的启动页MainActivity
这个我没有测试过,给大家去试了,没有问题可以告诉我下,可以看到,我就在系统生成的地方加了
android:exported="true"
两部分代码,如果不行的话,大家就新建一个activity,点击跳转到这个activity,然后activity跳转到flutter页面就可以,到这基本就完成。
activity跳转到flutter网上也很多,我就随便写两个列子,因为我这边也有问题,不是很好,大家有更好的可以和我说下application设置引擎
class MyApplication : Application() {
lateinit var flutterEngine: FlutterEngine
override fun onCreate() {
super.onCreate()
flutterEngine = FlutterEngine(this)
flutterEngine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
)
FlutterEngineCache
.getInstance()
.put("engine_id", flutterEngine)
}
override fun onTerminate() {
//销毁flutter引擎
flutterEngine.destroy()
super.onTerminate()
}
}
然后点击跳转的activity启动flutter页面
try {
startActivity(
FlutterActivity
.withCachedEngine("engine_id")
.build(this)
)
finish()
}catch (e:Exception){
var intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
因为我manifest里面没有注册FlutterActivity,所以跳转的时候有时候报错FlutterActivity没有在manifest里面注册,有时候没有,但是注册了,给我加一个默认的topbar,所以我就用的这种办法,不是很好,大家有更好的办法可以告诉我一下。到这就结束了



