A: ⚠️ 使用 Xcode15 运行在 iOS14 及以下低版本的设备时,打开小程序时可能会出现莫名其妙的崩溃问题(也可能是莫名其妙的报错),这是因为新版本 Xcode 编译器对低版本的iOS兼容性存在问题,需要在工程的 build setting -> Other linker flags中添加 -ld64,然后重新运行即可;
A:请参考解决方法 点击查看详情
A: 请参考这个 教程 将相关模块的依赖文件集成到原生工程中即可;
A:如果您原生工程依赖的三方库与SDK依赖的三方库冲突
A:为了解决部分功能库引用了一些第三方库 可能与开发者项目的第三方库重复引用
我们从3.0.7
后 对于部分库和资源进行了调整。
如果开发者原来工程对资源文件有引用,现在找不到资源文件,请参考下边列表(文件路径去离线SDK下的 SDK/Bundles/
下寻找)
旧资源 | 新资源 |
---|---|
TZImagePickerController.bundle | DCTZImagePickerController.bundle |
SVProgressHUD.bundle | DCSVProgressHUD.bundle |
如果开发者原来工程对库的头文件有引用,现在找不到头文件,请参考下边列表(文件路径去离线SDK下的 SDK/inc/
下寻找)
TZImagePickerController
-> DCTZImagePickerController
旧头文件 | 新头文件 |
---|---|
TZAssetCell.h | DCTZAssetCell.h |
TZAssetModel.h | DCTZAssetModel.h |
TZGifPhotoPreviewController.h | DCTZGifPhotoPreviewController.h |
TZImageCropManager.h | DCTZImageCropManager.h |
TZImageManager.h | DCTZImageManager.h |
TZImagePickerController.h | DCTZImagePickerController.h |
TZLocationManager.h | DCTZLocationManager.h |
TZPhotoPickerController.h | DCTZPhotoPickerController.h |
TZPhotoPreviewCell.h | DCTZPhotoPreviewCell.h |
TZPhotoPreviewController.h | DCTZPhotoPreviewController.h |
TZProgressView.h | DCTZProgressView.h |
TZVideoPlayerController.h | DCTZVideoPlayerController.h |
UIViewControllerHUD.h | DCUIViewControllerHUD.h |
NSBundle+TZImagePicker.h | NSBundle+DCTZImagePicker.h |
UIView+Layout.h | UIView+DCLayout.h |
SVProgressHUD
-> DCSVProgressHUD
旧头文件 | 新头文件 |
---|---|
SVIndefiniteAnimatedView.h | DCSVIndefiniteAnimatedView.h |
SVProgressAnimatedView.h | DCSVProgressAnimatedView.h |
SVProgressHUD.h | DCSVProgressHUD.h |
SVRadialGradientLayer.h | DCSVRadialGradientLayer.h |
SocketRoket
-> DCSocketRoket
旧头文件 | 新头文件 |
---|---|
SRWebSocket.h | DCSRWebSocket.h |
集成uni小程序SDK后,打开小程序首页时页面加载非常慢,并且控制台会报Main Thread Checker ...
的警告,如下图所示
A: 这个警告是 Xcode 的线程检查机制,由于 SDK 内部在子线程中获取了一些UI的属性值,(注意仅仅是获取UI的属性值,并没有在子线程修改UI的属性),所以会有这个警告,您也可以再 Xcode 中同时按下 command + shift + <
打开设置页面,将 Main Thread Checker 选项取消勾选,然后就不会有这个警告了,如下图所示
A: 宿主打开小程序实现方式是:获取当前宿主显示的 UIViewController
,通过present
或push
的方式打开小程序对应的 DCUniMPViewController
,在小程序打开的情况下如果想跳转到原生其他UIViewController
可以通过下面的方法获取到DCUniMPViewController
,然后在跳转其他UIViewController
页面
/// 小程序打开状态,调用此方法可获取小程序对应的 DCUniMPViewController 实例
UIViewController *uniMPVC = [DCUniMPSDKEngine getUniMPViewController];
A: 如果宿主底层是 TabBar
从首页以 push
方式打开小程序页面时想隐藏 TabBar,可以通过自定义 UINavigationController
类中复写下面的方法来实现 (如果您没有自定义的UINavigationController
可以新建一个便于统一管理导航栏的逻辑)
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
// 如果非首页就隐藏TabBar,或可判断 viewController 类名来决定是否隐藏 TabBar
if (self.childViewControllers.count >= 1){
viewController.hidesBottomBarWhenPushed = YES;
}
[super pushViewController:viewController animated:animated];
}
A: push 方式打开小程序时 由于小程序页面隐藏了导航栏,默认的返回手势会失效,小程序页面会设置 navigationController.interactivePopGestureRecognizer.delegate = self; 让手势生效,但是这样设置后会带来一个问题就是在 rootViewController 页面触发手势后,会导致再次 push 页面的时候无响应,解决方法就是需要在 导航控制器的 rootViewController 页面添加下面的代码控制 interactivePopGestureRecognizer.enabled
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
A:调用releaseAppResourceToRunPathWithAppid:
释放wgt资源是通过调用 SSZipArchive 库(编译在 libcoreSupport.a 库中)的方法将 wgt 资源解压到运行路径中,如果您的项目按照文档集成 UniMPSDK 基础库后 wgt 资源释放失败可以尝试将 libcoreSupport.a 库移除,然后将 SSZipArchive
库添加到工程
1.如果工程配置了 CocoaPods,可使用 CocoaPods 集成,编辑 podfile 文件,添加下面一行,在执行 pod install
pod 'SSZipArchive'
2.源码方式集成
直接将 SSZipArchive 库的源码添加到工程,注意 SSZipArchive 库需要在工程的 Build Settings -> Preprocessor Macros -> Debug 和 Release
中分别添加 HAVE_INTTYPES_H
,HAVE_PKCRYPT
,HAVE_STDINT_H
,HAVE_WZAES
,HAVE_ZLIB
这5个宏定义(注意:原有的配置项下不要删除,点击+号添加),如下图所示,然后重新编译运行。