iOS 微信支付(1.8.6) -- Universal Links 创建

  今天项目接入微信支付,在更新微信支付sdk(1.8.6)的时候,用到一个Universal Links,之前没有接触过,于是就简单的记录一下配置过程。在 iOS9 之前,要在浏览器中唤醒 App,我们通常使用 scheme。这种方式需要提前判断系统中是否安装了能够响应此scheme 的 App,并且这种方式在微信被禁用。

目录:

一 、官方解释
二、具体操作
三、微信支付配置

  Universal Links 可以链接到您应用中的内容并安全地共享数据。 当用户点击Universal Links 时,iOS 会将链接直接重定向到您的应用程序,而无需通过 Safari 或您的网站进行路由。此外,由于 Universal Links 是标准 HTTP 或 HTTPS 链接,因此一个 URL 既适用于您的网站,也适用于您的应用程序。如果未安装您的应用程序,则系统会在 Safari 中打开URL,以使您的网站能够处理它。当用户安装您的应用程序时,iOS 会检查存储在Web服务器上的文件,以验证您的网站是否允许您的应用程序代表其打开 URL。只有您才能将此文件存储在服务器上,以确保网站和应用程序之间的关联。

  UIKit 应用程序可以通过通用链接进行通信。支持通用链接的功能允许其他应用直接将少量数据发送到您的应用,而无需使用第三方服务器。

  如何配置您的应用程序和网站以支持通用链,注意:设置支持Universal Links你必须有一个支持https的域名。

官方解释

  请按照以下步骤将您的应用和网站相关联以获取 Universal Links:

  1. 将添加 Associated Domains Entitlement 到您的应用。使用 applinks 服务前缀包含您的应用程序将支持的所有域。请参阅添加关联的域权利。
  2. 将 Apple App Site Association 文件添加到您的网站。请参阅添加 Apple App Site Association 文件。
  3. 将applinks密钥添加到 Apple App Site Association 文件中。指定每个应用程序将处理的网站部分。
    以上是从苹果文档翻译而来。
具体操作
  1. 登录苹果开发者后台,在设置证书的页面找到 Identifiers -> App ID(设置包名)里,在对应的 BundleId 下勾选 Associated Domains 如下图:
    A1307C95-BF9B-441F-B93B-9F3AA810B3B2.png
      保存设置,然后重新生成配置文件。

  2. 在 Xcode(11) 里面添加 Associated Domains。按照图中的步骤添加好 Universal Links :
    1692961D-11CA-4F17-BF48-BC711731A8F6.png
      注意点:在 Associated Domains 里面配置的 Universal Links 必须要以 applinks: 开头,后面写上域名,例如:

applinks:www.apple.com
  1. 配置 apple-app-site-association
    自己创建一个名叫 apple-app-site-association 的 json 格式文件,注意文件命不需要添加的后缀。Apple 官方参照地址
{"applinks": {"apps": [],"details": [{"appID": "D3KQX62K1A.com.example.photoapp","paths": ["/albums"]},{"appID": "D3KQX62K1A.com.example.videoapp","paths": ["/videos"]},{"appID": "D3KQX62K1A.com.example.cameraapp","paths": ["*"]},{  "appID": "D3KQX62K1A.com.example.iphoneapp","paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]}]}
}
  • details – 键的值添加为字典数组的JSON表示,每个应用程序一个字典。对于每个特定于应用程序的词典(上面就表示了同一个teamid下的4个不同的应用)。
  • appIDpaths appID – 将处理格式为的链接的应用程序的标识 TeamIdentifier.bundle identifier( 开发者账号 teamID.app的bundle identifier )。
  • paths – 应用程序支持的网站各个部分,以路径字符串数组形式指定。只有这些指定的路径的链接,才能被app所处理, *符号写法代表了可识别域名下所有链接。

例如,附加 * 到特定的网址(例如/ videos/samples/2015/)以指定/下的所有路径videos/samples/2015/。使用 ? 匹配任何单个字符,如/photography//samples/201?/mypage。使用独立* 网站来指定整个网站。 通过“NOT ”在路径字符串的开头添加(包括T后面的空格)来标识不应处理的区域。 注意 用于在paths 数组中指定网站路径的字符串区分大小写。仅将URL的路径部分用于比较。其他组件(例如查询字符串或片段标识符)将被忽略。

  1. 上传 apple-app-site-association 到服务器(服务器需要支持 https )
    上传 apple-app-site-association文件到域名的根目录或者 .well-known 子目录下
    能打开 https:///apple-app-site-association 或 https:///.well-known/apple-app-site-association
    当我们的App在设备上第一次运行时,如果支持 Associated Domains 功能,那么 iOS 会自动去获取域名下的 apple-app-site-association 文件

  上传成功后,我们可以用苹果提供的验证网址来直接验证 apple-app-site-association 设置是否生效。注意事项 : iOS 9.2 之前,不用跨域都可以跳转, iOS 9.2 之后,必须跨域才能进行跳转到原生 App 上。iOS只会在 App 第一次启动时请求一次 apple-app-site-association 文件,服务器上该文件的更新不会让 iOS 本地的文件同步更新。

  1. 工程中添加处理方法
      现在用户点击我们配置的域名下的匹配的链接,直接可以进我们的app了。但是,如果想要能够获取到用户进来的链接,根据链接来处理,需要展示给用户的信息
    那么需要在工程里的 AppDelegate 里实现 方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
{if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {NSURL *webpageURL = userActivity.webpageURL;NSString *host = webpageURL.host;if ([host isEqualToString:@"apple..com"]) {//进行我们需要的处理}else {[[UIApplication sharedApplication]openURL:webpageURL];}}return YES;
}

  当 userActivity 是 NSUserActivityTypeBrowsingWeb 类型, 则意味着它是由Universal Links 进来,也就是处理逻辑的时候。

微信支付配置
  1. 具体的支付流程这里不做介绍。具体配置请查看微信文档地址。
      最近有朋友在按照微信文档配置以后,微信 Universal Links 部分没有问题,但是微信授权有问题,调不起来。后来发现是在 Xcode 的 info.plist 里面少配置了。配置如下图:
    57CBBC13-89C8-41AF-A4B6-A08078580B7E.png
      需要在 LSApplicationQueriesSchemes 里分别添加 weixin、wechat、weixinULAPI。

  2. 向微信注册你的应用程序 id 和 Universal Links
    在开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得 AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。配置的地方如下图所示:
    WeChat5d27a90666b76ba0ef8f0f8b40032bf5.png


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部