2016-05-03 10 views
1

Wir arbeiten an einem iOS-Projekt in Ionic. Wir möchten, dass das cordova screenshot plugin auf ionicview enter feuert (wenn Sie die App zum ersten Mal öffnen) und dann cordova file transfer verwenden, um den Screenshot zu senden.

Der folgende Code funktioniert nicht, wenn Sie die Ansicht zum ersten Mal aufrufen. Wenn wir die Ansicht verlassen und zurückkommen, sendet sie jedoch einen Screenshot.

Die erste logAction wird jedoch beim ersten Aufruf dieser Ansicht ausgelöst, während die zweite logAction nicht aktiv ist. Wenn Sie diese Ansicht zum zweiten Mal aufrufen, werden beide logActions ausgelöst.

Dies ist der Teil des Codes ich beziehe mich:

$scope.$on('$ionicView.enter', function() { 
    $scope.logAction({ 
     "Message": "Login screen succesfully entered", 
     "Succeeded": true, 
     "transaction": 1, 
     "Category": "Info", 
     "Device": 0, 
    }) 
    $cordovaScreenshot.capture().then(function(filepath){ 
    $scope.logAction({ 
     "Message": filepath, 
     "Succeeded": true, 
     "transaction": 1, 
     "Category": "Info", 
     "Device": 0, 
    }) 
    $cordovaScreenshot.send(filepath); 
    }); 
}); 

Dies ist die cordovaScreenshot Datei

angular.module('testScreenshots.services', []) 
.service('$cordovaScreenshot', ['$q',function ($q) { 
    return { 
     fileURL: "", 
     capture: function (filename, extension, quality) { 
      var randomNumber = Math.random(); 
      console.log("" + randomNumber); 
      filename = "testPicture" + randomNumber.toString(); 
      extension = extension || 'jpg'; 
      quality = quality || '100'; 

      var defer = $q.defer(); 


      navigator.screenshot.save(function (error, res){ 
       if (error) { 
        console.error(error); 
        defer.reject(error); 
       } else { 
        console.log('screenshot saved in: ', res.filePath); 
        this.fileURL = "file://" + res.filePath; 
        defer.resolve(res.filePath); 
        console.log("inside the save function: "+this.fileURL); 
       } 
      }, extension, quality, filename); 

      return defer.promise; 
     }, 


     send: function(filepath){ 

      var win = function (r) { 
      console.log("Code = " + r.responseCode); 
      console.log("Response = " + r.response); 
      console.log("Sent = " + r.bytesSent); 
      } 

      var fail = function (error) { 
      alert("An error has occurred: Code = " + error.code); 
      console.log("upload error source " + error.source); 
      console.log("upload error target " + error.target); 
      } 

      var options = new FileUploadOptions(); 
      options.fileKey = "file"; 
      options.fileName = filepath.substr(filepath.lastIndexOf('/') + 1); 
      options.mimeType = "multipart/form-data"; 
      options.chunkedMode = false; 
      options.headers = { 
      Connection: "close" 
      }; 

      var ft = new FileTransfer(); 
      ft.upload(filepath, encodeURI("http://192.168.6.165:8080//api/uploadpicture"), win, fail, options); 
     } 
    }; 
}]) 

Antwort

0

iOS Simulator wir auf dem Mac nutzen dieses Problem hatte. Nach dem Versuch, es auf einem Gerät auszuführen, hat sich das Problem nicht mehr auf uns ausgewirkt.

Dieses Problem scheint sich somit auf die Verwendung des iOS-Simulators zu beziehen.

Verwandte Themen