9***@qq.com
9***@qq.com
  • 发布:2021-08-06 10:50
  • 更新:2022-07-04 10:50
  • 阅读:6677

由于应用universal link校验不通过?记一个打包的iOS不能分享的坑

分类:uni-app

全部步骤根据文档来,文档地址:https://uniapp.dcloud.io/api/plugins/universal-links
但是打包出来的iOS应用分享时却出现了 由于应用universal link校验不通过

不管是uniCloud 测试的域名还是自定义域名,都无法分享,这个时候只能自己私有化部署服务器来托管apple-app-site-association文件创建通用链接

第一步:开启Associated Domains服务

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

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

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

使用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:domain.com"    
            ]    
        }    
    }

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

第三步:服务器配置apple-app-site-association文件
需要在上面域名对应的服务器上放apple-app-site-association文件。
apple-app-site-association文件配置如下:

{    
    "applinks": {    
        "apps": [],    
        "details": [    
            {    
                "appID": "*App ID Prefix*.*Bundle ID*",    
                "paths": [ "/ulink/*"]    
            }    
        ]    
    }    
}

apps: 必须对应一个空的数组

appID:由App ID Prefix和Bundle ID两部分组成,中间用"."连接,可以登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID查看

paths:对应域名中的path,用于过滤可以跳转到App的链接,支持通配符*,?以及NOT进行匹配,匹配的优先级是从左至右依次降低

注意:不要直接拷贝使用上面的示例,必须根据自己的App ID Prefix和Bundle ID修改

把配置好的apple-app-site-association文件上传到你自己的服务器,确保通过https://domain.com/.well-known/apple-app-site-association可访问。
其中domain.com为第二步配置的域名
应用安装后会通过访问上面的url向系统注册应用的通用链接。

第四步:在微信开放平台配置通用链接

打开微信开发平台,在“管理中心”页面的“移动应用”下找到已经申请的应用(没有申请应用请点击“创建移动应用”新建应用),点击“查看”打开应用详情页面。
在“开发信息”栏后点击修改,在“iOS应用”下的“Universal Links”项中配置应用的通用链接
Universal Links通用链接:https://domain.com/ulink/
其中domain.com为第二步配置的域名

第五步:在HBuilderX中配置通用链接提交云端打包

将上一步在微信开放平台配置的通用链接地址配置到应用manifest.json中,注意通用链接地址必须完全一致(本地离线打包忽略此操作)

打开项目的manifest.json文件,在“(App) SDK配置”项中的微信登录(微信分享、微信支付)下的“iOS平台通用链接(Universal Links)”中配置:

如果使用了微信分享和微信支付,也需要分别配置微信分享和微信支付下的“iOS平台通用链接(Universal Links)”,并且配置的值必须相同
Universal Links通用链接:https://domain.com/ulink/
其中domain.com为第二步配置的域名

保存后需提交云端打包生效。

至此,打包好的ipa安装包可以正常分享

参考文档:
https://ask.dcloud.net.cn/article/36393
https://ask.dcloud.net.cn/article/36445

0 关注 分享

要回复文章请先登录注册

1***@qq.com

1***@qq.com

我想问一下哎这文档中的说 在加 path 中的 app/* 是啥意思??是固定写法吗 自定义的话,是在服务器上面创建app文件夹?里面需要添加什么内容吗??还是单纯的 在服务器根目录下创建 app文件夹就行了 里面什么都不放东西??
2022-07-04 10:50
景风

景风

回复 9***@qq.com :
请问楼主可否加下WX请教一下?
2021-09-03 17:59
景风

景风

请问楼主解决了吗?可以加下WX,请教一下
2021-09-03 17:58
天生DR

天生DR

回复 9***@qq.com :
需要云打包一次 才会生成 apple-app-site-association 你上传的证书信息里有 Developer TeamID 也就是 Prefix
2021-08-09 11:47
9***@qq.com

9***@qq.com (作者)

回复 天生DR :
HBuilder的版本:3.1.22
apple-app-site-association:{
"applinks": {
"apps": [],
"details": [
{
"appID": "App ID Prefix.Bundle ID",
"paths": [ "/ulink/*"]
}
]
}
}
以上App ID Prefix.Bundle ID 为我自己的APPLE开发者账号信息

本文描述的是自动生成的 iOS平台通用链接,不能分享。我是自己手动制作放置服务器解决问题的

有点好奇,HBuilder没有填写Prefix,云服务生成的apple-app-site-association,怎么拿到的
2021-08-09 11:14
天生DR

天生DR

HBuilder的版本是什么? apple-app-site-association 文件内容是什么? 请尽量描述 你的内容 不需要粘贴ask的文档
2021-08-06 11:19