cordova-plugin-camera 在 IOS 中不工作

cordova-plugin-camera not working in IOS

我正在使用 ionic 为 Android 和 IOS 开发混合应用程序。

虽然从 Android 打开相机工作正常,但我无法从 IOS 设备打开相机。

我为此安装了相应的插件

cordova plugin add cordova-plugin-camera.

接下来我在 cordova.js 行之前将 ng-cordova.js 添加到 index.html 中。

也在 app.js 我包括 angular.module('starter', ['ionic', 'ngCordova']

在Controller.js中添加了$cordovaCamera 我的代码为

navigator.camera.getPicture(onSuccess,onFail, {
                      quality:90
                      destinationType:Camera.DestinationType.DATA_URL,
                      sourceType:Camera.PictureSourceType.CAMERA,
                      allowEdit:false,
                      encodingType:Camera.EncodingType.JPEG,
                      popoverOptions:CameraPopoverOptions,
                      saveToPhotoAlbum:true,
                      correctOrientation:true
                      })

            function onSuccess(imageURI){
                $rootScope.$broadcast("ShowAttachmentModal",imageURI);
            }
            function onSuccess(message){
                alert('Failed'+message);
            }

此代码在 Android 中完美运行,但在 IOS 中打开相机时无法运行。

@MartinP,而不是正在弃用的 ngCordova,看看您是否可以使用替代库 Ionic-Natve (http://ionicframework.com/docs/v2/native/camera/)。

然后试试这个代码。

  function takePicture() {
      var opts = {
        quality: 90,
        encodingType: $cordovaCamera.EncodingType.JPEG,
        destinationType: $cordovaCamera.DestinationType.DATA_URL,
        correctOrientation: true,
        allowEdit: true,
        targetWidth: 300,
        targetHeight: 300
      };

      $cordovaCamera.getPicture(opts).then(function (imageData) {
        $rootScope.$broadcast("ShowAttachmentModal",imageData);;
      }, function (err) {
        $log.error(err);
      });
    }

Cordova插件同理。您需要将 $cordovaCamera 注入您的控制器。一旦成功,您就可以使用这些选项了。您可能知道,DATA_URL 选项 returns 是一个 Base64 编码的字符串。因此,要将其设置为图像源,您需要在 imageData 前面加上 'data:image/jpeg;base64,'.