uni-app iOS小程序SDK DCUniMPSDKEngine.openUniMP回调失败 Code=-3001 "uni小程序(__UNI__id)未启动"

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

uni-app iOS小程序SDK DCUniMPSDKEngine.openUniMP回调失败 Code=-3001 “uni小程序(__UNI__id)未启动”

示例代码:

DCUniMPSDKEngine.openUniMP(appid, configuration: configuration) { instance, error in  
    if instance != nil {  
        // 保存打开实例,用于后续通信  
        self?.uniMpInstances[appid] = instance  
        self?.uniMpVCS[appid] = self?.uniMPVC ?? UIViewController()  

        completed(true)  
    } else {  
        UniUMEvent.wgtOpenFailed.mob(error.debugDescription)  
        completed(false)  
    }  
}

操作步骤:

  1. App工程集成uni小程序sdk,版本号:4.15
  2. 将构建好的wgt文件存在工程目录下;
  3. 调用sdk DCUniMPSDKEngine.installUniMPResource api安装wgt,回调成功
  4. 调用sdk DCUniMPSDKEngine.openUniMP,打开小程序

预期结果:

调用sdk DCUniMPSDKEngine.openUniMP,打开小程序,回调成功,跳转小程序页面

实际结果:

调用sdk DCUniMPSDKEngine.openUniMP,打开小程序,回调失败,错误日志:Optional(Error Domain=DCUniMPErrorDomain Code=-3001 “uni小程序(UNIid)未启动” UserInfo={NSLocalizedDescription=uni小程序(UNIid)未启动})

bug描述:

  1. App工程集成uni小程序sdk,版本号:4.15
  2. 将构建好的wgt文件存在工程目录下;
  3. 调用sdk DCUniMPSDKEngine.installUniMPResource api安装wgt,回调成功
  4. 调用sdk DCUniMPSDKEngine.openUniMP,打开小程序,回调失败
  5. 打印错误描述:Optional(Error Domain=DCUniMPErrorDomain Code=-3001 “uni小程序(UNIid)未启动” UserInfo={NSLocalizedDescription=uni小程序(UNIid)未启动})
  6. 非必现问题,通过埋点收集统计,openUniMP调用,回调失败占比高达10%以上

3 回复

遇到同样问题,求官方解答


installUniMPResource 是异步执行,需要确保方法执行完成在调用 open

针对您提到的uni-app iOS小程序SDK中DCUniMPSDKEngine.openUniMP回调失败,错误代码为-3001,提示“uni小程序(__UNI__id)未启动”的问题,这通常意味着在尝试打开或操作一个uni小程序实例时,该实例尚未被正确初始化或启动。

以下是一个简化的代码示例,展示了如何在iOS项目中正确地初始化和启动一个uni小程序实例,以及如何处理可能的错误情况。请注意,实际项目中可能需要根据具体需求进行调整。

// 假设您已经在项目中集成了uni-app iOS小程序SDK

#import <DCUniMPSDK/DCUniMPSDK.h>

@interface YourViewController () <DCUniMPSDKEngineDelegate>

@property (nonatomic, strong) DCUniMPSDKEngine *uniMPSDKEngine;

@end

@implementation YourViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 初始化SDK引擎
    self.uniMPSDKEngine = [[DCUniMPSDKEngine alloc] initWithAppId:@"your_app_id" delegate:self];
    
    // 配置SDK(例如设置启动参数等,这里仅做示例)
    [self.uniMPSDKEngine configureWithLaunchOptions:@{}];
    
    // 尝试启动uni小程序
    [self.uniMPSDKEngine openUniMPWithCompletionHandler:^(BOOL success, NSError *error) {
        if (success) {
            NSLog(@"uni小程序启动成功");
        } else {
            NSLog(@"uni小程序启动失败: %@", error.localizedDescription);
            
            // 错误处理,针对-3001错误码,可以尝试重新初始化或检查配置
            if (error.code == -3001) {
                NSLog(@"错误码-3001: uni小程序未启动,检查初始化流程");
                // 可能需要重新初始化或检查appId等配置信息
            }
        }
    }];
}

// 实现代理方法(如果需要)
- (void)uniMPSDKEngine:(DCUniMPSDKEngine *)engine didFailWithError:(NSError *)error {
    NSLog(@"SDK引擎错误: %@", error.localizedDescription);
}

@end

在上述代码中,我们创建了一个DCUniMPSDKEngine实例,并尝试通过openUniMPWithCompletionHandler:方法启动uni小程序。在回调块中,我们检查了操作是否成功,并针对失败情况(特别是错误码-3001)进行了日志记录。

请确保在调用openUniMPWithCompletionHandler:之前,SDK已经被正确配置和初始化。此外,检查appId是否正确无误,以及是否有其他配置或初始化步骤被遗漏。如果问题依旧存在,建议查阅uni-app官方文档或联系技术支持获取更详细的帮助。

回到顶部