[解決済み] iOS11のホーム画面のWebアプリでカメラにアクセスするには?
質問
まとめ
iOS11 (パブリック リリース) のホーム画面 Web アプリから、WebRTC またはファイル入力のいずれかを使用して、カメラにアクセスできません。どうすればユーザーがカメラにアクセスし続けることができるでしょうか。
Web アプリのページを https で提供しています。
アップデート、4月
iOS 11.3 のパブリック リリースで問題が修正されたようで、ファイル入力カメラへのアクセスが再び動作するようになりました!
アップデート、3月
ここの人々が言ったように、Apple のドキュメントでは、Web アプリのカメラ機能は、サービス ワーカーとともに 11.3 で戻ってくると助言しています。 これは良いことですが、11.3GM で徹底的にテストできるようになるまで、もう一度インストールし直すかどうか、まだ決めかねています。
ソリューション、11月
私たちは Apple がこれを修正したいという希望を失い、前に進みました。 iOS の "ホーム画面に追加する" 機能を削除するように Web アプリを変更し、影響を受けるユーザーには以前のホーム画面アイコンを削除するように求めました。
12月6日更新
iOS 11.2 と iOS 11.1.2 では修正されません。
回避策、9 月 21 日
ウェブアプリの既存の顧客に尋ねることができるようです。
- iOS11 にアップグレードしないでください - 頑張ってください :)
- iOS のカメラで写真を撮って、ウェブアプリでそれを選択する。
- 次の ios ベータを待つ
- Safari のインブラウザ ページとして再インストールします (ATHS のロジックを削除した後)。
- Android に切り替える
ファイル入力
私たちの現在のプロダクション コードでは、iOS 10 およびそれ以前のバージョンで何年も問題なく動作していたファイル入力を使用しています。iOS11 では、Safari タブとして動作しますが、ホーム画面アプリからは動作しません。後者の場合、カメラが開かれ、黒い画面だけが表示され、それゆえ使用できません。
<meta name="apple-mobile-web-app-capable" content="yes">
...
<input type="file" accept="image/*">
WebRTC
iOS11 の Safari 11 では WebRTC メディア キャプチャ というのがあって、これは素晴らしい。
デスクトップとモバイルの通常のWebページで、navigator.mediaDevices.getUserMediaあたりを使ってカメラ画像をcanvasにキャプチャーすることができるのです。 サンプルコードはこちら .
iPadやiPhoneのホーム画面にページを追加する場合。
navigator.mediaDevices
は
undefined
になり、使えなくなります。
<meta name="apple-mobile-web-app-capable" content="yes">
...
// for some reason safari on mac can debug ios safari page but not ios home screen web apps
var d = 'typeof navigator : ' + typeof navigator; //object
d += 'typeof navigator.mediaDevices : ' + typeof navigator.mediaDevices; // undefined
// try alternates
d += 'typeof navigator.getUserMedia : ' + typeof navigator.getUserMedia; // undefined
d += 'typeof navigator.webkitGetUserMedia : ' + typeof navigator.webkitGetUserMedia; // undefined
status1.innerHTML = d;
どのように解決するのですか?
私たちもよく似た問題を抱えています。今のところ、私たちができた唯一の回避策は、Apple-mobile-web-app-capable" であるための meta タグを削除して、ユーザーが Safari でそれを開けるようにすることです。
関連
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
vue ディレクティブ v-html と v-text
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
[解決済み] Access-Control-Allow-Originヘッダーはどのように機能するのですか?
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] コールバック内で正しい `this` にアクセスする方法
-
[解決済み] JavaScriptの正規表現でマッチしたグループにアクセスするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JSアレイループと効率解析の比較
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
JavaScriptのクロージャの説明
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み] テスト
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された