cordova-плагин-камера не работает в IOS

#ionic-framework #cordova-plugins #ngcordova

#ionic-framework #cordova-плагины #ngcordova

Вопрос:

Я разрабатываю гибридное приложение для Android и для IOS с использованием ionic.

При открытии камеры с Android работает отлично, но я не могу открыть камеру с устройства IOS.

Я устанавливаю соответствующий плагин для этого

cordova plugin add cordova-plugin-camera .

затем я добавил ng-cordova.js в index.html перед cordova.js строкой.

Также в 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 при открытии камеры.

Комментарии:

1. Дважды проверьте, установлен ли плагин для iOS. Я уверен, что у вас есть. Но убедитесь, прежде чем двигаться дальше.

Ответ №1:

@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 возвращает строку в кодировке Base64. Итак, чтобы установить его в качестве источника изображения, вам нужно добавить ImageData с 'data:image/jpeg;base64,' .