ios常用功能

友盟微信、QQ等分享提示未验证应用配置

2020-10-20  本文已影响0人  分贝丶

产品和客服反馈微信分享提示未验证,让我们排查原因,看了微信文档才知道,由于苹果iOS 13系统版本安全升级,为此WechatOpenSDK在1.8.6版本进行了适配。 1.8.6版本支持Universal Links方式跳转,对WechatOpenSDK分享进行合法性校验。以下是我整理的配置流程和遇到坑。

确认微信App版本是否支持Universal Links

首先,确认微信(7.0.7或以上版本)的Universal Links在设备上正常,以确保openSDK与微信双向使用Universal Links通信 Safari输入https://help.wechat.com/app/

Safari 加载完成后需要下拉到顶,查看是否有打开微信入口(如下图)。若无入口,可能是由于系统拉取微信Universal Links失败,请检查手机网络状态是否正常,或更新/重装微信


微信Universal Links.png

配置我们App的苹果Universal Links

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

具体操作
1. 登录苹果开发者后台,在设置证书的页面找到 Identifiers -> App ID(设置包名)里,在对应的BundleId下勾选 Associated Domains如下图
名)里,在对应的BundleId下勾选 Associated Domains如下图
Associated Domains

保存设置,然后重新生成配置文件。

2. 在Xcode(11)里面添加Associated Domains

按照图中的步骤添加好Universal Links

xcode配置

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

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.cameraapp",
            "paths": ["*"]
            }
    }
}

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进来,也就是处理逻辑的时候。

确认App的Universal Links配置成功

用xcode 跑一个debug 包(卸载之前包),通过 Safari输入Universal Links(包括完整路径)+随机字符串(例如: abc),因为第三方分享会在后面添加参数,所以添加随机字符,加载完成后,入口默认是在最顶上看不到,需要往上滑顶才能看到,如果能展示你的App就代表通配符*配置成功了。

通Safari打开通用链接展示的效果.png

集成微信分享的配置和Universal Links配置

集成微信SDK( 如果已经集成了分享功能,可以忽略部分步骤)

//在register之前打开log, 后续可以根据log排查问题
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
    NSLog(@"WeChatSDK: %@", log);
}];

//务必在调用自检函数前注册
[WXApi registerApp:APP_ID universalLink:UNIVERSAL_LINK];

//调用自检函数
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {
    NSLog(@"%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
}];

WXULCheckStep值说明:
step = WXULCheckStepParams: 参数检查 step = WXULCheckStepSystemVersion: 当前系统版本检查 step = WXULCheckStepWechatVersion: 微信客户端版本检查 step = WXULCheckStepSDKInnerOperation: 微信SDK内部操作检查 step = WXULCheckStepLaunchWechat: App拉起微信检查 step = WXULCheckStepBackToCurrentApp: 由微信返回当前App检查 step = WXULCheckStepFinal: 最终检查 会依次回调这7个step,当回调了WXULCheckStepFinal,说明检测通过,SDK接入成功。 任一step回调的result.success为NO, 流程终止,后续不再回调,可以根据result.errorInfo的查看当前步骤错误的原因,根据result.suggestion修复问题.

以上微信相关配置来自以 微信官方文档

配置中遇到坑

后面更新了微信后台的Universal Link,发现线上用户都无法使用微信分享,提示Universal Link验证失败😩,赶紧恢复了之前的Universal Link。只能等待新版上线开启新的Universal Link,到时候老版本都会无法分享,有投诉就只能让用户更新App。感觉微信太不厚道了,appid已经配置了,你不能分享失败啊!回到以前分享成功显示未验证,我也能接受啊!

上一篇下一篇

猜你喜欢

热点阅读