PermissionsSwiftUI exibe e lida com permissões em SwiftUi. É amplamente inspirado por sppermissions. A interface do usuário é altamente personalizável e se assemelha a um estilo Apple . Se você gosta do projeto, por favor, star ★ .

Permissõeswiftlui parece igualmente deslumbrante no ☀posto e? Modo escuro.
onAppear e onDisappear SubstituirVocê pode instalar permissõeswiftlui no seu projeto Xcode via SPM. Para saber mais sobre o SPM, clique aqui
Para o Xcode 13, navegue para arquivos → Adicionar pacote
https://github.com/jevonmao/PermissionsSwiftUI ) e clique em Avançar .(Você não precisa adicionar CoreperMissionswiftUi ou Permissõeswiftlui)

Você também pode instalar as permissõesSwiftlui com Cocoapods. Adicione pod 'PermissionsSwiftUI' no seu poder:
platform :ios , '14.0'
target 'test abstract' do
use_frameworks!
pod 'PermissionsSwiftUI'
end Antes de começar, por favor,
star ★Este repositório. Sua estrela é minha maior motivação para puxar o altíssimo e manter este projeto de código aberto.
v1.4 está aqui! Se você encontrar algum problema, consulte o guia de migração projetado para ajudar os desenvolvedores a resolver quaisquer depreciações e atualizações da API.
Para usar as permissõeswiftlui, basta adicionar o modificador JMModal a qualquer visualização:
. JMModal ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] ) ` Passe em uma Binding<Bool> para mostrar a visualização modal e adicione quaisquer permissões que você deseja mostrar. Por exemplo:
struct ContentView : View {
@ State var showModal = false
var body : some View {
Button ( action : {
showModal = true
} , label : {
Text ( " Ask user for permissions " )
} )
. JMModal ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] )
}
}
. JMAlert ( showModal : $showModal , for : [ . locationAlways , . photo ] ) Semelhante às JMPermissions anteriores, você precisa passar em uma Binding<Bool> para mostrar a visualização e adicionar quaisquer permissões que deseja mostrar. Para olhar rapidamente para todas as permissões e configurações da AMISSIONSWITUI, consulte a folha de dicas!
Para personalizar textos de permissão, use o modificador setPermissionComponent() , por exemplo, você pode alterar o título, a descrição e o ícone da imagem:
. setPermissionComponent ( for : . camera ,
image : AnyView ( Image ( systemName : " camera.fill " ) ) ,
title : " Camcorder " ,
description : " App needs to record videos " )e o resultado:

setPermissionComponent ( for : . tracking , title : " Trackers " ) setPermissionComponent ( for : . tracking , description : " Tracking description " )Observação:
setPermissionComponent na sua visualização de nível raiz, após o modificador JMPermissions O parâmetro image aceita qualquer visualização , portanto, fique à vontade para usar símbolos SF ou seu ativo personalizado:
. setPermissionComponent ( for : . camera ,
image : AnyView ( Image ( " Your-cool-image " ) )Até as visualizações completas do SwiftUi funcionarão?:
. setPermissionComponent ( for : . camera ,
image : AnyView ( YourCoolView ( ) )Você pode usar texto e ícones personalizados para todas as permissões suportadas, com uma única linha de código.
Para personalizar o título do cabeçalho, use o modificador changeHeaderTo : 
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . calendar ] )
. changeHeaderTo ( " App Permissions " ) Para personalizar a descrição do cabeçalho, use o modificador changeHeaderDescriptionTo para:
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . photo ] )
. changeHeaderDescriptionTo ( " Instagram need certain permissions in order for all the features to work. " ) Para personalizar a descrição inferior, use o modificador changeBottomDescriptionTo para:
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . photo ] )
. changeBottomDescriptionTo ( " If not allowed, you have to enable permissions in settings " )onAppear e onDisappear Substituir Você pode achar incrivelmente útil executar seu código ou executar alguma ação de atualização quando uma visualização de permissões -viras aparecer e desaparecer.
Você pode executar alguma ação quando a visualização de permissõesSwifttui aparecer ou desaparecer por:
. JMPermissions ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] , onAppear : { } , onDisappear : { } ) Os parâmetros de fechamento onAppear e onDisappear serão executados sempre que a visualização de permissõesSwifttui aparecer e desaparecer.
O mesmo fechamento do modificador de visualização para alterações de estado está disponível para o modificador JMAlert :
. JMAlert ( showModal : $showModal ,
for : [ . locationAlways , . photo ] ,
onAppear : { print ( " Appeared " ) } ,
onDisappear : { print ( " Disappeared " ) } ) Permissõeswifttui Por padrão, verificará automaticamente o status de autorização. Ele mostrará apenas permissões que atualmente notDetermined são determinadas. (O sistema iOS impede que os desenvolvedores solicitem permissões negadas. As permissões permitidas também serão ignoradas por permissõeswiftlui). Se todas as permissões forem permitidas ou negadas, as permissõeswiftlui não mostrarão o modal ou o alerta. Para definir a autorização de verificação automática, use o parâmetro autoCheckAuthorization :
. JMModal ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )O mesmo se aplica ao jmalert
. JMAlert ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )As permissõeswifttui por padrão não terão nenhum comportamento automático. Você pode substituir esse comportamento para fazê -lo automaticamente descartar o modal ou alerta depois que o usuário permite o último item de permissão. (Todas as permissões devem ser permitidas, se houver, não será negada, não será descartada automaticamente).
. JMModal ( ... autoDismiss : Bool ) - > some View Passe true ou false para selecionar se deve descartar automaticamente a visualização.
Usando os recursos do PermissionsWiftlui, desenvolvedores e designers podem personalizar todas as cores da interface do usuário com incrível flexibilidade. Você pode configurar completamente todas as cores em todos os estados com suas cores personalizadas.
Para alterar facilmente a cor do destaque:
. setAccentColor ( to : Color ( . sRGB , red : 56 / 255 , green : 173 / 255 ,
blue : 169 / 255 , opacity : 1 ) )Para alterar as cores primário (Apple Blue Apple) e Terciário (Apple Red padrão):
. setAccentColor ( toPrimary : Color ( . sRGB , red : 56 / 255 , green : 173 / 255 ,
blue : 169 / 255 , opacity : 1 ) ,
toTertiary : Color ( . systemPink ) ) 
️ .setAccentColor()e.setAllowButtonColor()nunca devem ser usados ao mesmo tempo.
Para liberar a personalização completa de todas as cores dos botões em todos os estados, você precisa passar na estrutura AllButtonColors :
. setAllowButtonColor ( to : . init ( buttonIdle : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ,
buttonAllowed : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ,
buttonDenied : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ) )Para obter mais informações sobre o método acima, faça referência à documentação oficial.
Permissõeswiftlui, por padrão, impedirá que o usuário descarte o modal e o alerta antes que todas as permissões tenham sido interagidas. Isso significa que, se o usuário não tiver negado ou permitido explicitamente todas as permissão mostrada, não poderá descartar a visualização de permissões. Isso restringe o comportamento de demissão pode ser substituído pelo var restrictModalDismissal: Bool ou var restrictAlertDismissal: Bool . Para desativar o padrão restringir o comportamento de descarga:
. JMModal ( showModal : $show , for permis sions : [ . camera ] , restrictDismissal : false )Você também pode configurar com o modelo:
let model : PermissionStore = {
var model = PermissionStore ( )
model . permissions = [ . camera ]
model . restrictModalDismissal = false
model . restrictAlertDismissal = false
return model
}
......
. JMModal ( showModal : $showModal , forModel : model )Ao contrário de todas as outras permissões, a configuração para a permissão de saúde é um pouco diferente. Como a Apple exige que os desenvolvedores definam explicitamente os tipos de leitura e gravação, as permissões -matem simplifica bastante o processo.
HKAccessA estrutura é necessária ao inicializar os valores associados à enum da permissão de saúde. Ele encapsula as permissões de leitura e gravação para a permissão de saúde.
Para definir os tipos de saúde de leitura e gravação ( activeEnergyBurned é usado como exemplo aqui):
let healthTypes = Set ( [ HKSampleType . quantityType ( forIdentifier : . activeEnergyBurned ) ! ] )
. JMModal ( showModal : $show , for : [ . health ( categories : . init ( readAndWrite : healthTypes ) ) ] )
//Same exact syntax for JMAlert styles
. JMAlert ( showModal : $show , for : [ . health ( categories : . init ( readAndWrite : healthTypes ) ) ] )Para definir a leitura ou escrever individualmente:
let readTypes = Set ( [ HKSampleType . quantityType ( forIdentifier : . activeEnergyBurned ) ! ] )
let writeTypes = Set ( [ HKSampleType . quantityType ( forIdentifier : . appleStandTime ) ! ] )
. JMModal ( showModal : $showModal , for : [ . health ( categories : . init ( read : readTypes , write : writeTypes ) ) ] )Você também pode definir apenas o tipo de leitura ou gravação:
let readTypes = Set ( [ HKSampleType . quantityType ( forIdentifier : . activeEnergyBurned ) ! ] )
. JMModal ( showModal : $showModal , for : [ . health ( categories : . init ( read : readTypes ) ) ] ) Personalize a cor de destaque geral:
setAccentColor ( to : )
setAccentColor ( toPrimary : toTertiary : )Personalize o título:
changeHeaderTo ( _ : )Personalize a descrição superior:
changeHeaderDescriptionTo ( _ : )Personalize a descrição inferior:
changeBottomDescriptionTo ( _ : )Personalize o texto e a imagem exibidos de cada permissão:
setPermissionComponent ( for : image : title : description : )
setPermissionComponent ( for : title : )
setPermissionComponent ( for : description : ) allow as cores do Button de Button:
setAllowButtonColor ( to : )Demitido automaticamente após o último
autoDismiss: BoolJMModal e JMAlertVerifique a autorização antes de mostrar modal ou alerta
autoCheckAuthorization: BoolImpedir a rejeição antes de todas as permissões interagirem
restrictDismissal: BoolFaça algo logo antes da vista aparecer
onAppear: ( ) -> VoidFaça algo logo antes da vista desaparecer
onDisappear: ( ( ) - > Void Aqui está uma lista de todos os suportes de permissões de permissões. Sim, até a mais recente permissão tracking para o iOS 14 para que você possa permanecer no topo do seu jogo. Todas as permissões em permissõeswiftlui vêm com um nome padrão, descrição e um impressionante ícone de símbolos SF nativo da Apple.
O suporte à permissão FACEID é um trabalho em andamento e em breve! Se você não encontrar uma permissão necessária, abra um problema. Melhor ainda, construa você mesmo e abra uma solicitação de tração, você pode seguir este guia passo a passo sobre como adicionar novas permissões. 
As contribuições são bem-vindas aqui para codificadores e não codificadores. Não importa qual seja o seu nível de habilidade, você pode contribuir com certas permissões da comunidade de código aberto da WIFTUI. Leia contribuindo.md Antes de iniciar e, se você deseja contribuir com um novo tipo de permissão do iOS, leia este guia passo a passo.
Se você encontrar algum problema, tiver alguma dúvida ou qualquer comentário, não hesite em me avisar. Abra uma discussão, emissão ou me envie um email. Como desenvolvedor, sinto você quando você não entende algo na base de código. Tento comentar e documentar o melhor que puder, mas se você encontrar algum problema, terei o maior prazer em ajudar da maneira que puder.
A SpPermissions está em grande remake de Swiftui da famosa Swift Library Sppermissions da @Verabeis. A SpPermissions foi criada inicialmente em 2017 e hoje no Github tem mais de 4000 estrelas. Permissõeswiftlui pretende fornecer uma biblioteca tão bonita e poderosa em Swifttu. Se você star ★ Minhas Permissões do Projeto, não deixe de conferir as missões do projeto original, onde peguei emprestado o design da interface do usuário, algumas partes da página Readme.md e referências importantes de código -fonte ao longo do caminho.
Permissõeswiftlui é criado por Jingwen (Jevon) Mao e licenciado sob a licença do MIT