Flutter只是 谷歌的移动 UI 框架,在Android开发中,你可以理解为 嵌套在activity里面的一个view即可。
成都创新互联专注于企业营销型网站、网站重做改版、宝坻网站定制设计、自适应品牌网站建设、H5页面制作、商城网站开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为宝坻等各大城市提供网站开发制作服务。
目前有纯flutter开发,还有 flutter,原生混合开发 两种模式。。
本文讲解是的是,flutter 如何添加推送能力,极光推送也有一个插件,但是好像无法实现点击推送,让APP 冷启动并并进入对应的业务子页面。
最好的办法就是自己去实现一下,一方面增加交互的理解,还可以加深记忆,总之能自己造轮子的自己造一个。
在这里,我们公司采用的友盟推送,其实逻辑都差不多的,下面我们进入正题。
到这里基本上就算搞定了,但是点击推送的冷启动咋办,接下来
现象:
flutter页面通过present跳转原生页面后,原生页面上的点击会首先响应下面的flutter页面中的内容(比如按钮什么的)。
这是flutter框架一直存在的一个bug。在github上有相关的issue。
原因推测:
推测是flutter对控制器(或者view)加了分类,重写了控制器的点击事件,用来计算是否在对应的点击位置有flutter响应事件。没有的话再扔出去点击事件。
解决方案1:
在原生控制器中,加入点击事件的几个方法的空实现,用以覆盖flutter框架中的实现:
-(void)touchesBegan:(NSSetUITouch * *)touches withEvent:(UIEvent *)event{
}
-(void)touchesMoved:(NSSetUITouch * *)touches withEvent:(UIEvent *)event{
}
-(void)touchesCancelled:(NSSetUITouch * *)touches withEvent:(UIEvent *)event{
}
-(void)touchesEnded:(NSSetUITouch * *)touches withEvent:(UIEvent *)event{
}
让事件不被flutter截获即可。
解决方案2:
直接切换window的根控制器到原生控制器即可。别忘暂时保存flutter控制器。
在返回时再切换回flutter中。
解决方案3:
在flutter跳转到原生页面之前,在flutter中加上一个蒙层,用来隔绝手势往flutter下面的view传递。原生页面返回flutter时再移除这个蒙层。