我正在尝试将从ngCordova中的iOS相机拍摄的图像上传到Amazon S3上的存储桶。我无法调试此代码。我不确定我的问题是S3还是我的相机。有没有办法调试在设备上运行的离子/ 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);
});
}
})
答案 0 :(得分:0)
您可以使用intel xdk进行设备调试。这是在我找到的混合应用程序的设备上进行调试的最佳方法。安装intel xdk:https://software.intel.com/en-us/html5/tools,添加项目,然后在顶部单击debugg选项卡。它会告诉您连接设备的步骤。运行调试器,它就像一个魅力。
答案 1 :(得分:0)
如果有方法在设备上调试应用,请回答您的问题:
最简单的方法是运行以下命令:
ionic run ios -l -c -s
参数 -l </ strong> -c -s 代表:
这将在控制台实时显示所有类型的消息:错误,调试和console.logs消息!
答案 2 :(得分:0)
要在设备上进行调试,我推荐使用此软件。事实很有帮助,您可以看到应用程序在物理设备中的行为方式。 Html,CSS,功能等。