1.1 获取Team ID
Team ID
3.2 配置apple-app-site-association文件
3.2.1 创建名为apple-app-site-association的无后缀文件。
3.2.2 编辑文件内容,把文件给后台小哥放到服务器,让他给个https的地址。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "Team ID.Bundle ID",
"paths": ["*"]
}
]
}
}
注意:paths后面 ["*"]中的*表示全路径,也可["/app/*"]表示app下的全路径,所有url都可以进入到app中打开,只要和Associated Domains、universal link对应起来就行
例(1):文件地址为:https://a.b.c/apple-app-site-association,"paths": ["*"],Associated Domains应该为applinks:a.b.c/,universal link应为https://a.b.c/
例(2):文件地址为:同上,"paths": ["/app/*"],Associated Domains应该为applinks:a.b.c/,universal link应为https://a.b.c/app/
3.3 Signing&Capabilities点左上角“+”,选择Associated Domains,设置applinks
2.设置LSApplicationQueriesSchemes
TARGETS -> info -> Custom iOS Taeget Properties添加LSApplicationQueriesSchemes为数组类型,增加weixin和weixinULAPI。
LSApplicationQueriesSchemes
3.设置URL scheme
URL scheme为微信开发者平台获取的,就是APPID
URL scheme
4.代码设置
appdelegate中didFinishLaunchingWithOptions方法:
WXApi.registerApp(APPID, universalLink: "https://apiproduct.yachaungkeji.cn/tempimgs/wxnew/app/test/")
App中微信登录按钮请求的方法:
let urlString = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=(APPID)&secret=(SECRET)&code=(sendResp.code!)&grant_type=authorization_code"
Info中URL Types设置URL Schemes
Signing&Capabilites->AssiociatedDomains->Domains
5.AppDelegate设置
5.1 AppDelegate设置代理<WXApiDelegate>
5.2 AppDelegate代理方法
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
if ([url.host isEqualToString:@"safepay"]) {
//Callback为nil时,支付代码里的回调才会执行
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService]processOrderWithPaymentResult:url standbyCallback:nil];
//授权跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:nil];
}
else{
return [WXApi handleOpenURL:url delegate:self];
}
return YES;
}
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
return [WXApi handleOpenURL:url delegate:self];
}
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
- (void)onReq:(BaseReq*)req{
NSLog(@"---");
}
- (void)onResp:(BaseResp*)resp{
if ([resp isKindOfClass:[SendAuthResp class]]) {
//登录授权成功
}
else{ //if ([resp isKindOfClass:[PayResp class]]) {
//登录授权成功
}
SendAuthResp *resp2 = (SendAuthResp *)resp;
NSLog(@"resp2.code------%@",resp2.code);
}
5.3 SceneDelegate设置代理<WXApiDelegate>
5.4 SceneDelegate代理方法
-(void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts API_AVAILABLE(ios(13.0)){
if (URLContexts.count > 0) {
NSEnumerator *enumerator = [URLContexts objectEnumerator];
UIOpenURLContext *urlContext = [enumerator nextObject];
NSURL *url = urlContext.URL;
if ([url.host isEqualToString: @"safepay"]) {
//Callback为nil时,支付代码里的回调才会执行
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService]processOrderWithPaymentResult:url standbyCallback:nil];
//授权跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:nil];
}
else{
[WXApi handleOpenURL:url delegate:self];
}
}
}
-(void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity API_AVAILABLE(ios(13.0)){
[WXApi handleOpenUniversalLink:userActivity delegate:self];
}
- (void)onReq:(BaseReq*)req{
NSLog(@"---");
}
- (void)onResp:(BaseResp*)resp{
if ([resp isKindOfClass:[SendAuthResp class]]) {
//登录授权成功
}
else{ //if ([resp isKindOfClass:[PayResp class]]) {
//登录授权成功
}
SendAuthResp *resp2 = (SendAuthResp *)resp;
NSLog(@"resp2.code------%@",resp2.code);
}
参考资料:
https://www.jianshu.com/p/1936e649b012
https://blog.csdn.net/qcx321/article/details/103784060
https://blog.csdn.net/weixin_43064185/article/details/109388196
网友评论