PermissionsSwiftUI Affiche et gère les autorisations dans Swiftui. Il est largement inspiré par les sppermissions. L'interface utilisateur est hautement personnalisable et ressemble à un style Apple . Si vous aimez le projet, veuillez star ★ .

PermissionswiftUi est tout aussi magnifique sur ☀️light et? Mode sombre.
onAppear et onDisappear OUTVous pouvez installer des autorisationswiftUi dans votre projet Xcode via SPM. Pour en savoir plus sur SPM, cliquez ici
Pour Xcode 13, accédez à des fichiers → Ajouter un package
https://github.com/jevonmao/PermissionsSwiftUI ) et cliquez sur Suivant .(Vous n'avez pas besoin d'ajouter CoreperMissionsSwiftUi ou PermissionsWiftUi)

Vous pouvez également installer des autorisations avec des cocoapodes. Ajoutez pod 'PermissionsSwiftUI' dans votre podfile:
platform :ios , '14.0'
target 'test abstract' do
use_frameworks!
pod 'PermissionsSwiftUI'
end Avant de commencer, veuillez
star ★ce référentiel. Votre star est ma plus grande motivation pour tirer des nuits et maintenir ce projet open source.
v1.4 est là! Si vous rencontrez des problèmes, veuillez consulter le guide de migration conçu pour aider les développeurs à résoudre les dépréciations et les mises à jour de l'API.
Pour utiliser les autorisations de permiswiftUi, ajoutez simplement le modificateur JMModal à n'importe quelle vue:
. JMModal ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] ) ` Passez un Binding<Bool> pour afficher la vue modale et ajoutez les autorisations que vous souhaitez montrer. Par exemple:
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 ] ) Semblable aux JMPermissions précédentes, vous devez passer dans un Binding<Bool> pour afficher la vue et ajouter les autorisations que vous souhaitez montrer. Pour jeter un coup d'œil rapidement à toutes les autorisations de personnalisation et de configurations de la CHRIETHEET!
Pour personnaliser les textes d'autorisation, utilisez le modificateur setPermissionComponent() Par exemple, vous pouvez modifier l'icône de titre, de description et d'image:
. setPermissionComponent ( for : . camera ,
image : AnyView ( Image ( systemName : " camera.fill " ) ) ,
title : " Camcorder " ,
description : " App needs to record videos " )Et le résultat:

setPermissionComponent ( for : . tracking , title : " Trackers " ) setPermissionComponent ( for : . tracking , description : " Tracking description " )Note:
setPermissionComponent sur votre vue de niveau racine, après le modificateur JMPermissions Le paramètre image accepte AnyView , alors n'hésitez pas à utiliser les symboles SF ou votre atout personnalisé:
. setPermissionComponent ( for : . camera ,
image : AnyView ( Image ( " Your-cool-image " ) )Même les vues Swiftui complètent fonctionneront ?:
. setPermissionComponent ( for : . camera ,
image : AnyView ( YourCoolView ( ) )Vous pouvez utiliser du texte et des icônes personnalisés pour toutes les autorisations prises en charge, avec une seule ligne de code.
Pour personnaliser le titre d'en-tête, utilisez le modificateur changeHeaderTo : 
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . calendar ] )
. changeHeaderTo ( " App Permissions " ) Pour personnaliser la description de l'en-tête, utilisez le modificateur changeHeaderDescriptionTo :
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . photo ] )
. changeHeaderDescriptionTo ( " Instagram need certain permissions in order for all the features to work. " ) Pour personnaliser la description inférieure, utilisez le modificateur changeBottomDescriptionTo :
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . photo ] )
. changeBottomDescriptionTo ( " If not allowed, you have to enable permissions in settings " )onAppear et onDisappear OUT Vous pourriez trouver incroyablement utile pour exécuter votre code ou effectuer une action de mise à jour lorsqu'une vue d'autorisationwiftui apparaît et disparaît.
Vous pouvez effectuer une action lorsque la vue AutorisationswiftUi apparaît ou disparaît par:
. JMPermissions ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] , onAppear : { } , onDisappear : { } ) Les paramètres onAppear et onDisappear seront exécutés à chaque fois que la vue AutorisationwiftUi apparaît et disparaît.
La même fermeture du modificateur de vue pour les modifications d'état est disponible pour le modificateur JMAlert :
. JMAlert ( showModal : $showModal ,
for : [ . locationAlways , . photo ] ,
onAppear : { print ( " Appeared " ) } ,
onDisappear : { print ( " Disappeared " ) } ) PermissionsWiftUi Vérifiera automatiquement l'état de l'autorisation. Il affichera uniquement des autorisations qui sont actuellement notDetermined . (Le système iOS empêche les développeurs de demander des autorisations refusées. Les autorisations autorisées seront également ignorées par les autorisationswiftui). Si toutes les autorisations sont autorisées ou refusées, les autorisations ne montrent pas du tout le modal ou l'alerte. Pour définir l'autorisation de vérification automatique, utilisez le paramètre autoCheckAuthorization :
. JMModal ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )Il en va de même pour Jmalert
. JMAlert ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )Les autorisationswiftUi n'auront par défaut pas de comportement de rejet automatique. Vous pouvez remplacer ce comportement pour le faire rejeter automatiquement le modal ou l'alerte après que l'utilisateur autorise le dernier élément d'autorisation. (Toutes les autorisations doivent être autorisées, si elles sont refusées, elle ne rejetera pas automatiquement).
. JMModal ( ... autoDismiss : Bool ) - > some View Passez en true ou false pour sélectionner s'il faut rejeter automatiquement la vue.
L'utilisation des capacités de PermissionsWiftUi, les développeurs et les concepteurs peuvent personnaliser toutes les couleurs de l'interface utilisateur avec une flexibilité incroyable. Vous pouvez configurer pleinement toutes les couleurs dans tous les états avec vos couleurs personnalisées.
Pour changer facilement la couleur de l'accent:
. setAccentColor ( to : Color ( . sRGB , red : 56 / 255 , green : 173 / 255 ,
blue : 169 / 255 , opacity : 1 ) )Pour modifier les couleurs primaire (bleu de pomme par défaut) et tertiaire (rouge par défaut):
. setAccentColor ( toPrimary : Color ( . sRGB , red : 56 / 255 , green : 173 / 255 ,
blue : 169 / 255 , opacity : 1 ) ,
toTertiary : Color ( . systemPink ) ) 
️ .setAccentColor()et.setAllowButtonColor()ne doivent jamais être utilisés en même temps.
Pour libérer la personnalisation complète de toutes les couleurs de bouton sous tous les états, vous devez passer dans la structure AllButtonColors :
. setAllowButtonColor ( to : . init ( buttonIdle : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ,
buttonAllowed : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ,
buttonDenied : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ) )Pour plus d'informations concernant la méthode ci-dessus, référez la documentation officielle.
Les autorisationswifttui empêcheront par défaut l'utilisateur de rejeter le modal et l'alerte avant que toutes les autorisations n'étaient interagies. Cela signifie que si l'utilisateur n'a pas explicitement nié ou autorisé chaque autorisation affichée, elle ne sera pas en mesure de rejeter la vue Autorisationswiftui. Cela restreint le comportement de licenciement peut être remplacé par la var restrictModalDismissal: Bool ou var restrictAlertDismissal: Bool Properties. Pour désactiver le comportement de rejet de restriction par défaut:
. JMModal ( showModal : $show , for permis sions : [ . camera ] , restrictDismissal : false )Vous pouvez également vous configurer avec le modèle:
let model : PermissionStore = {
var model = PermissionStore ( )
model . permissions = [ . camera ]
model . restrictModalDismissal = false
model . restrictAlertDismissal = false
return model
}
......
. JMModal ( showModal : $showModal , forModel : model )Contrairement à toutes les autres autorisations, la configuration de l'autorisation de santé est un peu différente. Étant donné qu'Apple exige que les développeurs définissent explicitement les types de lecture et d'écriture, les autorisations de permiswiftUi simplifient considérablement le processus.
HKAccessLa structure HKACCESS est requise lors de l'initialisation des valeurs associées à l'énumération de l'autorisation de santé. Il résume les autorisations de type de lecture et d'écriture pour l'autorisation de santé.
Pour définir des types de santé en lecture et en rédaction ( activeEnergyBurned est utilisé comme exemple ici):
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 ) ) ] )Pour définir la lecture ou l'écriture individuellement:
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 ) ) ] )Vous pouvez également définir uniquement le type de lecture ou d'écriture:
let readTypes = Set ( [ HKSampleType . quantityType ( forIdentifier : . activeEnergyBurned ) ! ] )
. JMModal ( showModal : $showModal , for : [ . health ( categories : . init ( read : readTypes ) ) ] ) Personnalisez la couleur globale de l'accent:
setAccentColor ( to : )
setAccentColor ( toPrimary : toTertiary : )Personnaliser le titre:
changeHeaderTo ( _ : )Personnaliser la description supérieure:
changeHeaderDescriptionTo ( _ : )Personnaliser la description du bas:
changeBottomDescriptionTo ( _ : )Personnalisez le texte et l'image affichés de chaque autorisation:
setPermissionComponent ( for : image : title : description : )
setPermissionComponent ( for : title : )
setPermissionComponent ( for : description : ) Personnaliser les couleurs de bouton allow :
setAllowButtonColor ( to : )Rejeter automatiquement après la fin
autoDismiss: BoolJMModal et JMAlertVérifiez l'autorisation avant de montrer modal ou alerte
autoCheckAuthorization: BoolEmpêcher le rejet avant l'interaction de toutes les autorisations
restrictDismissal: BoolFaire quelque chose juste avant l'apparition
onAppear: ( ) -> VoidFaire quelque chose juste avant que la vue ne disparaisse
onDisappear: ( ( ) - > Void Voici une liste de toutes les autorisations d'autorisations prises en charge. Ouais, même l'autorisation tracking la plus récente pour iOS 14 afin que vous puissiez rester au-dessus de votre jeu. Toutes les autorisations dans les autorisations en autorisation sont livrées avec un nom par défaut, une description et une superbe icône de symboles SF native Apple.
Le soutien à la permission FACEID est le travail en cours et à venir bientôt! Si vous ne trouvez pas d'autorisation dont vous avez besoin, ouvrez un problème. Encore mieux, construisez-le vous-même et ouvrez une demande de traction, vous pouvez suivre ce guide étape par étape sur l'ajout de nouvelles autorisations. 
Les contributions sont les bienvenues ici pour les codeurs et les non-codeurs. Quel que soit votre niveau de compétence, vous pouvez pour certains contribuer à la communauté open source de PermissionswiftUi. Veuillez lire contribution.md avant de commencer, et si vous cherchez à contribuer un nouveau type d'autorisation iOS, assurez-vous de lire ce guide étape par étape.
Si vous rencontrez un problème, ayez des préoccupations ou des commentaires, n'hésitez pas à me le faire savoir. Ouvrez une discussion, une question ou un e-mail. En tant que développeur, je vous sens lorsque vous ne comprenez pas quelque chose dans la base de code. J'essaie de commenter et de documenter le mieux que possible, mais si vous rencontrez des problèmes, je serai heureux d'aider de toutes les manières possibles.
SpperMissions est en grand remake Swiftui de la célèbre bibliothèque Swift SpperMissions de @Verabeis. SpperMissions a été initialement créée en 2017, et aujourd'hui sur Github compte plus de 4000 étoiles. PermissionsSwiftUi vise à livrer une bibliothèque tout aussi belle et puissante à Swiftui. Si vous star ★ Mes autorisations de projetwiftUI, assurez-vous de consulter les SpperMissions du projet d'origine où j'ai emprunté la conception de l'interface utilisateur, certaines parties de la page ReadMe.md et des références de code source importantes en cours de route.
PermissionsSwiftUi est créée par Jingwen (Jevon) Mao et sous licence MIT en vertu de la licence du MIT