Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
T treasure
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 13
    • Issues 13
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • FE
  • treasure
  • Issues
  • #153

Closed
Open
Created Apr 12, 2023 by zhoudanjie@zhoudanjieDeveloper

iOS微信分享,返回app再二次跳转微信问题的解决

原因

Universal link配置有问题。微信SDK无法使用universal link方式跳转微信,采用了兜底方案schema方式跳转微信,形成二次跳转。

问题定位

打开iOS项目注册微信应用的处理后,临时加上自检,并打开日志开关。

    [WXApi registerApp:WXAppkey universalLink:UNIVERSAL_LINK];
    // 临时加上这段 start
    [WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult * _Nonnull result) {
        NSLog(@"WXApi checkUniversalLinkReady:%@ %@", @(step), result);
    }];
    [WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString * _Nonnull log) {
        NSLog(@"WXApi log:%@", log);
    }];
    // 临时加上这段 end

XCode控制台可以看到相关日志,其中最关键的信息是

Universal Link check failed. The application is launched by WeChat via scheme

2023-04-11 21:14:09.105187+0800 Location[441:7697] WXApi checkUniversalLinkReady:0 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.105736+0800 Location[441:7697] WXApi checkUniversalLinkReady:1 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.107327+0800 Location[441:7697] WXApi checkUniversalLinkReady:2 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.113546+0800 Location[441:7697] WXApi checkUniversalLinkReady:3 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.554379+0800 Location[441:7697] WXApi log:wxlog:launch app with ul only success
2023-04-11 21:14:09.554426+0800 Location[441:7697] WXApi checkUniversalLinkReady:4 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.554482+0800 Location[441:7697] WXApi log:wxlog:Successfully starting WeChat with the universal link.
2023-04-11 21:14:15.857426+0800 Location[441:7697] WXApi checkUniversalLinkReady:5 WXCheckULStepResult[success: 0, errorInfo: Universal Link check failed. The application is launched by WeChat via scheme, suggestion: Common problems self-check guide: [微信开放平台App iOS端接入新版本SDK 常见问题自查指引]https://developers.weixin.qq.com/community/develop/doc/000ce0403bc9d0ea1a0a67f415b409]
2023-04-11 21:14:15.857506+0800 Location[441:7697] WXApi log:wxlog:Error:WXCheckULStepResult[success: 0, errorInfo: Universal Link check failed. The application is launched by WeChat via scheme, suggestion: Common problems self-check guide: [微信开放平台App iOS端接入新版本SDK 常见问题自查指引]https://developers.weixin.qq.com/community/develop/doc/000ce0403bc9d0ea1a0a67f415b409]

配置步骤

这个配置涉及到很多方面,任何一个环节不对就会出问题。

这次解决问题,趁热打铁重新整理了下universal link的配置步骤。

1、确保文件 apple-app-site-association格式正确 文件内可设置多个app信息,一个app内也可以设置多个path,比如同时某个app的微信应用universal link path,和QQ应用universal link path。 其中,appID为teamlD+bundle1D 例子:

{
    "applinks":{
        "apps":[],
        "details":[
            {
                "appID":"8U6XXXX.com.location.aaa",
                "paths:["/patha1/*","/patha2/888888/*"]
            },
            {
                "appID":"8U6XXXXX.com.location.bbb",
                "paths”:["/pathbbbb/*"]
            }
        ]
    }
}

2、确保配置文件apple-app-site-association已放在服务器的.well-known文件夹下 之后,访问 https://www.aaaa.com/apple-app-site-association, 确保文件得能下载下来。

3、在微信应用平台上(https://open.weixin.qq.com),设置该app的iOS应用Universal Links字段如下,包含域名和path,并以斜杠/结尾

https://www.aaaa.com/patha1/

4、确保苹果开发者账号网站上,该应用的Associated Domains已打开 截屏2023-04-12_19.58.18

5、Xcode的Associated Domains设置中添加一个Domian,前后不含斜杠/

applinks:www.aaaa.com

截屏2023-04-12_19.52.57

6、app初始化处理中,注册微信应用的处理中,带上UNIVERSAL_LINK,

// 这里常量UNIVERSAL_LINK设置为 https://www.aaaa.com/patha1/
[WXApi registerApp:WXAppkey universalLink:UNIVERSAL_LINK];

7、在application的openURL方法中,添加微信回调处理

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options {
。。。
    if ([url.scheme isEqualToString:WXAppkey]) {
        return [WXApi handleOpenURL:url delegate:self];
    }
。。。
}

8、在application的Universal link回调方法中,添加微信回调处理

// Universal link的回调
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
。。。
	res = [WXApi handleOpenUniversalLink:userActivity delegate:self];
    if (res) {
        return YES;
    }
。。。
}

9、由于这个配置与iOS自身机制,以及微信后台数据同步有关。完成以上配置重新安装app第一次运行时,不一定能马上拉取到配置数据。如未生效,建议删除app并重启手机。

网上查询了相关资料,什么时候会触发更新 apple-app-site-association 文件,

  • 开发环境:删除 App, app 安装才会去更新 apple-app-site-association 文件

  • App Store: 用户更新就会更新去更新 apple-app-site-association 文件

Edited Apr 16, 2023 by zhoudanjie
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking