iOS Universal Links 配置 - 收集了配置无效的问题

前面我们写了一篇iOS分发管理( iOS App托管和分发搭建)的文章,这一篇写一下分发后,如果用户已经安装了app需要调起app的需求

快门:地址初步检验、一篇很不错的文章

注意事项:

    •    Your domain is valid (valid DNS)
    •    Your file must be served over HTTPS
    •    Your server shouldn't return an error status code (>= 400)
    •    Your file cannot be behind redirects 
    •    Your file must be served with content type "application/pkcs7-mime" 
    •    Your file should validate and return its contents with `openssl smime -verify -inform DER -noverify`
    •    Your file should contain valid JSON (using simple JSON.parse). This can be tripped by things like having an extraneous NULL at the end of your string.

教程很多,我们先看注意事项,上面的重定向、页面报错我都有尝试,确实导致link不生效,把apple-app-site-association文件上传到某个域名指向的服务器中,如果我们测试的web页面会重定向、或者是个不存的页面,都无法正常测试你的结果。当然如果有微信登录的服务,可以配置微信的Universal links,然后调起微信试试就能验证结果。

下面简述一下Universal links的配置过程

截图和参考环境:Xcode Version 11.4 (11E146)

大致步骤

  1. 创建【apple-app-site-association】文件
  2. 上传文件到自己服务器的指定目录下
  3. app内配置 Associated Domains
  4. 打包安装到手机(真机)
  5. 使用Safari验证结果

详细步骤:

1、填写apple-app-site-association文件,可以找个json文件,填写,写完后把.json后缀删除。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "teamId.bundleid",
                "paths": [ "*" ]
            },
            {
                "appID": "H7JOD8J4A1.bundleid",
                "paths": [ "*" ]
            }
        ]
    }
}
  • 我们只要配置上面的appID 和 paths 就可以了;
  • appID是由teamID和bundleID通过"."链接在一起组成的,其中teamID在developer.apple.com的Membership选项下可查。但是!!,但是如果是子账号打包调试,teamID可能有变,在Signing & Capabilities中可以看到,具体见下图。我曾花费1天的时间,苦苦思考,最终发现问题是这个teamID不正确
  • paths的配置,建议前期简单配置,测试通过再去琢磨是否有必要丰富一下path
  • 注意格式不要出错,一定是严格的json格式,建议在json.cn中编辑,然后贴过来。

iOS Universal Links 配置 - 收集了配置无效的问题_第1张图片2、在服务器根目录新建.well-known目录,然后上传刚刚写好的文件,这样就可以通过https://yourHost/.well-known/apple-app-site-association来访问到刚才的文件,如果不能访问,则上传的有问题。

3、app内配置Associated Domains,见上图

  • 前面要追加applinks: ​
  • 不用写协议部分https://,直接写host部分就行了,

举例,假设我们现在配置的是“会小二”APP,注意格式即可,参数值只是示例:

  1. apple-app-site-association文件中的teamID为 JDIU78976J.com.huixiaoer.app,paths不变
  2. 上传到得到移动端的文件地址:https://m.huixiaoer.com/.well-known/apple-app-site-association,并且可在浏览器访问到内容
  3. 在Xcode配置是:applinks:m.huixiaoer.com
  4. 把3中配置后的app运行到真机里,或者打包安装也可以。
  5. 在4完成后的手机中,找到Safari,浏览器输入:https://m.huixiaoer.com?id=8301280,这里假设

4、把app安装到app中,然后在Safari中打开一个部署在刚才的服务上的h5页面,加载完成后,微微下拉,如果有看到打开app的提示,即代表配置成功。

5、如果需要内部跳转逻辑,可以实现以下代理方法,抓取到URL即可自行处理

swift:

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([Any]?) -> Void) -> Bool

OC:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> * _Nullable restorableObjects))restorationHandler;

取userActivity.webpageURL即可。如果微信分享使用了 universal Links的方式通信,需要单独做个判断,具体如何判断,抓一个微信回调的URL即可发现规律。

你可能感兴趣的:(Universal,Links,Universal,无效)