专栏首页大话swiftiOS 禁止使用H5加载核心功能的解决办法

iOS 禁止使用H5加载核心功能的解决办法

iOS 审核规则的每次变动对于iOSer来说都是一次大的震荡,今天我们针对禁用H5加载核心功能给出一种解决办法。 众所周知iOS时可用通过URL Schemes来实现App跳转传值的,不过这种方式正在被逐渐废弃(当然了支付宝依然在用,但是微信支付已经启用了Universial Link)改投更加好用的Universial Link啦。

今天我们就通过使用Universial Link的方式来实现从Safari跳转回App与数据传递

我们先来回顾一下app跳转至safari

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://localhost:8080/users/index"]
 
                                       options:nil
 
                             completionHandler:^(BOOL success) {
 
 NSLog(@"跳转结果:%d",success);
 
 }];
 

有了App跳转Safari我们来看看今天主角—Universial Link(具体介绍可以自行百度或者参考官网说明) 1 App配置

  1. App的Info.plist中配置URL Schemes用于顾虑返回的url
  1. Signing&Capabilities配置Associated Domains 独自与此处Associated Domains是需要在开发者中心的证书中配置此处不再赘述

2 Safari如何在web内跳转App

此处我们本地搭建服务做测试

r.GET("/users/index", func(c *gin.Context) {
     c.HTML(http.StatusOK, "users/index.tmpl", gin.H{
 "title": "Users",
 })
 })
 r.Run()

下面是对应的html,我们通过点击a标签实现跳转并关闭当前页面

{{ define "users/index.tmpl" }}
 
<html><h1>
 
 {{ .title }}
 
</h1>
 
<a href="https://fisxxh.xx.com/fish_url/pay/?returnKey=&ret=-2" onClick="custom_close()">通过 Universial Link跳转返回</a>
 
<br>
 
<br>
 
<br>
 
<br>
 


 
<p>Using users/index.tmpl</p>
 


 
<script language="javascript">
 
function custom_close(){
 
    setInterval(function(){
 
            window.close();
 
 }, 500);
 
}
 
 }
 
</script>
 
</html>
 
{{ end }}
 

3 App内部拦截Universial Link响应

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
 
 if( [userActivity.webpageURL.absoluteString containsString:WXAPPID]){
 
 //从微信跳转进来的
 
 //微信传递的数据  _webpageURL
 
 return [WXApi handleOpenUniversalLink:userActivity
 
 delegate:[YuWeChatShareManager manager]];
 
 }else{
 
 [self.window.rootViewController makeToask:[NSString stringWithFormat:@"通过universial link传递回来的参数:%@",userActivity.webpageURL.query]];
 
 }
 
 return NO;
 


 
}
 

这里需要有一点我们可以在这个返回的连接中添加我们的URL Schemes来标注来区分是哪个对应的group跳转的,例如:微信的跳转或者我们的App自定跳转从而从大类上进行不同的跳转

至此基本上我们就能应对上iOS针对H5规则变更的审核啦,下面我们梳理一下答题思路

1 App开启Universial Link功能 2 定义自身的跳转的URL Schemes 3 App跳转Safari来实现之前内嵌Web的功能,然后按照link的方式来操作,系统会自动识别来跳转回App 4 App内部拦截Universial Link对应的响应做出逻辑判断

本文分享自微信公众号 - 大话swift(gh_ca2266b7cab0),作者:YuLongLi

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 惊鸿一瞥之Kotlin

    看了Google开发者大会之后你啥感觉?一个是flutter真的可以入手啦,另一个就是Kotlin需要看看啦。为啥要看Kotlin呢?因为Google已经帮你想...

    大话swift
  • SpringMVC 中的Annotated Controllers

    上面透漏一下信息:是一个GET响应 查找web下的index模版,通过model将数据传递给模版引擎渲染

    大话swift
  • 再写二叉树遍历 olr lor lro leveltraverse depthtraverse

    大话swift
  • 简单说 CSS的vertical-align

    vertical-align属性,是CSS属性中一个比较重要的属性,也是比较不好理解的一个。 我们今天就来说说它。

    FEWY
  • C++之运算符重载(三)

    https://blog.csdn.net/zy010101/article/details/105245007

    zy010101
  • 努力的意义

    自项目完成后,整个人感觉很空,顿时失去了目标,失去了方向感,不知自己该往哪走,该看什么,学什么了。

    honey缘木鱼
  • Lucene:QueryParser中操作符的疑惑

    晚上在测试Lucene搜索时,对于 AND 与 + 的区别研究了下 索引库中有四条记录,分别是 no:300900002071 name:情侣装*休闲女装 ...

    菩提树下的杨过
  • Pug入门

    Pug是一款健壮、灵活、功能丰富的HTML模板引擎,专门为 Node.js 平台开发。Pug是由Jade 改名而来。

    听着music睡
  • 复选框实现子节点父节点联动

    麦克劳林
  • Flutter基础widgets教程-Icon篇

    青年码农

扫码关注云+社区

领取腾讯云代金券