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

本文探讨了React Native应用中第三方App跳转的问题及解决方案,包括视图加载、应用升级苹果商店跳转、启动屏设置、防止按钮二次点击、Loading框展示等,提供了实用的代码示例和优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.第三方App跳转

这是很常见的问题,第三方app跳转到本app去做一些业务操作。

但是这时候会发现,你跳进来,是黑色的,没有界面,没想到吧23333

其实这在前面说过,RN的想法很独特,是一个ctrl上放了无数个view,不停的更改view来渲染,而rn的首页view,则是在appdelegate的初始化方法里去添加的。跳转进来的处理方法里如果你不写,就不会有view添加进来。

所以这时候有两种方法来完成这个view的添加操作:

A.在第三方跳转进来的方法里做视图加载操作,但是这会遇到一个问题。假使你使用了RN的启动页,你会发现每次跳转进来都会开启启动页。这对用户的体验明显是很不好的。
B.自己创建一个UIViewCtrl,并作为根视图放进window中,在这个UIViewCtrl中做视图加载操作。这样跳转进来加载根视图的时候就会把这个RN的View给加载上去。而且根据生命周期场景复现的原则,不会再有加载第二次第三次的情况。

如图

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

#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
复制代码

2018-10-12更新

正确做法是:去抖、节流

4.Loading框的展示

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

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

可能是我modal的使用方式不对吧。

后来采用了一个新的方式:

使用原生的菊花,iOS用iOS的,安卓用安卓的。而且体验非常好,基本不会唤起失败,而且不用每个需要使用的地方都写控件,直接调用与原生交互module的show方法即可。 值得注意的是:

iOS建议采用GCD的主线程去完成这个菊花的show和dismiss操作,原因是UI刷新应当在主线程去做,唤起成功性也较大。

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

无星的RN学习之旅(一)-环境安装以及新建项目

无星的RN学习之旅(二)-RN与原生的通信

无星的RN学习之旅(三)-bridge is not set.

无星的RN学习之旅(四)——通信、持久化存储、xcode打包

无星的RN学习之旅(五)-关于react-navigation多层级页面返回时,去掉逐层推出动画

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值