正如标题所说,从Safari中导航到应用程序URL时,相机在PWA中工作正常。
但是在使用"添加到主屏幕"创建桌面图标并从新图标启动PWA后,PWA在各个方面都按预期工作,但相机无法打开。
我还尝试在设备上使用 Chrome 浏览器,但不幸的是,通过 URL 启动时,相机甚至无法从 PWA 中打开。
从桌面启动PWA时,我假设iOS将使用Safari,而不是Chrome或其他浏览器。我错了吗?
但可以肯定的是,我已经卸载了Chrome,遗憾的是结果相同,即通过Safari中的URL,PWA可以正常打开相机。通过桌面图标,没有雪茄。
使用以下说明实现:https://capacitor.ionicframework.com/docs/guides/ionic-framework-app
这是相关的 html 文件:
<p>
Click the Camera button at the bottom of the page to launch the device's
camera.
</p>
<ion-content>
<img [src]="photo" *ngIf="photo">
<ion-fab vertical="bottom" horizontal="center" slot="fixed">
<ion-fab-button (click)="takePicture()">
<ion-icon name="camera"></ion-icon>
</ion-fab-button>
</ion-fab>
</ion-content>
这是相关的组件文件:
import { Component, OnInit } from '@angular/core';
import { Plugins, CameraResultType, CameraSource } from '@capacitor/core';
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
@Component({
selector: 'camera',
templateUrl: './camera.component.html',
styleUrls: ['./camera.component.scss'],
})
export class CameraComponent implements OnInit {
photo: SafeResourceUrl;
constructor(private sanitizer: DomSanitizer) { }
ngOnInit() {}
async takePicture() {
const image = await Plugins.Camera.getPhoto({
quality: 100,
allowEditing: false,
resultType: CameraResultType.DataUrl,
source: CameraSource.Camera
});
this.photo = this.sanitizer.bypassSecurityTrustResourceUrl(image && (image.dataUrl));
}
}
有什么建议吗?
经过进一步挖掘,我找到了一个相关的SO帖子:如何在iOS11主屏幕网络应用程序上访问相机?
看起来这是iOS和主页PWA的已知问题,目前Ionic + Capacitor无法解决。谢谢苹果。:(