uni-app实现ios app getUserMedia不弹出权限提示但闪退
uni-app实现ios app getUserMedia不弹出权限提示但闪退
问题描述
想要在uni app vue里面实现
ios app getUserMedia
不弹出权限提示(getUserMedia
在renderjs
里面调用)
代码如下
let webview = this.$scope.$getAppWebview().nativeInstanceObject();
var wKUIDelegate = plus.ios.implements("WKUIDelegate", {
"webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:":
function(webView,origin,frame,type,decisionHandler) {
decisionHandler(1);
}
});
webview.plusSetAttribute('UIDelegate',wKUIDelegate);
添加此代码后,调用getUserMedia()
,app闪退,不添加,没问题,但每次进入页面getUserMedia
都会弹出使用摄像头,麦克风的提示。
你是要调用摄像头吗?为什么不用原生的方式来调?
wkwebview限制很多。
如果需要实人认证,那官方有实人认证。
用webrtc做的视频通话,所以需要调用摄像头
我看uni app里已经给wkwebview设置了UIDelegate,但没有实现webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler: 这个方法 不知道官方能不能解决一下,本地的这种文件,这个方法里如果判断出app有权限,直接不弹授权提示了,或者给一些参数我们可以控制
现在视频聊天,每次进入页面都弹出提示,要使用设置头和麦克风,这个用户体验太差了
我也看到也有好几个人在这边提出过一样的需求,uni app要支持webrtc的话,这个绕不过去啊
mark,我也是这个思路,但是不知道怎么正确实现wKUIDelegate
石沉大海,没有成功
找人有尝解决了,需要的话可以+Q1343066628
在开发基于uni-app的iOS应用时,如果遇到getUserMedia
不弹出权限提示但应用闪退的问题,这通常与iOS系统的权限管理和WebView的兼容性有关。在iOS上,访问摄像头或麦克风等敏感资源时,系统必须弹出权限请求对话框,用户授权后才能使用。如果未出现权限提示且应用闪退,可能是因为权限请求未正确发出,或者WebView未正确处理权限请求。
以下是一些可能的解决方案和代码示例,这些示例展示了如何在uni-app中正确请求和使用getUserMedia
,同时确保在iOS上能正确弹出权限请求。
1. 确保权限请求代码正确
在uni-app中,使用getUserMedia
通常通过navigator.mediaDevices.getUserMedia
进行。确保你的代码中有正确的权限请求逻辑。
// 示例代码:请求摄像头权限
navigator.mediaDevices.getUserMedia({ video: true })
.then(stream => {
// 成功获取媒体流
const video = document.querySelector('video');
video.srcObject = stream;
video.play();
})
.catch(error => {
// 处理错误,比如权限被拒绝
console.error('获取媒体设备失败:', error);
// 可以在这里提示用户去设置中开启权限
});
2. 检查iOS权限设置
确保在iOS的Info.plist
文件中已经添加了必要的权限声明。对于摄像头和麦克风,需要添加以下键:
<key>NSCameraUsageDescription</key>
<string>应用需要访问您的相机以拍照或录像</string>
<key>NSMicrophoneUsageDescription</key>
<string>应用需要访问您的麦克风以录音</string>
3. WebView兼容性处理
如果你使用的是嵌入式的WebView(如WKWebView),确保WebView的配置允许访问摄像头和麦克风。在iOS项目中,可能需要配置WKWebViewConfiguration
以允许这些权限。
4. 调试和错误处理
使用Xcode的调试工具来观察应用崩溃时的日志输出,这可以帮助你定位问题。特别是注意与权限请求相关的错误或警告。
5. 更新uni-app和依赖
确保你的uni-app框架和所有相关依赖都是最新版本,因为旧版本可能包含未修复的bug。
结论
如果上述步骤都无法解决问题,可能需要更深入地检查iOS的系统日志或联系Apple开发者支持以获取帮助。权限问题通常与系统和应用配置密切相关,确保所有配置都正确无误是关键。