uni-app iOS小程序SDK DCUniMPSDKEngine.openUniMP回调失败 Code=-3001 "uni小程序(__UNI__id)未启动"
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)
}
}
操作步骤:
- App工程集成uni小程序sdk,版本号:4.15
- 将构建好的wgt文件存在工程目录下;
- 调用sdk DCUniMPSDKEngine.installUniMPResource api安装wgt,回调成功
- 调用sdk DCUniMPSDKEngine.openUniMP,打开小程序
预期结果:
调用sdk DCUniMPSDKEngine.openUniMP,打开小程序,回调成功,跳转小程序页面
实际结果:
调用sdk DCUniMPSDKEngine.openUniMP,打开小程序,回调失败,错误日志:Optional(Error Domain=DCUniMPErrorDomain Code=-3001 “uni小程序(UNIid)未启动” UserInfo={NSLocalizedDescription=uni小程序(UNIid)未启动})
bug描述:
- App工程集成uni小程序sdk,版本号:4.15
- 将构建好的wgt文件存在工程目录下;
- 调用sdk DCUniMPSDKEngine.installUniMPResource api安装wgt,回调成功
- 调用sdk DCUniMPSDKEngine.openUniMP,打开小程序,回调失败
- 打印错误描述:Optional(Error Domain=DCUniMPErrorDomain Code=-3001 “uni小程序(UNIid)未启动” UserInfo={NSLocalizedDescription=uni小程序(UNIid)未启动})
- 非必现问题,通过埋点收集统计,openUniMP调用,回调失败占比高达10%以上
遇到同样问题,求官方解答
针对您提到的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官方文档或联系技术支持获取更详细的帮助。