美文网首页UniversalLinkselector
关于Universal links的一点总结

关于Universal links的一点总结

作者: 问问你是谁 | 来源:发表于2020-07-21 16:56 被阅读0次

    Universal links的来龙去脉就不说了,这里简单总结几点我认为比较容易让人困惑的事项,希望能给遇到困难的小伙伴们提供一点帮助。


    2021-3-16更新:
    如果你嫌配置这些东西太麻烦,用ShareSDK吧。它会帮你把这些东西都配置好,然后你复制它给你的链接直接用就好了,省去你研究格式的时间,也不用让后台帮你更新这个文件了。我底下写的这些东西你也就可以不看了...


    先贴下苹果官方文档:点这里

    一、 关于apple-app-site-association在服务器上的路径
    上面这个文档里,苹果建议放在域名下的".well-known"文件夹里,比如:

    https://<your-domain>/.well-known/apple-app-site-association

    但从百度上的结果来看,".well-known"这个路径弄起来还挺麻烦的。所以还是推荐直接放在域名根目录底下,就是这样:

    https://<your-domain>/apple-app-site-association

    二、这个apple-app-site-association里面的json怎么写
    上面文档推荐的格式是:

    // 格式1
    {
      "applinks": {
          "details": [
               {
                 "appIDs": [ "ABCDE12345.com.example.app", "ABCDE12345.com.example.app2" ],
                 "components": [  // 相当于其他格式中的paths
                   {
                      "/": "/buy/*",  // 具体的path
                      "comment": "Matches any URL whose path starts with /buy/"  // 注释
                   },
                   {
                      "/": "/help/website/*",
                      "exclude": true,  // 作用同其他格式具体path前面的那个"NOT"
                      "comment": "Matches any URL whose path starts with /help/website/ and instructs the system not to open it as a universal link"
                   }
                 ]
               }
           ]
       }
    }
    

    可是你在网上绝大多数的文章里看到的都是这样的格式:

    // 格式2
    { 
     "applinks": {
         "apps": [],  // 空数组就好了
         "details": [ 
          {
              "appID": "ABCDE12345.com.example.app",
              "paths": [ "/universal_links_callback/*", "/qq_conn/666888666/*", "NOT /website/*" ]
          }
          ] 
        }
    }
    

    你可能还会看到第3种格式:

    // 格式3,知乎就是这样的格式
    {
        "applinks": {
            "apps": [],
            "details": {  // 和格式2相比,details变成了字典,原本显式的"appID"直接变成了key
                "ABCDE12345.com.example.app": {
                    "paths": [
                        "/universal-links-callback/*",
                        "/qq_conn/666888666/*",
                        "NOT /website/*"
                    ]
                }
            }
        }
    }
    

    看上去格式1比格式2、3更复杂点,但语义更清晰,可读性更高。"components"相当于其他格式中的"paths";"component"下的"exclude": true,相当于格式2、3中paths里具体path前的"NOT",意思是不把这个路径的链接当通用链接来处理。

    按理这三种格式都是ok的。但是如果你用苹果最新推荐的“格式1”的话,当你在QQ互联中验证Universal link时会一直失败,会报一个大概意思是“在你的apple-app-site-association中找不到QQ相关的Universal link信息”的错误。微信是没问题的,因为微信不校验。

    三、如果你用了友盟分享,还需要集成微信支付时的注意事项
    第一个:pod友盟的精简版微信分享"ReducedWeChat",和最新的微信官方"WechatOpenSDK"

    pod 'UMCShare/Social/ReducedWeChat'
    pod 'WechatOpenSDK'
    

    第二个:除了原本友盟的注册方法之外,你还需要再调用下微信sdk的注册方法。否则分享可以调起微信,但支付的时候调不起来。

    // 原本友盟的注册方法
    UMSocialGlobal.shareInstance()?.universalLinkDic = 
                                        [UMSocialPlatformType.wechatSession : universalLink_wx, 
                                        UMSocialPlatformType.QQ : universalLink_qq]
    UMSocialManager.default().setPlaform(.wechatSession,
                                         appKey: WXAppId,
                                         appSecret: WXAppSecret,
                                         redirectURL: nil)
    // 微信sdk的注册方法
    WXApi.registerApp(WXAppId, universalLink: universalLink_wx)
    

    相关文章

      网友评论

        本文标题:关于Universal links的一点总结

        本文链接:https://www.haomeiwen.com/subject/uygikktx.html