iOS跳转微信小程序

1.配置Associated Domains

登录苹果开发者中心,找到相应的Identifiers


相应的Identifiers.png

勾选 Associated Domains


Associated Domains.png

对于之前没有勾选状态的,保存后相关的Profiles会是失效状态,只要点击编辑,再点击保存就可以更新成功,然后下载下来。

2.配置 apple-app-site-association 文件

apple-app-site-association 是一个json格式的文件,但是文件命名上面,不要有.json ,直接是apple-app-site-association,这是一个固定名称,文件的内容例如:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TeamID.BundleID",//把TeamID和BundleID换成你项目真实的值
                "paths": [ "*"]
            }
            //如果你有多个项目,要用同一个apple-app-site-association文件,可以在如下面添加
            //,
            //{
            //    "appID": "TeamID2.BundleID2",//把TeamID和BundleID换成你项目真实的值
            //    "paths": [ "*"]
           // }
        ]
    }
}

上传该文件到服务器的根目录(Tips:服务器必须支持HTTPS协议),这里先设定我的服务器域名为:https://www.demo.com(Tips:这个服务器的域名是可以带端口的,如果你的是带端口,那么下面用到该域名的地方都记得带端口)。上传完成后,验证是否有效,可以用Apple官方提供的App Search API Validation Tool

App Search API Validation Tool.png

如上图,说明配置没有问题了,接下来要在微信开放平台上面配置Universal Links

比如像我上面举例的服务器域名,那这里就填写https://www.demo.com/

3.集成微信的SDK

按着微信官方的接入指南,要先确定一下微信的Universal Link是否正常,个人觉得这个应该都可以,这里我们就浪费篇幅了,大家直接官方上面看微信开放文档 (qq.com),上重点。

1.CocoaPods 集成
pod 'WechatOpenSDK'

添加完,记得在项目的根目录下执行 pod install。

2.Xcode 项目配置
  • 配置 weixin URL scheme
    在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你在微信开放平台所注册的应用AppID(如下图所示)。


  • 配置 LSApplicationQueriesSchemes
    选中项目的info.list => 右击 => open as source code,如图添加
 <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixin</string>
        <string>weixinULAPI</string>
    </array>
  • 配置Associated Domains
    这里就是以applinks:开头加上上面说的服务器域名,如applinks:www.demo.com
    WX20211201-181035.png
3.上代码
  • 注册
    因为我是在AppDelegate上面注册
#import "WXApi.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate,WXApiDelegate>
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    return [WXApi handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
   return [WXApi handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
   return  [WXApi handleOpenURL:url delegate:self];
}
//对应我们配置的 Universal Links
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler
{
   return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}

注册微信

//微信
[WXApi registerApp:@"您的微信注册AppID" universalLink:@"在微信开放平台填写的universalLink"];
  • 调起微信小程序
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
launchMiniProgramReq.userName = @"小程序的原始ID";  //小程序的原始ID,不是AppID
launchMiniProgramReq.path =@"小程序界面的Path";    //拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入
launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease; //拉起小程序的类型
[WXApi sendReq:launchMiniProgramReq completion:nil];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容