iOS开发 - 网页拉起app后并执行某些操作

简介: iOS开发 - 网页拉起app后并执行某些操作

今天我们的应用里加入了网页拉起app的功能,具体的用处是,在wap中的详情界面查看视频,如果需要到手机 app中观看的话就点击一个按钮打开app,并将界面定在该视频的详情页里。


下面我来说下怎么用WAP拉起app,首先我们需要做的就是定一个协议,在app中的URL Schemes中添加一个标记:

image.png

如上图所示,identifier随便填,当然,最好填标志性的东西,比如bundleid之类的,URL Schemes就是一个关键的标志了,需要用到它来拉起app,现在就按“xxxxx”为例,设置好这些应用内的设置就完毕了,接着就需要wap来操作了,不过我们本地也是可以来测试的,在模拟器运行完成后,打开Safari浏览器,在搜索框中键入“xxxxx://”之后回车就可以拉起应用,那么拉起后怎么来进行传值呢?比如说我跳转到视频详情页,肯定要传视频的ID,这么来传“xxxxx://要传的信息”,把要传的信息放在后面就可以了,传好之后就是接收了,在Appdelegate中写一个方法:

- (BOOL)application:(UIApplication *)application
      handleOpenURL:(NSURL *)url
{   
    return YES;
}
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    return YES;
}

在以上两个方法中来获取到拉起app后传入的url,但是博主在使用的时候,发现

- (BOOL)application:(UIApplication *)application
      handleOpenURL:(NSURL *)url

这个方法收不到传入的参数,经测试,

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation

可以收到消息,这里先说使用,具体为什么上面那个方法收不到传递的信息大家私下可以查一下,那么在这里来对参数进行处理:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    NSString *urlStr=[url absoluteString];
    return YES;

拿到了传入的参数,你以为这样就完了么?不,并没有,这里在使用中会发生问题,我们拿到了之后,就比如说博主,怎么来跳转到详情页呢?视频的ID博主拿到了,怎么来用呢?博主这里是这么写的,先把url存入本地,然后在进入首页刷新出界面后查找url是否为空,当不为空时把视频ID传入跳转的详情页,获取到拉起app前视频的信息并播放,你以为这就完了么?依然没有,这是在app没有打开的情况下主页会刷新,然而当app在后外的时候,拉起app主页已经存在,下载数据没有进行,所以不会触发跳转详情这一步(为了杜绝像博主这样把是否传入信息这个判断依据写在下载首页信息结束后刷新界面的地方,所以说明下),这时博主不得不该用通知的方式来执行,你以为这就是结束么?并没有,加入通知后,会发现,在app完全退出的情况,通知的时候首页还没出现,通知未注册,所以还是不能触发这个操作,也许你已经发现了,既执行通知又在首页下载结束后那里进行判断来执行操作,这样,当app不在后台时就在首页数据加载完毕后根据传入url是否存在来执行操作,当app在后台时就通过通知来执行,完美:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    NSString *urlStr=[url absoluteString];
    [[NSUserDefaults standardUserDefaults]setValue:urlStr forKey:@"webToApp"];
    [[NSUserDefaults standardUserDefaults]synchronize];
    [[NSNotificationCenter defaultCenter]postNotificationName:@"webToApp" object:nil];
    return YES;

一定要记得在首页数据加载完毕后判断来执行操作哦,整个步骤就是这样。


最近使用过一次,发生了异常,原因是捕获外部URL的方法变成了下面这个:

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options

注意下替换哦。

目录
相关文章
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
469 7
|
30天前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
527 1
|
17天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
1月前
|
JavaScript 前端开发 UED
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
71 9
|
1月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
184 1
|
14天前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
|
1月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
534 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
23天前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。
|
30天前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
316 0
|
1月前
|
小程序
uni-app开发微信小程序使用onPullDownRefresh(下拉刷新)总结
uni-app开发微信小程序使用onPullDownRefresh(下拉刷新)总结
470 0