PermissionsSwiftUI werden in Swiftui die Berechtigungen angezeigt und behandelt. Es ist größtenteils von Spermissions inspiriert. Die Benutzeroberfläche ist sehr anpassbar und ähnelt einem Apfelstil . Wenn Sie das Projekt mögen, star ★ .

BerechtigungenSwiftui sieht sowohl auf ☀️light als auch? Dunkler Modus.
onAppear und onDisappear überschreibenSie können Berechtigungen über SPM in Ihrem Xcode -Projekt installieren. Um mehr über SPM zu erfahren, klicken Sie hier
Für Xcode 13 navigieren Sie zu Dateien → Paket hinzufügen
https://github.com/jevonmao/PermissionsSwiftUI ) ein und klicken Sie auf Weiter .(Sie müssen keine CorePermissionsSwiftui oder Berechtigungen hinzufügen.)

Sie können auch Berechtigungen mit Cocoapods installieren. Fügen Sie pod 'PermissionsSwiftUI' in Ihre Podfile hinzu:
platform :ios , '14.0'
target 'test abstract' do
use_frameworks!
pod 'PermissionsSwiftUI'
end Bevor Sie anfangen,
star ★bitte dieses Repository. Ihr Star ist meine größte Motivation, All-Nighters zu ziehen und dieses Open-Source-Projekt aufrechtzuerhalten.
v1.4 ist da! Wenn Sie auf Probleme stoßen, lesen Sie bitte das Migrationshandbuch, mit dem Entwickler Abschreibungen und API -Updates behoben werden sollen.
Um Berechtigungen zu verwenden, fügen Sie einfach den JMModal -Modifikator zu einer beliebigen Ansicht hinzu:
. JMModal ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] ) ` Geben Sie eine Binding<Bool> weiter, um die modale Ansicht anzuzeigen, und fügen Sie alle Berechtigungen hinzu, die Sie anzeigen möchten. Zum Beispiel:
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 ] ) Ähnlich wie bei den vorherigen JMPermissions müssen Sie eine Binding<Bool> übergeben, um die Ansicht anzuzeigen und alle Berechtigungen hinzuzufügen, die Sie anzeigen möchten. Um sich schnell auf die Anpassung und Konfigurationen von Berechtigungen zu werfen, lesen Sie das Cheatsheet!
Um Berechtigungstexte anzupassen, verwenden Sie den Modifier setPermissionComponent() Sie können beispielsweise den Titel, die Beschreibung und das Bildsymbol von Titel, Beschreibung und Bild ändern:
. setPermissionComponent ( for : . camera ,
image : AnyView ( Image ( systemName : " camera.fill " ) ) ,
title : " Camcorder " ,
description : " App needs to record videos " )und das Ergebnis:

setPermissionComponent ( for : . tracking , title : " Trackers " ) setPermissionComponent ( for : . tracking , description : " Tracking description " )Notiz:
setPermissionComponent in Ihrer Stammebene -Ansicht nach JMPermissions -Modifikator hinzu Der image akzeptiert Anyview . Verwenden Sie also gerne SF -Symbole oder Ihr benutzerdefiniertes Asset:
. setPermissionComponent ( for : . camera ,
image : AnyView ( Image ( " Your-cool-image " ) )Sogar die volle Swiftui -Aussichten funktionieren ?:
. setPermissionComponent ( for : . camera ,
image : AnyView ( YourCoolView ( ) )Sie können benutzerdefinierte Text und Symbole für alle unterstützten Berechtigungen mit einer einzigen Codezeile verwenden.
Um den Header -Titel anzupassen, verwenden Sie den Modifikator changeHeaderTo : 
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . calendar ] )
. changeHeaderTo ( " App Permissions " ) Um die Header -Beschreibung anzupassen, verwenden Sie den Modifier changeHeaderDescriptionTo :
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . photo ] )
. changeHeaderDescriptionTo ( " Instagram need certain permissions in order for all the features to work. " ) Um die untere Beschreibung anzupassen, verwenden Sie den Modifikator changeBottomDescriptionTo :
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . photo ] )
. changeBottomDescriptionTo ( " If not allowed, you have to enable permissions in settings " )onAppear und onDisappear überschreiben Möglicherweise finden Sie es unglaublich nützlich, Ihren Code auszuführen oder eine Aktualisierungsaktion auszuführen, wenn eine Berechtigungsswiftui -Ansicht erscheint und verschwindet.
Sie können einige Maßnahmen ausführen, wenn die Berechtigungen angesehen werden oder verschwinden von:
. JMPermissions ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] , onAppear : { } , onDisappear : { } ) Die Parameter von onAppear und onDisappear -Verschluss werden jedes Mal ausgeführt , wenn die Ansicht der Berechtigungen angezeigt wird, und verschwindet.
Der gleiche Ansichtsmodifikatorverschluss für staatliche Änderungen ist für den JMAlert -Modifikator verfügbar:
. JMAlert ( showModal : $showModal ,
for : [ . locationAlways , . photo ] ,
onAppear : { print ( " Appeared " ) } ,
onDisappear : { print ( " Disappeared " ) } ) Die standardmäßigen Berechtigungen prüfen automatisch auf den Autorisierungsstatus. Es werden nur Berechtigungen angezeigt, die derzeit notDetermined sind. (Das iOS -System hindert Entwickler daran, nach Ablehnungsberechtigungen zu bitten. Erlaubte Berechtigungen werden auch von den Berechtigungen ignoriert.) Wenn alle Berechtigungen erlaubt oder abgelehnt sind, werden die Berechtigungen das Modal oder Alarm überhaupt nicht angezeigt. Verwenden Sie den Parameter autoCheckAuthorization , um die automatische Überprüfung der Autorisierung festzulegen:
. JMModal ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )Gleiches gilt für JMalert
. JMAlert ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )Die standardmäßigen Berechtigungen haben kein automatisches Entlassungsverhalten. Sie können dieses Verhalten überschreiben, damit es den Modal oder Alarm automatisch abtun, nachdem der Benutzer das letzte Berechtigungselement zugelassen hat. (Alle Berechtigungen müssen zugelassen werden, wenn eine Ablehnung abgelehnt wird, wird es nicht automatisch entlassen.)
. JMModal ( ... autoDismiss : Bool ) - > some View Geben Sie true oder false aus, um auszuwählen, ob die Ansicht automatisch abgewiesen werden soll.
Mithilfe von Berechtigungen von Wiftui können Entwickler und Designer alle UI -Farben mit unglaublicher Flexibilität anpassen. Sie können alle Farbe in allen Zuständen mit Ihren benutzerdefinierten Farben vollständig konfigurieren.
Leicht die Akzentfarbe zu ändern:
. setAccentColor ( to : Color ( . sRGB , red : 56 / 255 , green : 173 / 255 ,
blue : 169 / 255 , opacity : 1 ) )So ändern Sie die primären (Standard Apple Blue) und tertiären (Standard Apple Red) Farben:
. setAccentColor ( toPrimary : Color ( . sRGB , red : 56 / 255 , green : 173 / 255 ,
blue : 169 / 255 , opacity : 1 ) ,
toTertiary : Color ( . systemPink ) ) 
Euen .setAccentColor()und.setAllowButtonColor()sollten niemals gleichzeitig verwendet werden.
Um die vollständige Anpassung aller Schaltflächenfarben unter allen Zuständen zu entfesseln, müssen Sie die AllButtonColors -Struktur übergeben:
. setAllowButtonColor ( to : . init ( buttonIdle : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ,
buttonAllowed : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ,
buttonDenied : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ) )Weitere Informationen zur oben genannten Methode erhalten Sie auf die offizielle Dokumentation.
Die Berechtigungen werden standardmäßig verhindern, dass der Benutzer das Modal und die Alarms abweist, bevor alle Berechtigungen interagiert wurden. Dies bedeutet, wenn der Benutzer nicht ausdrücklich jede angegebene Berechtigung abgelehnt oder zugelassen hat, kann er nicht in der Lage sein, die Ansicht der Berechtigungen abzulehnen. Dies schränkt das Entlassungsverhalten durch die var restrictModalDismissal: Bool oder var restrictAlertDismissal: Bool -Eigenschaften überschreibt werden. Deaktivieren Sie das Verhalten der Ausfalleinschränkung:
. JMModal ( showModal : $show , for permis sions : [ . camera ] , restrictDismissal : false )Sie können auch mit dem Modell konfigurieren:
let model : PermissionStore = {
var model = PermissionStore ( )
model . permissions = [ . camera ]
model . restrictModalDismissal = false
model . restrictAlertDismissal = false
return model
}
......
. JMModal ( showModal : $showModal , forModel : model )Im Gegensatz zu allen anderen Berechtigungen ist die Konfiguration für die Gesundheitsgenehmigung etwas anders. Da Apple die Entwickler verlangt, dass sie explizit Lese- und Schreibtypen einstellen, vereinfacht die Berechtigungen den Prozess erheblich.
HKAccessDie Struktur HKAccess ist bei der Initialisierung der umgebundenen Werte der Gesundheitsberechtigung erforderlich. Es fasst die Les- und Schreibberechtigungen für die Gesundheitsgenehmigung zusammen.
Lesen und Schreiben von Gesundheitstypen ( activeEnergyBurned wird hier als Beispiel verwendet):
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 ) ) ] )Lesen oder schreiben einzeln einstellen:
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 ) ) ] )Sie dürfen auch nur Lesen oder Schreibtyp einstellen:
let readTypes = Set ( [ HKSampleType . quantityType ( forIdentifier : . activeEnergyBurned ) ! ] )
. JMModal ( showModal : $showModal , for : [ . health ( categories : . init ( read : readTypes ) ) ] ) Passen Sie die allgemeine Akzentfarbe an:
setAccentColor ( to : )
setAccentColor ( toPrimary : toTertiary : )Titel anpassen:
changeHeaderTo ( _ : )Passen Sie die Top -Beschreibung an:
changeHeaderDescriptionTo ( _ : )Die untere Beschreibung anpassen:
changeBottomDescriptionTo ( _ : )Passen Sie den angezeigten Text und Bild jeder Berechtigte an:
setPermissionComponent ( for : image : title : description : )
setPermissionComponent ( for : title : )
setPermissionComponent ( for : description : ) Anpassen der Farben der allow :
setAllowButtonColor ( to : )Automatisch nach dem letzten entlassen
autoDismiss: BoolJMModal und JMAlertÜberprüfen Sie die Autorisierung, bevor Sie Modal oder Alarm anzeigen
autoCheckAuthorization: BoolVerhindern Sie die Entlassung, bevor alle Berechtigungen interagieren
restrictDismissal: BoolMachen Sie etwas kurz vor dem Anzeigen erscheinen
onAppear: ( ) -> VoidMachen Sie etwas, bevor die Sichtweise verschwindet
onDisappear: ( ( ) - > Void Hier finden Sie eine Liste aller Berechtigungsberechtigungen. Ja, selbst die neueste tracking für iOS 14, damit Sie Ihr Spiel auf dem Laufenden halten können. Alle Berechtigungen in den BerechtigungenSwiftui werden mit einem Standardnamen, einer Beschreibung und einem atemberaubenden SF -Symbole -Symbole von Apple Native SF ausgestattet.
Die Unterstützung für die Erlaubnis für die FaceID ist in Arbeit und in Kürze! Wenn Sie keine Erlaubnis finden, die Sie benötigen, öffnen Sie ein Problem. Noch besser, bauen Sie es selbst auf und öffnen Sie eine Pull-Anfrage. Sie können dieser Schritt-für-Schritt-Anleitung zum Hinzufügen neuer Berechtigungen folgen. 
Beiträge sind hier für Codierer und Nicht-Koder gleichermaßen willkommen. Unabhängig von Ihrem Qualifikationsniveau können Sie mit Sicherheit zu den Open -Source -Community von Berechtigungswiftui beitragen. Bitte lesen Sie vor dem Start einen Beitrag.
Wenn Sie auf ein Problem stoßen, Bedenken oder Kommentare haben, zögern Sie bitte nicht, mich zu informieren. Öffnen Sie eine Diskussion, eine Ausgabe oder senden Sie mir eine E -Mail. Als Entwickler fühle ich Sie, wenn Sie etwas in der Codebasis nicht verstehen. Ich versuche so gut wie möglich zu kommentieren und zu dokumentieren, aber wenn Sie auf Probleme stoßen, werde ich gerne auf jede erdenkliche Weise helfen.
Splems ist ein großes Remake der berühmten Swift -Bibliothek von @verabeis in großem Umfang. Spermissions wurde zunächst 2017 erstellt, und heute auf Github hat über 4000 Sterne. Die Berechtigungen sind bestrebt, eine so schöne und mächtige Bibliothek in Swiftui zu liefern. Wenn Sie star ★ , lesen Sie unbedingt die ursprünglichen Projektsperrmissionen, bei denen ich das UI -Design, einige Teile der Readme.MD -Seite und wichtige Quellcode -Referenzen auf dem Weg geliehen habe.
Berechtigungen wird von Jingwen (Jevon) Mao erstellt und unter der MIT -Lizenz lizenziert