$cordovaCapture.captureVideo 在 iOS 10.1 上调用使 Cordova 应用程序崩溃
$cordovaCapture.captureVideo Call Crashes Cordova App on iOS 10.1
我有一个 Cordova 应用程序(为 Android 和 iOS 编写)在生产环境中运行良好,有相当数量的用户,包括在 iOS 10.0 上经过必要的安全保护后一两个月前调整。现在随着最近的 10.1 升级,(目前在 10.1.1 上测试)我发现尝试调用视频捕获功能会完全崩溃 Cordova,没有任何选项可以从 JS 角度进行调试。 Android 方面没有问题。这只是 iOS 的最新更新,没有任何代码或插件更新或更改。
我们将最新的 cordova-plugin-media-capture 插件 v1.4.0 与 ngCordova 一起使用。通过 $cordovaCapture.captureImage
调用此插件拍照在 iOS 10.1.1 中工作正常。它只是对 $cordovaCapture.captureVideo
的调用,它会立即使 Cordova 崩溃。我查看了 Xcode 以防有任何新的或异常的设置并且一切似乎都是正确的,因此欢迎任何解决此问题的建议。
早些时候(一两个月前)我们使用 cordova-plugin-settings-hook 插件解决了新的 iOS 10 权限问题 =33=] config.xml 中的设置(显示的片段):
<platform name="ios">
<config-file parent="NSLocationWhenInUseUsageDescription" platform="ios" target="*-Info.plist">
<string>Reason goes here...</string>
</config-file>
<config-file parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist">
<string>Reason goes here....</string>
</config-file>
<config-file parent="NSPhotoLibraryUsageDescription" platform="ios" target="*-Info.plist">
<string>Reason goes here...</string>
</config-file>
我使用 Xcode 确认了这些设置。我们实际调用时传入的参数如下:
$cordovaCapture.captureVideo
({
limit: 1, // how many clips to record (iOS must be 1)
duration: 300 // maximum length (in seconds) = 5 minutes
})
希望其他人设法解决了同样的问题并愿意分享解决方法。
您缺少录制视频时需要的 NSMicrophoneUsageDescription
。
奇怪的是,1.4.0版本的插件应该添加所有的UsageDescriptions,你不应该需要cordova-plugin-settings-hook,但由于某些原因,如果你需要添加它就不起作用了那个插件。
在一个只有 1.4.0 媒体插件的全新项目中,它按预期工作,没有崩溃。
在iOS 10 更新中,必须添加插件以及具有权限描述的变量。
在您的 config.xml of cordova 项目中使用以下代码。
<plugin name="cordova-plugin-media-capture" spec="1.4.0">
<variable name="CAMERA_USAGE_DESCRIPTION" value="To take videos"/>
<variable name="MICROPHONE_USAGE_DESCRIPTION" value="To record voice while taking videos"/>
<variable name="PHOTO_LIBRARY_USAGE_DESCRIPTION" value="To provide photo browsing."/>
</plugin>
这将解决问题。
参考 ios 怪癖:https://github.com/apache/cordova-plugin-media-capture
我有一个 Cordova 应用程序(为 Android 和 iOS 编写)在生产环境中运行良好,有相当数量的用户,包括在 iOS 10.0 上经过必要的安全保护后一两个月前调整。现在随着最近的 10.1 升级,(目前在 10.1.1 上测试)我发现尝试调用视频捕获功能会完全崩溃 Cordova,没有任何选项可以从 JS 角度进行调试。 Android 方面没有问题。这只是 iOS 的最新更新,没有任何代码或插件更新或更改。
我们将最新的 cordova-plugin-media-capture 插件 v1.4.0 与 ngCordova 一起使用。通过 $cordovaCapture.captureImage
调用此插件拍照在 iOS 10.1.1 中工作正常。它只是对 $cordovaCapture.captureVideo
的调用,它会立即使 Cordova 崩溃。我查看了 Xcode 以防有任何新的或异常的设置并且一切似乎都是正确的,因此欢迎任何解决此问题的建议。
早些时候(一两个月前)我们使用 cordova-plugin-settings-hook 插件解决了新的 iOS 10 权限问题 =33=] config.xml 中的设置(显示的片段):
<platform name="ios">
<config-file parent="NSLocationWhenInUseUsageDescription" platform="ios" target="*-Info.plist">
<string>Reason goes here...</string>
</config-file>
<config-file parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist">
<string>Reason goes here....</string>
</config-file>
<config-file parent="NSPhotoLibraryUsageDescription" platform="ios" target="*-Info.plist">
<string>Reason goes here...</string>
</config-file>
我使用 Xcode 确认了这些设置。我们实际调用时传入的参数如下:
$cordovaCapture.captureVideo
({
limit: 1, // how many clips to record (iOS must be 1)
duration: 300 // maximum length (in seconds) = 5 minutes
})
希望其他人设法解决了同样的问题并愿意分享解决方法。
您缺少录制视频时需要的 NSMicrophoneUsageDescription
。
奇怪的是,1.4.0版本的插件应该添加所有的UsageDescriptions,你不应该需要cordova-plugin-settings-hook,但由于某些原因,如果你需要添加它就不起作用了那个插件。
在一个只有 1.4.0 媒体插件的全新项目中,它按预期工作,没有崩溃。
在iOS 10 更新中,必须添加插件以及具有权限描述的变量。 在您的 config.xml of cordova 项目中使用以下代码。
<plugin name="cordova-plugin-media-capture" spec="1.4.0">
<variable name="CAMERA_USAGE_DESCRIPTION" value="To take videos"/>
<variable name="MICROPHONE_USAGE_DESCRIPTION" value="To record voice while taking videos"/>
<variable name="PHOTO_LIBRARY_USAGE_DESCRIPTION" value="To provide photo browsing."/>
</plugin>
这将解决问题。
参考 ios 怪癖:https://github.com/apache/cordova-plugin-media-capture