无星的RN学习之旅(六)-第三方App跳转,苹果商店跳转,loading框

96
无星灬
2017.09.22 09:33* 字数 934

1.第三方App跳转

这是很常见的问题,第三方app跳转到本app去做一些业务操作。
但是这时候会发现,你跳进来,是黑色的,没有界面,没想到吧23333
其实这在前面说过,RN的想法很独特,是一个ctrl上放了无数个view,不停的更改view来渲染,而rn的首页view,则是在appdelegate的初始化方法里去添加的。跳转进来的处理方法里如果你不写,就不会有view添加进来。
所以这时候有两种方法来完成这个view的添加操作:

A.在第三方跳转进来的方法里做视图加载操作,但是这会遇到一个问题。假使你使用了RN的启动页,你会发现每次跳转进来都会开启启动页。这对用户的体验明显是很不好的。

B.自己创建一个UIViewCtrl,并作为根视图放进window中,在这个UIViewCtrl中做视图加载操作。这样跳转进来加载根视图的时候就会把这个RN的View给加载上去。而且根据生命周期场景复现的原则,不会再有加载第二次第三次的情况。

如图

Appdelegate.m
RootViewCtrl.m

另外,如果要跳到某一页面做某一操作,又不想重复跳,可以采用以下方式移除

第三方跳转
#pragma mark --第三方跳转进入这里(新)
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
//  NSLog(@"url ====%@",url);
  thirdViewController *vc = [thirdViewController sharedthirdViewController];
  vc.url = url;
  
  UIViewController *topViewCtrl = self.nav.topViewController;
  if ([topViewCtrl isKindOfClass:[thirdViewController class]]) {  //判断是否在最顶层
    [vc thirdSign];
  }else{
    [self.nav pushViewController:vc animated:YES];
    [vc thirdSign];
  }
  return YES;
}

2.应用升级苹果商店跳转

这个就很简单了啊,直接link:app在苹果商店的地址就行,至于怎么找app在苹果商店的地址,谷歌一下或百度一下都有。

3.启动屏设置

采用了RN的启动页,你需要把原生的启动页稍作更改。把这个勾去掉

把这里改一下

3.按钮点击封装防止二次点击

是不是有时候控件响应较慢,点击两次还以为没反应,结果却运行两次操作,感觉比较烦人。
这里贴出一个大佬给的方式,其实是采用定时器操作,只要有点击操作,做出事件处理,并开启定时器,在定时器时间内屏蔽其他的点击操作。

珠海-星落  10:59:19
你把 TouchOpacity外层做个封装
珠海-星落  10:59:42
然后以后不用TouchOpacity, 用你那个TouchOpacityOnce

那如果要往TouchOpacity放组件的话,就用参数传进去吗?
珠海-星落  11:01:36
TouchOpacity怎么用 TouchOpacityOnce就怎么用
珠海-星落  11:02:12
把乱七八糟的props全传递给内部的TouchOpacity
代码如图

4.Loading框的展示

以前曾经使用RN提供的Modal类自己封装过一个网络加载等待框,但是放到网络请求中并不好用。会发现两个问题:

a.时常唤起失败或者消失失败。
b.导致应用卡死或锁屏无法操作。

可能是我modal的使用方式不对吧。
后来采用了一个新的方式:
使用原生的菊花,iOS用iOS的,安卓用安卓的。而且体验非常好,基本不会唤起失败,而且不用每个需要使用的地方都写控件,直接调用与原生交互module的show方法即可。
值得注意的是:
iOS建议采用GCD的主线程去完成这个菊花的show和dismiss操作,原因是UI刷新应当在主线程去做,唤起成功性也较大。

附带一个Toast展示

最后:感冒了,有没有好心人捐助一包板蓝根啊,要死了 (ಥಥ) (ಥಥ) (ಥಥ) (ಥಥ) (ಥಥ) (ಥಥ) (ಥಥ) (ಥಥ) (ಥ_ಥ)

无星的RN学习之旅(一)-环境安装以及新建项目
无星的RN学习之旅(二)-RN与原生的通信
无星的RN学习之旅(三)-bridge is not set.
无星的RN学习之旅(四)——通信、持久化存储、xcode打包
无星的RN学习之旅(五)-关于react-navigation多层级页面返回时,去掉逐层推出动画

RN