Cordova Ios 应用程序在相机访问时崩溃

Posted

技术标签:

【中文标题】Cordova Ios 应用程序在相机访问时崩溃【英文标题】:Cordova Ios App crashes on Camera Access 【发布时间】:2018-04-16 05:37:06 【问题描述】:

我正在为 IOs 使用 JQuery 在 Windows 中创建一个 Cordova 应用程序(由于 Mac 不可用),并在 Phonegap 云上进行远程构建。但问题是当我尝试通过 cordova-plugin-camera 从我的 iPhone(Os v-11.3) 的相机获取图像时,应用程序崩溃了。

config.xml:

<plugin name="cordova-plugin-camera" spec="~2.1.1">
        <variable name="CAMERA_USAGE_DESCRIPTION" value="App want to access your camera" />
        <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="App want to access your camera to upload images" />

 </plugin>

 <platform name="ios">
        <icon  platform="ios" src="www/res/icon/ios/icon.png"  />
........
........
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
              <edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge">
                <string>need camera access to take pictures</string>
            </edit-config>
            <edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="merge">
                <string>need photo library access to get pictures from there</string>
            </edit-config>
            <edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge">
                <string>need location access to find things nearby</string>
            </edit-config>
            <edit-config target="NSPhotoLibraryAddUsageDescription" file="*-Info.plist" mode="merge">
                <string>need photo library access to save pictures there</string>
            </edit-config>

    </platform>

JS:

 function accessCamera()
        var options =  setOptions(Camera.PictureSourceType.CAMERA);
        getPic(options);
    
function setOptions(srcType) 
        var options = 
            // Some common settings are 20, 50, and 100
            quality: 50,
            destinationType: Camera.DestinationType.FILE_URI,
            // In this app, dynamically set the picture source, Camera or photo gallery
            sourceType: srcType,
            encodingType: Camera.EncodingType.JPEG,
            mediaType: Camera.MediaType.PICTURE,
            allowEdit: true,
            correctOrientation: true  //Corrects android orientation quirks
        
        return options;
    



  function getPic(options)
        console.log(Camera.PictureSourceType);
        console.log("SourceTye: "+options.sourceType);
        try
            navigator.camera.getPicture(function cameraSuccess(imageUri) 
               // $('#main_img').attr('src', imageUri);
               setAndUploadPic(imageUri);

            , function cameraError(error) 
            console.debug("Unable to obtain picture: " + error, "app");

            , options);
        catch(err)
           // $('#exp').text(err.message);
        

    

但只要我访问相机,我的应用就会崩溃。

【问题讨论】:

【参考方案1】:

如果您在 xcode 上的模拟器中运行并查看控制台,您可以看到发生了什么。根据我的经验,问题与 NsCameraUsageDescription 的 plist 设置有关,在控制台中存在应用崩溃时的特定错误。 尝试将此行添加到相机插件的 plugin.xml 中,而不是上面发布的:

 <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
     <string>For take user photo and upload photos.</string>
 </config-file>

 <preference name="PHOTOLIBRARY_USAGE_DESCRIPTION" default=" " />
 <config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
     <string>For upload photos.</string>
 </config-file>

 <config-file target="*-Info.plist" parent="NSLocationWhenInUseUsageDescription">
     <string>need location access to find things nearby</string>
 </config-file>

【讨论】:

是的,你对模拟器的看法是对的,但我最后没有那个,所以在调试它时遇到了困难。但根据他们提到的特定插件的文档,这样做【参考方案2】:

请删除特定插件的更新版本并删除版本号

<plugin name="cordova-plugin-camera">

它将运行文件。您的插件导致问题。

【讨论】:

【参考方案3】:

请更新您的相机插件并检查

<plugin name="cordova-plugin-camera" spec="2.4.1" />

【讨论】:

以上是关于Cordova Ios 应用程序在相机访问时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Android Cordova 5.0+ 相机崩溃

Cordova 插件电话号码在 iOS 最新版本上崩溃

Cordova 相机插件 IOS 11 无法从库中选择图像

通过cordova访问android/ios/win设备摄像头

iOS 4.2 相机和相册问题

iOS Cordova 应用程序在恢复时崩溃