Загрузка камеры ngCordova на Amazon S3

Я пытаюсь загрузить изображение, снятое с камеры iOS в ngCordova, в корзину на Amazon S3. У меня нет возможности отлаживать этот код. Я не уверен, что у меня проблема с S3 или моей камерой. Есть ли способ отладить приложение ionic/ngCordova, работающее на устройстве?

.controller('AddMediaCtrl', function($scope, $cordovaCamera) {

  //////////////////////////////////////////////////////////
  //                     AMAZON S3                       //
  ////////////////////////////////////////////////////////
    $scope.creds = {
      bucket: 'bucket_name',
      access_key: '*************',
      secret_key: '*************'
    }

    var bucket = new AWS.S3({params: {Bucket: $scope.creds.bucket }});
    AWS.config.update({accessKeyId: $scope.creds.access_key, secretAccessKey: $scope.creds.secret_key});
    AWS.config.region = 'us-east-1';

    var upload = function(file){

      results.innerHTML = '';

      var params = {Key: file.name, ContentType: file.type, Body: file};
      bucket.upload(params, function (err, data) {
        console.log(err);
      });
    }




   //////////////////////////////////////////////////////////
   //                     CAMERA                          //
   ////////////////////////////////////////////////////////
   $scope.images = [];
    var image = {}
   $scope.addImage = function() {
    // 2
    var options = {
      destinationType : Camera.DestinationType.FILE_URI,
      sourceType : Camera.PictureSourceType.CAMERA, // Camera.PictureSourceType.PHOTOLIBRARY
      allowEdit : true,
      encodingType: Camera.EncodingType.JPEG,
      popoverOptions: CameraPopoverOptions,
      saveToPhotoAlbum: true
    };

    // 3
    $cordovaCamera.getPicture(options).then(function(imageData) {

    // 4
    image.data = imageData;
    image.type = 'image/jpeg'

      onImageSuccess(imageData);

      function onImageSuccess(fileURI) {
        createFileEntry(fileURI);
      }

      function createFileEntry(fileURI) {
        window.resolveLocalFileSystemURL(fileURI, copyFile, fail);
      }

      // 5
      function copyFile(fileEntry) {
        var name = fileEntry.fullPath.substr(fileEntry.fullPath.lastIndexOf('/') + 1);
        var newName = makeid() + name;
        image.name = newName

        window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(fileSystem2) {
        fileEntry.copyTo(
          fileSystem2,
          newName,
          onCopySuccess,
          fail
        );
        },
        fail);
        //upload to S3
        upload(image);
      }

      // 6
      function onCopySuccess(entry) {
        $scope.$apply(function () {
          $scope.images.push(entry.nativeURL);
        });
      }

      function fail(error) {
        console.log("fail: " + error.code);
      }

      function makeid() {
        var text = "";
        var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

        for (var i=0; i < 5; i++) {
          text += possible.charAt(Math.floor(Math.random() * possible.length));
        }
        return text;
      }

      }, function(err) {
        console.log(err);
    });
  }




})

person Brando    schedule 13.05.2015    source источник
comment
Да, вы можете просматривать журнал отладки ваших приложений Cordova. Используйте ADB для просмотра журнала отладки, используя: adb logcat CordovaLog:D *:S в CLI. Кроме того, вы можете использовать средство Chrome для удаленной отладки WebView, если у вас есть устройство с Android 4.4+ (Kitkat или выше) — developer.chrome.com/devtools/docs/remote-debugging   -  person Keval    schedule 13.05.2015


Ответы (3)


Вы можете использовать Intel XDK для отладки на устройстве. Это лучший способ отладки гибридных приложений на устройстве, который я нашел. установить Intel XDK:https://software.intel.com/en-us/html5/tools, добавьте свой проект, затем вверху щелкните вкладку отладки. он расскажет вам, как подключить ваше устройство. Запустите отладчик, он работает как шарм.

person Jess Patton    schedule 13.05.2015
comment
вы также можете отлаживать код с помощью эмулятора устройства. Он также будет эмулировать камеру ngCordova для тестирования. Я использовал его сам, и он отлично работает. - person Jess Patton; 13.05.2015

Отвечая на ваш вопрос, есть ли способ отладить приложение на устройстве:

Самый простой способ сделать это — запустить следующую команду:

ionic run ios -l -c -s

Где аргументы -l -c -s означают:

  • -livereload Динамическая перезагрузка файлов разработки приложения с устройства
  • -consolelogs Распечатать журналы консоли приложения в Ionic CLI
  • -serverlogs Распечатать журналы сервера разработки в Ionic CLI

Это покажет вам все типы сообщений: ошибки, отладки и ваши сообщения console.logs в консоли в реальном времени!

person dzonatan    schedule 13.05.2015

Для отладки на устройстве рекомендую этот софт. Правда очень помогает и можно посмотреть как ведет себя ваше приложение внутри физического устройства. HTML, CSS, функциональность и т.д.

GapDebug

person NHTorres    schedule 19.05.2015