iOS通⽤链接(UniversalLink)配置详解
iOS 通⽤链接(Universal Link)配置
什么是通⽤链接?
通⽤链接是iOS9推出的⼀项新功能,如果你的应⽤(app)⽀持通⽤链接(Universal Link)之后,iOS⽤户能够在点击⽹页的链接的时候⽆缝的重定向到已经安装的app,不需要额外的任何操作。如果没有安装对应的app,那么点击链接会使⽤Safari打开⽹页。在iOS9以前,对于各种浏览器,Safari中唤醒app的需求,我们通常是只能使⽤scheme的⽅式。
为什么要突然改⽤通⽤链接的配置⽅式?
我们的项⽬中唤起第三⽅app⼀般是通过配置对应的URL Scheme的⽅式使⽤的,SDK的最新版本openSDK1.8.6 由于苹果iOS 13系统版本安全升级,为此openSDK在1.8.6版本进⾏了适配。 1.8.6版本⽀持Universal Links⽅式跳转,对openSDK分享进⾏合法性校验,提升使⽤过程中的安全性。
要求在注册appid时,必须要传⼊universalLink,以前的⽅法在旧版本仍然可使⽤。所以就开始研究通⽤链接(Universal Link)的配置
@interface WXApi : NSObject
/*! @brief WXApi的成员函数,向终端程序注册第三⽅应⽤。
app开发者需要更新此app以在此ios上正常使用
*
* 需要在每次启动第三⽅应⽤程序时调⽤。
* @attention 请保证在主线程中调⽤此函数
* @param appid 开发者ID
* @param universalLink 开发者Universal Link
* @return 成功返回YES,失败返回NO。
*/
+ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLin
如何配置通⽤链接?
1、创建json格式的⼀个空⽂件(取名必须为apple-app-site-association,并且没有后缀)
这⾥的appID是指:TeamID+BundleId的组成(例:st)(TeamID可以在开发者账号⾥⾯查看,BundleId是项⽬的Bundle Identifier)。
这⾥的paths是指:是设置允许的路径列表,可以是⼀个也可以是多个,最简单的⽅式是使⽤“*”,通配符,表⽰允许该域名下的任意路径。(注意:paths中的⼤⼩写是敏感的,⼀定要⼀⼀对应)
2、上传apple-app-site-association⽂件(这⾥就能拿到app中配置需要的域名)
(1)将apple-app-site-association⽂件发给服务器端的同事,让他上传到域名的根⽬录下或者.well-known的⼦⽬录下(这⾥的域名必须要是可访问的域名,由服务器端的同事给到)。
(2)Web server需要⽀持https,客户端通过https来访问,并且不⽀持重定向。
3、在app中处理通⽤链接
(1)添加对应的域名(上⾯知道的域名)到Capabilities
在项⽬⾥⾯定位到Capabilities,到Associated Domains,点击允许按钮,在Domains中添加对应的域名。(Domains中的域名必须是使⽤applinks开头,然后输⼊⾃⼰的域名即可。注意:当app第⼀次启动之后,会⾃动从你⾃⼰的域名⽬录下下载这个apple-app-site-association⽂件。)
注:这⾥可能会遇到⼀个错误就是你的App ID中并没有允许使⽤Associated Domains,所以需要进⼊开发者中⼼,编辑App ID允许Associated Domains,并且重新
⽣成对应的签证⽂件并下载安装。在最新xcode11,添加了该项,开发者账号该appId下⾃动打开
(2)实现AppDelegate⾥⽀持通⽤链接的实现⽅法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler { //⾃⼰的实现代码
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
这⾥如果是从旧版更新WechatOpenSDK1.8.6版本的话,需要在这个⾥⾯调⽤⾥的这个⽅法,并且在Xcode中,选择你的⼯程设置项,选中“TARGETS”⼀栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin和weixinULAPI,可通过开放平台的接⼊⽂档步骤⼀步步进⾏修改或添加。
注:这⾥的weixinULAPI注意⼤⼩写,我之前是添加了⼀个weixinulapi⼩写的进去,结果都注册失败,⼀直没到原因,直到我调⽤打印log的⽅法,才知道是没添加到weixinULAPI这个schemes,⼤⼩写没区分
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。