zoukankan      html  css  js  c++  java
  • iOS云打包如何设置通用链接等Capabilities配置

      打包app的时候发现需要填写Universal Link

    一、为什么需要Universal Link

      因为前段时间苹果iOS 13系统版本安全升级,微信SDK1.8.6版本要求支持Universal Links方式跳转,以便进行合法性校验,提升安全性。更多详情请参考微信官方说明

      在用hbuild打包app的时候(如果涉及到微信支付和分享)就需要输入 Universal Links,不然在打包的时候就会出现以下错误

    [HBuilder] 16:33:43.907 Manifest.json文件以下节点配置错误,请检查修复
    [HBuilder] 16:33:43.907 app-plus.distribute.sdkConfigs.payment.weixin.UniversalLinks 不能为空

      如果随意填写一个或是填写错误的Universal Links,微信分享的时候会提示Universal Links不符合要求。

    1、开启Universal Links 的配置步骤

      (排序不分先后)

    • 需要后台配一个https的链接,链接地址最好直接指向项目
    • 申请ios证书的时候,勾选上Associated Domains服务
    • 在制作一个名为apple-app-site-association 的json文件(切记不可有后缀名)
    • 将apple-app-site-association 文件让后台放在域名的根目录下或是.well-known文件下面
    • 然后在hbuild里面的manifest.json中配置参数(具体参数下面有说)
    • 在微信开发平台上填写通用链接,以https开头/结尾
    • 在打包的时候manifest.json里面配置通用链接,和微信开发平台填写一致

    二、如何配置通用链接

      HBuilderX2.3.0开始云端打包支持配置XCode中的Capabilities。

      如下XCode配置:

      打开项目的manifest.json文件,在源码视图中进行配置

    • 5 APP项目
      在"plus" -> "distribute" -> "apple"添加"capabilities"节点
    • uni-app项目
      在"app-plus" -> "distribute" -> "ios"添加"capabilities"节点
    "capabilities": {  
      "entitlements": {   // 合并到工程entitlements文件的数据(json格式)  
      },  
      "plists": {         // 合并到工程Info.plist文件的数据(json格式)  
      }  
    },

      其中entitlements数据(json)将转换成XCode工程中entitlements文件的数据(字典格式)

      plists节点数据将转换成XCode工程中Info.plist文件的数据(字典格式)

      通用链接(Universal Link):Universal Link是苹果在WWDC 2015上提出的iOS 9的新特性之一。此特性类似于深层链接,并能够方便地通过打开一个Https链接来直接启动您的客户端应用(手机有安装App)。对比起以往所使用的URL Sheme, 这种新特性在实现web-app的无缝链接时能够提供极佳的用户体验。

      使用前请阅读苹果官方文档

      使用通用链接(Universal Link)必须要有域名,下的配置中将要用到

    第一步:开启Associated Domains服务

    1、登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID,确保开启Associated Domains服务

    2、开启Associated Domains服务后需要重新生成profile文件,提交云端打包时使用

    第二步:配置Associated Domains(域名)

    1、原生XCode环境配置通用链接域名(本地离线打包配置,使用HBuilderX云端打包跳过)

    2、可以不使用Xcode,而使用HBuilderX云端打包时在manifest.json中配置域名

      在"plus" -> "distribute" -> "apple" -> "capabilities" -> "entitlements"节点(uni-app项目在"app-plus" -> "distribute" -> "ios" -> "capabilities" -> "entitlements")下添加"com.apple.developer.associated-domains"字段,字段值为字符串数组,每个字符串为要关联的域名

    "capabilities": {  
      "entitlements": {  
        "com.apple.developer.associated-domains": [  
          "applinks:demo.dcloud.net.cn"  
        ]  
      }  
    }

      其中demo.dcloud.net.cn是应用通用链接的域名(这里不要包含path),请修改为自己应用要使用的域名,保存后提交云端打包生效。

      HBuilderX中自带的默认真机运行基座HBuilderX注册的通用链接为:https://demo.dcloud.net.cn/ulink/

    第三步:服务器配置apple-app-site-association文件

      需要在上面域名对应的服务器上放apple-app-site-association文件。

      apple-app-site-association文件配置如下:

    {  
        "applinks": {  
            "apps": [],  
            "details": [  
                {  
                    "appID": "G56NU654TV.io.dcloud.HBuilder",  
                    "paths": [ "/ulink/*"]  
                }  
            ]  
        }  
    }
    • apps:必须对应一个空的数组
    • appID:由前缀和ID两部分组成,可以登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID查看
    • paths:对应域名中的path,用于过滤可以跳转到App的链接,支持通配符*,?以及NOT进行匹配,匹配的优先级是从左至右依次降低

      注意:不要直接拷贝使用上面的示例,必须根据自己应用的配置修改

      把配置好的apple-app-site-association文件上传到你自己的服务器,确保通过https://demo.dcloud.net.cn/.well-known/apple-app-site-association可访问。

      其中demo.dcloud.net.cn为上面配置的域名,应用安装后会通过访问上面的url向系统注册应用的通用链接。

    二、推荐方案:将apple-app-site-association文件部署到,免费的阿里云版unicloud的 前端网页托管

    1、客户端处理通用链接

      可通过5+ API的plus.runtime.launcher判断应用启动来源,如果其值为"uniLink"则表示通过通用链接启动应。

      这时可通过5+ API的plus.runtime.arguments获取启动参数,通用链接启动的情况将返回完整的通用链接地址。

    2、注意事项

    • apple-app-site-association文件不需要.json后缀
    • 对apple-app-site-association文件的请求仅在App第一次启动时进行,如果此时网络连接出了问题apple会缓存请求,等有网的时候再去请求,如果没有请求此文件通用连接会失效
    • apple-app-site-association文件最好在域名根目录和.well-known都放一个
    • iOS 9.2开始,在相同的domain内Universal Links不生效,必须要跨域才生效
    • app的访问地址最好适合通用链接地址一样(在此我卡了很久),因为ios在启动项目的时候是默认访问通用链接下的内容

    3、微信配置通用链接参考:https://ask.dcloud.net.cn/article/36445

  • 相关阅读:
    Eclipse快捷键大全
    Quartz任务调度快速入门
    Spring整合logback日志
    Java实现二维码的生成与解析
    跨域问题及解决方案
    SpringBoot项目直接在linux下运行
    SpringBoot拦截器中使用RedisTemplate
    Codeforces Round #345 (Div. 1) C. Table Compression dp+并查集
    HDU 4489 The King’s Ups and Downs dp
    HDU 4747 Mex 递推/线段树
  • 原文地址:https://www.cnblogs.com/goloving/p/14324787.html
Copyright © 2011-2022 走看看