我正在开发一款带有Ionic 2的应用程序,我遇到了@ionic-native/Camera
的问题。我在Upload.ts
let loader = this.loading.create({
content: 'Carregando video....'
});
loader.present().then(() => {
const options: CameraOptions = {
quality: 100,
destinationType: this.camera.DestinationType.FILE_URI,
sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
mediaType: this.camera.MediaType.VIDEO,
}
this.camera.getPicture(options).then((videoData) => {
this.uploadForm.controls['file'].setValue(videoData)
loader.dismiss();
}, (err) => {
console.log(err);
});
});
此代码在Android中运行良好,但是当我运行ionic cordova run ios -lc
时,承诺this.camera.getPicture(options)
永远不会被解析,因此加载器会一直运行。
提前致谢!
答案 0 :(得分:1)
所以,我发现了问题。第一件事是本机组件错误-l (--livereload)
。我不知道如何解释原因,但我从Ionic Worldwide获得了这些信息。 Ionic Team的一名成员说:
"live-reload on a device can cause issues with plugins and file system".
所以我用这个视频来了解如何使用iOS模拟器和Safari对APP进行debbug。
https://www.youtube.com/watch?v=Aob749bkoLY
视频的简短说明:使用iOS模拟器时,您可以访问菜单Developer > Emulator > <App Name>
。将打开一个包含检查器工具的新窗口,并且此窗口中将显示来自模拟器的日志。
我发现视频网址不正确。之前,要与Android兼容,我这个代码负责在系统中找到视频指针并发送到服务器:
filePath = 'file:///' + this.uploadForm.controls['file'].value;
但是,iOS文件选择器已经有一个“file:///”前缀。因此,为它添加前缀使它错了。所以我将代码更新为:
if (this.platform.is('android')) {
filePath = 'file:///' + this.uploadForm.controls['file'].value;
} else {
filePath = this.uploadForm.controls['file'].value;
}
这解决了这个问题。