You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS原生应用中Docusign弹出位置权限提示后闪退如何解决

DocuSign iOS SDK 2.5.2 签署流程权限弹窗后自动关闭修复方案

问题根因

该问题为DocuSign Native SDK 2.5.2版本的已知逻辑缺陷:SDK内置签署流程默认开启位置信息存证能力,点击继续按钮时会触发位置权限申请,但未处理权限弹窗弹出时的视图生命周期回调,会误触发签署页面的自动销毁逻辑,最终表现为弹窗弹出后签署窗口立即关闭。

修复步骤

  • 第一步:在项目Info.plist中补全位置权限声明
    必须添加权限描述字段,否则即使申请权限也会被系统直接拒绝,可选字段根据业务场景选择:
    • 若仅签署时需要位置权限:添加NSLocationWhenInUseUsageDescription,值填写向用户展示的权限用途,例如「签署合同需获取位置信息用于司法存证」
    • 若有后台定位需求可选添加NSLocationAlwaysAndWhenInUseUsageDescription,SDK 2.5.2版本未强制要求后台权限
  • 第二步:拉起签署页面前预先申请位置权限
    在触发DocuSign签署流程的入口处,先调用系统定位权限申请接口,等用户完成权限授权操作后再初始化加载签署页面,避免SDK内部触发权限申请导致异常,示例代码:
    // Swift 示例
    import CoreLocation
    
    private let locationManager = CLLocationManager()
    
    func prepareForDocusignSign() {
        switch CLLocationManager.authorizationStatus() {
        case .notDetermined:
            locationManager.requestWhenInUseAuthorization()
            // 监听权限回调,确认授权完成后再拉起签署页面
        case .authorizedWhenInUse, .authorizedAlways:
            // 已有权限,直接拉起签署页面
        case .denied, .restricted:
            // 权限被拒绝,可选提示用户开启权限后再操作
        @unknown default:
            break
        }
    }
    
    // Objective-C 示例
    #import <CoreLocation/CoreLocation.h>
    
    - (void)prepareForDocusignSign {
        CLLocationManager *locationManager = [[CLLocationManager alloc] init];
        CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
        if (status == kCLAuthorizationStatusNotDetermined) {
            [locationManager requestWhenInUseAuthorization];
            // 监听权限回调,确认授权完成后再拉起签署页面
        } else if (status == kCLAuthorizationStatusAuthorizedWhenInUse || status == kCLAuthorizationStatusAuthorizedAlways) {
            // 已有权限,直接拉起签署页面
        } else {
            // 权限被拒绝,可选提示用户开启权限后再操作
        }
    }
    
  • 第三步(可选,业务无需位置存证时使用):直接关闭SDK位置校验
    若你的业务场景不需要位置信息存证,可在初始化SDK时直接关闭位置采集能力,彻底跳过权限申请逻辑,对应配置代码:
    // OC 配置
    [DSMCapabilityManager sharedInstance].disableLocationCapture = YES;
    
    // Swift 配置
    DSMCapabilityManager.sharedInstance().disableLocationCapture = true
    
  • 第四步:兜底兼容全局通知逻辑
    若以上方案均无效,检查项目中是否存在全局监听UIApplicationWillResignActiveNotification通知的代码:位置权限弹窗弹出时会触发该通知,若你的逻辑中存在自动关闭模态视图的代码,会误关闭DocuSign的签署窗口,需在该逻辑中添加判断,排除类名为DSMNavigationController的视图即可。

内容的提问来源于stack exchange,提问作者Senthilkumar.S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:18:04