uni-app ios app基座 执行 plus.video.createLivePusher 闪退
uni-app ios app基座 执行 plus.video.createLivePusher 闪退
产品分类
HTML5+
示例代码:
var player = null;
// 创建视频播放控件
function createVideoPlayer() {
if(!player){
player = plus.video.createVideoPlayer('videoplayer', {
src:'rtmp://live.hkstv.hk.lxdns.com/live/hks',
top:'100px',
left:'0px',
width: '100%',
height: '200px',
position: 'static'
});
plus.webview.currentWebview().append(player);
}
}
操作步骤:
运行到手机或模拟器 -> 运行到ios app基座 执行以下代码:
var player = null;
// 创建视频播放控件
function createVideoPlayer() {
if(!player){
player = plus.video.createVideoPlayer('videoplayer', {
src:'rtmp://live.hkstv.hk.lxdns.com/live/hks',
top:'100px',
left:'0px',
width: '100%',
height: '200px',
position: 'static'
});
plus.webview.currentWebview().append(player);
}
}
预期结果:
创建一个摄像头预览画面
实际结果:
基座闪退
bug描述:
在ios app基座执行官方文档的实例代码就会闪退
官方文档链接
相关链接:
开发环境信息
项目 | 详情 |
---|---|
HBuilderX版本号 | 4.45 |
手机系统 | iOS |
手机系统版本号 | iOS 18 |
手机厂商 | 苹果 |
手机机型 | iPhone 11 |
打包方式 | 离线 |
9 回复
有没有制作自定义基座?注意需要在manifest.json的“安卓/iOS模块配置”中勾选“LivePusher(直播推流)”模块。
运行时选择了:使用标准基座运行,LivePusher已勾选,这个项目以前运行正常
是否与这个bug相关?: https://ask.dcloud.net.cn/question/204388
回复 JSRTSDF: 在其它版本ios设备是否正常?
回复 DCloud_App_Array: 现在没有其它ios设备,无法测试
同样的手机和ios系统: HBuilder X 3.7.8.20230323 默认基座运行正常 HBuilder X 4.45 默认基座闪退
回复 DCloud_App_Array: iPhone7 iOS 14.1 运行正常
在处理 uni-app
中 plus.video.createLivePusher
在 iOS 基座上导致的闪退问题时,首先需要确保几个关键点:
- 权限配置:确保 iOS 项目中已正确配置相机和麦克风权限。
- API调用时机:
plus.video.createLivePusher
需要在合适的生命周期内调用,例如在onPlusReady
事件后。 - SDK版本:确保使用的 HBuilderX 和相关 SDK 是最新版本,因为老版本可能存在已知的bug。
以下是一个简化的代码示例,展示如何在 uni-app
中安全地创建直播推流对象,并处理可能的错误情况,以避免闪退:
// main.js 或页面脚本中
export default {
onLaunch() {
// 监听plus ready事件
if (window.plus) {
this.initLivePusher();
} else {
document.addEventListener('plusready', this.initLivePusher, false);
}
},
methods: {
initLivePusher() {
try {
// 创建直播推流对象
const livePusher = plus.video.createLivePusher({
top: '0px',
left: '0px',
width: '100%',
height: '100%',
position: 'absolute',
audio: true,
video: true,
beauty: true // 是否开启美颜,根据需求设置
}, (e) => {
if (e.code === 0) {
console.log('LivePusher创建成功');
// 可以在这里继续配置livePusher,如设置推流地址等
} else {
console.error('LivePusher创建失败:', e.message);
}
});
} catch (error) {
// 捕获创建过程中可能抛出的异常
console.error('创建LivePusher时发生错误:', error);
}
}
}
}
注意事项:
- 异常处理:使用
try...catch
捕获可能的异常,防止未捕获的异常导致应用崩溃。 - 日志记录:在关键步骤添加日志记录,有助于调试和定位问题。
- 权限请求:在真实应用中,需要在调用
createLivePusher
前检查并请求相机和麦克风权限。iOS上通常需要在Info.plist
中声明相关权限,并在代码中动态请求(如果适用)。
如果上述代码仍然导致闪退,建议:
- 查看Xcode的崩溃日志,获取更详细的错误信息。
- 确保所有依赖库都是最新的,特别是与视频处理相关的库。
- 在开发者社区或官方论坛搜索是否有其他开发者遇到并解决了类似问题。