Resumo
Não podemos acessar a câmera a partir de um aplicativo da web de tela inicial iOS11 (versão pública) usando o WebRTC ou a entrada do arquivo, detalhes abaixo. Como nossos usuários podem continuar acessando a câmera, por favor?
Estamos veiculando a página de aplicativos da web por https.
Atualização, abril
A versão pública do iOS 11.3 parece ter corrigido o problema e o acesso à câmera de entrada de arquivo está funcionando novamente!Atualização, março
Como as pessoas aqui disseram, os documentos da Apple aconselham que a função de câmera de aplicativo da web retorne na versão 11.3, junto com os funcionários de serviço. Isso é bom, mas ainda não temos certeza se queremos que todos reinstale novamente até que possamos testar completamente o 11.3GM.
Solução, novembro
Perdemos a esperança de que a Apple queira consertar isso e seguimos em frente. Modificamos nosso aplicativo da web para remover a função "Adicionar à tela inicial" do iOS e pedimos aos usuários afetados para remover qualquer ícone anterior da tela inicial.Atualização, 6 de dezembro
O iOS 11.2 e o iOS 11.1.2 não são corrigidos.
Soluções alternativas, 21 de setembro
Parece que poderíamos pedir aos clientes existentes do aplicativo Web
- não atualize para iOS11 - boa sorte com isso :)
- tire fotos na câmera do iOS e selecione-as novamente no aplicativo Web
- aguarde o próximo beta do ios
- reinstalar como uma página do navegador Safari (depois de removermos a lógica ATHS)
- mudar para Android
Entrada de arquivo
Nosso código de produção atual usa uma entrada de arquivo que funcionou bem por anos com o iOS 10 e versões anteriores. No iOS11, ele funciona como uma guia Safari, mas não no aplicativo da tela inicial. Neste último caso, a câmera é aberta e apenas uma tela preta é exibida; portanto, é inutilizável.
<meta name="apple-mobile-web-app-capable" content="yes">
...
<input type="file" accept="image/*">
WebRTC
O Safari 11 no iOS11 oferece captura de mídia WebRTC, o que é ótimo.
Podemos capturar uma imagem de câmera para tela em uma página da Web normal em computadores e dispositivos móveis usando navigator.mediaDevices.getUserMedia de acordo com o código de exemplo vinculado aqui .
Quando adicionamos a página à tela inicial do iPad ou iPhone, ela navigator.mediaDevices
se torna undefined
inutilizável.
<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;