微信分享好友/朋友圈未识别应用解决方法

269 阅读2分钟

Universal Links

能链接app深层次的内容。

点击Universal Links时,系统直接重定向link到你的app。安装app时,系统直接验证,并交给app打开URLs。没有安装时,交给Safari处理。

Universal Links 与 Custom URLs的区别?

Universal Links 更安全,苹果能在你的网站通过Apple App Site Association来验证关联,排除其它app修改你方案和重定向你链接。

  1. 创建app与website的双向关联,并且明确app可以处理。
  2. 在app delegate中响应

在Safari中浏览网站,点击universal link时,如果域名相同,继续在Safari中浏览;域名不同,系统会在app中打开链接。

App可以通过universal links通讯。

open(_:options:completionHandler:)

在自己app内部,是不能通过universal link打开自己网站的。

  1. app添加Associated Domains Entitlement。

    格式为<service>:<fully qualified domain>

  2. 添加Apple App Site Association file。创建名为apple-app-site-association的文件。

    {
      "applinks": {
        "apps": [],
        "details": [{
          "appID": "<App ID Prefix>.<Bundle ID>",
          "paths": ["*", "/wechat/*"]
        }]
      },
      "webcredentials": {
        "apps": ["<App ID Prefix>.<Bundle ID>"]
      }
    }
    

    不要有后缀名!放到服务器后,服务器需要设置mime类型为application/json。

在app delegate中

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

在scene delegate中

参考

官方文档

universalLink注意事项

1.如果app官网为m.test.com 则需要将apple-app-site-association配置到m.test.com域名下

2.微信开发者平台配置的universalLink为m.test.com/ 最后一个/为微信平台要求

3.在调用微信的sdk的时候 调用方法

+ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink;

中的universalLink需要和主站保持一致 也为m.test.com, 不需要加最后的/

4.在xcode中的配置应为 applinks:m.test.com 不包含https://前缀

5.工程中的plist中的白名单LSApplicationQueriesSchemes应当包含weixinULAPI

6.在xcode工程中

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
   里面应当执行
  return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}

如果包含微信id 则这个链接是微信分享朋友圈/好友/微信支付 相关 否则为唤起app操作,可以单独处理唤起的userActivity.webpageURL.description 跳转指定页面

7.如果不想在安装了app的时候, 打开h5就跳转app, 需要做一个m.test2.com的域名 用这个当做universalLink, 使用h5的时候还用m.test2.com 只有当发送短信的时候发送的是m.test2.com, 打开的是app, 如果未安装则指向m.test.com, 原先的m.test.com也不会受到影响

8.自检测试函数测试通过需要注释掉,否则会二次唤起

9.未验证问题排查 docs.qq.com/doc/DZHNvSG…