iOS11のホーム画面Webアプリでカメラにアクセスする方法


131

概要

詳細については、WebRTCまたはファイル入力のいずれかを使用して、iOS11(公開リリース)ホーム画面Webアプリからカメラにアクセスすることはできません。ユーザーがカメラに引き続きアクセスするにはどうすればよいですか?

https経由でWebアプリページを提供しています。

更新、4月

iOS 11.3の公開リリースで問題が修正されたようで、ファイル入力カメラへのアクセスが再び機能します!

3月の更新

ここの人々が言っ​​たように、アップルのドキュメントはWebアプリのカメラ機能がサービスワーカーと一緒に11.3に戻ることを助言しています。これは良いことですが、11.3GMで完全にテストできるようになるまで、全員に再インストールしてほしいかどうかはまだわかりません。

ソリューション、11月

Appleがこれを修正したいという希望を失い、前進した。iOSの「ホーム画面に追加」機能を削除するようにWebアプリを変更し、影響を受けるユーザーに以前のホーム画面アイコンを削除するように依頼しました。

12月6日更新

iOS 11.2およびiOS 11.1.2は修正されません。

回避策、9月21日

Webアプリの既存の顧客に尋ねることができるようです

  • iOS11にアップグレードしない-幸運を祈る:)
  • iOSカメラで写真を撮り、Webアプリでそれらを選択します
  • 次の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メディアキャプチャを提供します。

ここにリンクされているサンプルコードに従ってnavigator.mediaDevices.getUserMediaを使用して、デスクトップとモバイルの通常のWebページでキャンバスにカメラ画像をキャプチャできます

iPadやiPhoneのホーム画面にページを追加するnavigator.mediaDevicesundefined、使用できなくなります。

    <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;

5
私は彼らがそれを修正することを望んでいますが、これはAppleがSafariのUXを低下させることによって開発者をアプリストアに押し込む別の例となる可能性があります。
perfect_element 2017年

3
私はプログレッシブウェブアプリの開発について学びたいと思っています。AndroidとiOSでアプリをテストしているときに、この問題にも遭遇しました。ブラウザーでのアプリの閲覧は問題なく動作しますが、サファリから「ホーム画面に保存」してアプリのように使用しようとすると、カメラにアクセスしようとすると黒い画面が表示されます。
tutley

2
iOS:
11.2.1-

2
iOS:
11.2.2-

3
iOS 11.4.1は私にとってはうまくいっていないようです。
アマー

回答:


25

非常によく似た問題があります。これまでのところ、私たちにできる唯一の回避策は、メタタグを削除して「apple-mobile-web-app-capable」にして、ユーザーがSafariでそれを開くようにすることです。


24

更新:以前に公開された変更ログと投稿によって、のmanifest.json代わりにを使用するWebアプリapple-mobile-web-app-capableが最終的に適切なWebRTC実装にアクセスできると信じるようになりましたが、残念ながらこれは真実ではありません。悲しい顔。これによって引き起こされた不便をお詫びします。遠く離れた銀河での幸運な日が、Appleが(Safari以外の)WebKitを利用したビューでカメラにアクセスできるようになることを願っています...

はい、他の人が述べたように、getUserMediaはSafariでのみ直接利用できますが、UIWebViewでもWKWebViewでも利用できないため、残念ながら選択肢は次のとおりです。

  • <meta name="apple-mobile-web-app-capable" content="yes">getuserMediaにアクセスできる通常のSafariタブで「アプリ」が実行されるように削除する
  • Apache Cordovaのようなフレームワークを使用して、他の方法でデバイスのカメラへのアクセスを許可します。

AppleがこのWebRTCの制限を削除するのが遅くなることを望んでいます...

ソース:
アプリでWebKitを使用する開発者の場合、RTCPeerConnectionとRTCDataChannelはどのWebビューでも使用できますが、カメラとマイクへのアクセスは現在Safariに制限されています。


更新が正しくないようです。iOS 11.3ベータ版getUserMediawebkitGetUserMedia使用時はどちらも未定義<meta name="apple-mobile-web-app-capable" content="yes">
ro-savage

@ ro-savageの最終リリースがリリースされましたが、まだ機能していません
Owen

4
safariは新しい、つまりアップルにお願いします。ユーザーのメディアデータへのアクセスを許可してください
Pablo Cegarra

15

朗報!ついにカメラは、最初のiOS 11.3ベータ版のホームスクリーンWebアプリからアクセスできるようです。

私はそれが機能することを示すいくつかのファイルでリポジトリを作成しました:

https://github.com/joachimboggild/uploadtest

テストする手順:

  1. 携帯電話からアクセスできるWebサイトからこれらのファイルを提供する
  2. iOS Safariでindex.htmlを開きます
  3. ホーム画面に追加します
  4. ホーム画面からアプリを開きます。これで、WebページはナビゲーションUIなしでフルスクリーンで開きます。
  5. ファイルボタンを押して、カメラから画像を選択します。

これでカメラは正常に動作し、黒い画面ではなくなります。これは、機能が再び機能することを示しています。

getUserMediaなどではなく、プレーンフィールドを使用することを追加する必要があります。それがうまくいくかどうかはわかりません。


<meta name = "apple-mobile-web-app-capable" content = "yes">でどのように実行しましたか?
アレクサンダー

1
私はinputタグ付きの通常のフォームを使用しましたが、うまくいきました。
JoachimBøggild18年

@JoachimBøggildiOS 11.3以降のデバイスでPWAからカメラを開くことができますか?良いニュースを送ってくれてありがとう。
jegadeesh

はい、確かです。posmo.comで実行しています。設定が思い出せない。ただし、マニフェストファイルが含まれています。
JoachimBøggild18年

1
@JoachimBøggildは、このためのマニフェスト/ビデオタグを共有できます。私は自分のコードをテストしましたが、サファリでのみ機能します。ホーム画面アプリにはありません。
5


1

これは、ファイル入力フィールドを使用している場合、iOS 11.4で再び機能するようです。


1
iOS 11.4を使用していますが、ホーム画面アプリでは動作しません。それを機能させるために何をしていますか?
アロン

何も変更しませんでした。最新バージョンに更新するだけで、再び機能し始めました。
aalcutt

1
11.4にチェック。サファリで動作します-ホーム画面アプリとしては動作しません
May

iPadのiOS 11.4.1を使用しています。どのデバイスを使用していますか?
aalcutt

1
ファイル入力を使用できない理由は何ですか?それは再び働いています。
aalcutt

0

最近同じ問題に直面しましたが、私が思いついた唯一の解決策は、通常モードではなくブラウザーでアプリを開くことでした。しかし、iOSでのみ!

トリックは、異なる構成で2つのmanifest.jsonファイルを作成することでした。

Androidとすべての通常の1つは、Appleのmanifest-ios.jsonです。違いは、displayプロパティのみです。

手順1:マニフェストリンクタグにIDを追加します。

<link id="manifest" rel="manifest" href="manifest.json">

手順2:このスクリプトを本文の下部に追加しました:

<script>
    let isIOS = /(ipad|iphone|ipod|mac)/g.test(navigator.userAgent.toLowerCase());
    let manifest = document.getElementById("manifest");
    if (isIOS)
      manifest.href = 'manifest-ios.json'
</script>

ステップ3:マニフェスト-ios.jsonブラウザに表示を設定します

{
    "name": "APP",
    "short_name": "app",
    "theme_color": "#0F0",
    "display": "browser", // <---- use this instead of standard
    ...
}

複数のタブでアプリを複数回開くなど、別の問題が発生する場合があります。

しかし、それが皆さんのお役に立てば幸いです!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.