iOS新手学习iOS 技术文档收录iOS开发

Universal Links-- 微信支付(1.8.6)

2019-09-27  本文已影响0人  31313_iOS

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

目录:

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

如何配置您的应用程序和网站以支持通用链

注意:设置支持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
  1. 按照图中的步骤添加好Universal Links
1692961D-11CA-4F17-BF48-BC711731A8F6.png

注意点:在 Associated Domains里面配置的Universal Links必须要以applinks:开头,后面写上域名,例如

applinks:www.apple.com
3. 配置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的路径部分用于比较。其他组件(例如查询字符串或片段标识符)将被忽略。

4. 上传apple-app-site-association到服务器(服务器需要支持https)

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

注意事项 : iOS 9.2之前,不用跨域都可以跳转, iOS 9.2之后,必须跨域才能进行跳转到原生app上。
iOS只会在App第一次启动时请求一次apple-app-site-association文件,服务器上该文件的更新不会让iOS本地的文件同步更新。

5. 工程中添加处理方法

现在用户点击我们配置的域名下的匹配的链接,直接可以进我们的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. 具体的支付流程这里不做介绍。具体配置请查看微信文档地址
2.向微信注册你的应用程序id和Universal Links

在开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。

配置的地方如下图所示


WeChat5d27a90666b76ba0ef8f0f8b40032bf5.png

到此,位置基本的配置已经结束,如果遇到问题,可以留言。。。

上一篇下一篇

猜你喜欢

热点阅读