uni-app ios UrlSchemes 支付宝授权跳不回APP

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app ios UrlSchemes 支付宝授权跳不回APP

uniapp ios环境 app端跳转支付宝后打开h5页面无法跳回app(配置urlschemes无效)

信息类型 信息内容
问题描述 uniapp ios环境 app端跳转支付宝后打开h5页面无法跳回app(配置urlschemes无效)
2 回复

请问解决了吗


在处理uni-app开发中iOS平台通过UrlSchemes进行支付宝授权后无法跳回APP的问题时,我们通常需要确保几个关键点的配置和实现是正确的。以下是一个基本的流程和代码示例,帮助你排查和解决这个问题。

1. 配置UrlSchemes

首先,确保你的uni-app项目已经在manifest.json中正确配置了UrlSchemes。例如:

"mp-weixin": { // 这里以微信小程序为例,iOS配置主要在原生App部分,但UrlSchemes需在所有平台统一考虑
    "appid": "your-app-id",
    // 其他配置...
},
"app-plus": {
    "distribute": {
        "apple": {
            "urlScheme": "yourappscheme" // 配置UrlSchemes
        }
    }
}

2. 在iOS原生代码中处理UrlSchemes

对于uni-app打包的iOS应用,你可能需要直接修改或检查Xcode项目中的Info.plist和AppDelegate.m(或.swift)文件。

  • Info.plist:确保CFBundleURLTypes已经包含了你的UrlSchemes。
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>yourappscheme</string>
        </array>
    </dict>
</array>
  • AppDelegate.m:添加处理Url打开的逻辑。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    if ([url.scheme isEqualToString:@"alipay"]) {
        // 处理支付宝回调
        NSString *query = [url query];
        // 解析query字符串,根据支付宝的回调参数进行处理
        // ...
        
        // 完成后,根据需求决定是否返回APP主界面
        [self.window makeKeyAndVisible];
        return YES;
    }
    return NO;
}

3. 支付宝SDK集成与调用

确保你已经正确集成了支付宝SDK,并且在发起授权请求时,正确设置了回调URL。例如:

// 假设使用AlipaySDK发起授权
AlipaySDK *order = [[AlipaySDK alloc] init];
order.delegate = self;
NSString *appScheme = @"yourappscheme://";
NSString *orderString = [NSString stringWithFormat:@"{\"app_id\":\"%@\",\"method\":\"alipay.system.oauth.token\",\"format\":\"JSON\",\"charset\":\"utf-8\",\"sign_type\":\"RSA2\",\"timestamp\":\"%@\",\"version\":\"1.0\",\"biz_content\":{\"grant_type\":\"authorization_code\",\"code\":\"%@\"},\"return_url\":\"%@\"}", appId, timestamp, authCode, [appScheme stringByAppendingString:@"callback"]];
[order startOrder:orderString];

确保return_url与你在Info.plist中配置的UrlSchemes匹配,并且处理逻辑能够正确响应这个回调。

通过上述步骤,你应该能够解决uni-app在iOS平台上通过UrlSchemes进行支付宝授权后无法跳回APP的问题。如果问题依然存在,请检查每一步的具体实现和配置是否有误。

回到顶部