Recentemente, a Apple lançou o Vision Pro e tive a sorte de me tornar um orgulhoso proprietário. Desde então, tenho estado profundamente envolvido no desenvolvimento de meu aplicativo e na exploração de vários aplicativos e tendências na Vision Pro App Store.
Uma coisa que me chamou a atenção é que novos aplicativos são lançados todos os dias, mas apenas alguns se adaptam bem à experiência imersiva de realidade virtual. Acho que muitos desenvolvedores têm dificuldade para encontrar documentação e exemplos dos recursos do Vision Pro. No entanto, utilizar os recursos do Vision Pro pode diferenciar seu aplicativo e fornecer aos usuários uma experiência aprimorada.
Neste artigo, compartilharei algumas dicas e truques que descobri ao elaborar meu aplicativo. Essas dicas não apenas ajudarão seu aplicativo a se destacar, mas também garantirão sua integração perfeita e sensação nativa no VisionOS.
Tenho certeza que você notou que ao visualizar um vídeo ou foto, o fundo atrás da janela fica escurecido, nas configurações isso é chamado de “escurecimento automático”. Para obter o mesmo efeito você precisa usar .preferredSurroundingsEffect(.systemDark)
na sua visualização e então o espaço ao redor do usuário escurecerá e sua janela permanecerá clara, isso ajudará a manter o foco no conteúdo.
Ao visualizar um vídeo ou conteúdo, você deseja que o usuário não tenha distrações e crie o efeito de uma janela flutuando no ar, para isso a Apple nos deu a capacidade de ocultar a barra inferior da janela que serve para mover ou fechar a janela atual. Com .persistentSystemOverlays(.hidden)
você pode ocultar esta barra de controle na sua janela, ela desaparecerá com a animação padrão e só aparecerá quando o usuário interagir com a janela.
Se você abrir o aplicativo padrão da Apple TV e ligar um filme, notará que a janela do filme tem um reflexo que muda a cada quadro, dando um efeito mais envolvente. Para obter um efeito de brilho ao redor do seu vídeo, você precisa usar VideoPlayerComponent
e habilitar isPassthroughTintingEnabled
, então o efeito será o mesmo do Apple TV ou HBO Max. Aqui está o que diz a documentação:
Isso permite a coloração de passagem durante a reprodução do vídeo, que aparece ao redor do vídeo, pegando a cor média do quadro e tingindo a passagem com essa cor para enfatizar o vídeo.
Você pode querer evitar que o usuário redimensione a janela, existe uma maneira de fazer isso:
onAppear { guard let windowScene = UIApplication.shared.connectedScenes.first as?UIWindowScene else { return } windowScene.requestGeometryUpdate(.Vision(resizingRestrictions: UIWindowScene.ResizingRestrictions.none)) }
Você também pode especificar configurações de tamanho adicionais neste método. A assinatura completa do método é semelhante a esta:
windowScene.requestGeometryUpdate(.Vision(size:, minimumSize:, maximumSize:, resizingRestrictions:))
Se seu aplicativo usa espaço imersivo e você não deseja que o usuário veja suas mãos, ou deseja substituí-las por mãos virtuais, como é feito no AmazeVR, então você precisa usar .upperLimbVisibility(.hidden)
Tenho certeza que você já viu barras laterais em aplicativos VisionOS que se parecem com TabBars
. A Apple introduziu um novo método View
para VisionOS que permite “expandir” a janela e adicionar ornamentos em ambos os lados dela.
.ornament( visibility: .visible, attachmentAnchor: .scene(.bottom), contentAlignment: .center ) { HStack { Button("Play", systemImage: "play.fill") { } Button("Stop", systemImage: "stop.fill") { } } .labelStyle(.iconOnly) .padding(.all) .glassBackgroundEffect() }
Um fato interessante que pude verificar experimentalmente é que os métodos do CMMotionManager só funcionam em espaço imersivo e não na visualização normal da janela.
VisionOS fornece muitas ferramentas para criar aplicativos imersivos que trazem os usuários para o mundo virtual e os fazem sentir parte dele. Embora cada vez mais aplicativos sejam lançados para o Vision Pro, apenas alguns utilizam toda a sua gama de recursos. É aí que entra a sua chance de se distinguir – use-a e aproveite. Infelizmente, os desenvolvedores lutam para encontrar documentação e exemplos facilmente acessíveis. É por isso que estou escrevendo este artigo. Espero que minhas dicas ajudem você a melhorar sua aplicação.