uni-app实现ios app getUserMedia不弹出权限提示但闪退

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

uni-app实现ios app getUserMedia不弹出权限提示但闪退

问题描述

想要在uni app vue里面实现

ios app getUserMedia不弹出权限提示(getUserMediarenderjs里面调用)

代码如下

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都会弹出使用摄像头,麦克风的提示。


9 回复

你是要调用摄像头吗?为什么不用原生的方式来调? 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开发者支持以获取帮助。权限问题通常与系统和应用配置密切相关,确保所有配置都正确无误是关键。

回到顶部