권한 PermissionsSwiftUI Swiftui에 권한을 표시하고 처리합니다. 그것은 Sppermissions에서 크게 영감을 받았습니다. UI는 고도로 사용자 정의 가능하며 Apple 스타일과 비슷합니다. 프로젝트가 마음에 들면 star ★ .

권한 wiftui는 ☀️ 라이트와 모두에서 똑같이 화려하게 보입니다. 다크 모드.
onAppear 및 onDisappear 재정의SPM을 통해 Xcode 프로젝트에 권한 wiftui를 설치할 수 있습니다. SPM에 대한 자세한 내용은 여기를 클릭하십시오
Xcode 13의 경우 파일 → 패키지 추가 로 이동하십시오
https://github.com/jevonmao/PermissionsSwiftUI )을 붙여 넣고 다음을 클릭하십시오.(CorePerMissionsSwiftui 또는 권한을 추가 할 필요가 없습니다.

Cocoapods와 함께 권한 wiftui를 설치할 수도 있습니다. 포드 파일에 pod 'PermissionsSwiftUI' 추가하십시오.
platform :ios , '14.0'
target 'test abstract' do
use_frameworks!
pod 'PermissionsSwiftUI'
end 시작하기 전에
star ★이 저장소. 당신의 스타는 모든 밤을 끌어 당기고이 오픈 소스 프로젝트를 유지하려는 가장 큰 동기입니다.
v1.4 는 여기 있습니다! 문제가 발생하면 개발자가 감가 상각 및 API 업데이트를 해결할 수 있도록 설계된 마이그레이션 안내서를 확인하십시오.
권한 wiftui를 사용하려면 JMModal 수정자를 모든 견해에 추가하십시오.
. JMModal ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] ) ` Binding<Bool> 을 통과하여 모달보기를 표시하고 표시하려는 권한을 추가하십시오. 예를 들어:
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 ] ) 이전 JMPermissions 와 마찬가지로 뷰를 표시하고 표시하려는 권한을 추가하려면 Binding<Bool> 을 전달해야합니다. 모든 권한을 빠르게 살펴보면 Swiftui의 사용자 정의 및 구성을 신속하게 보려면 치트 시트를 확인하십시오!
권한 텍스트를 사용자 정의하려면 Modifier setPermissionComponent() 사용하여 제목, 설명 및 이미지 아이콘을 변경할 수 있습니다.
. setPermissionComponent ( for : . camera ,
image : AnyView ( Image ( systemName : " camera.fill " ) ) ,
title : " Camcorder " ,
description : " App needs to record videos " )그리고 결과 :

setPermissionComponent ( for : . tracking , title : " Trackers " ) setPermissionComponent ( for : . tracking , description : " Tracking description " )메모:
JMPermissions 수정 자 후에 루트 레벨보기에 setPermissionComponent Modifier를 추가하십시오. image 매개 변수는 ANYVIEW를 허용하므로 SF 기호 또는 사용자 정의 자산을 자유롭게 사용하십시오.
. setPermissionComponent ( for : . camera ,
image : AnyView ( Image ( " Your-cool-image " ) )완전한 Swiftui 조회조차도 효과가 있습니까? :
. setPermissionComponent ( for : . camera ,
image : AnyView ( YourCoolView ( ) )단일 코드 라인으로 지원되는 모든 권한에 대해 사용자 정의 텍스트 및 아이콘을 사용할 수 있습니다.
헤더 제목을 사용자 정의하려면 수정 자 changeHeaderTo 사용하십시오. 
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . calendar ] )
. changeHeaderTo ( " App Permissions " ) 헤더 설명을 사용자 정의하려면 수정 자 changeHeaderDescriptionTo 사용하십시오.
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . photo ] )
. changeHeaderDescriptionTo ( " Instagram need certain permissions in order for all the features to work. " ) 하단 설명을 사용자 정의하려면 Modifier changeBottomDescriptionTo 사용하십시오.
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . photo ] )
. changeBottomDescriptionTo ( " If not allowed, you have to enable permissions in settings " )onAppear 및 onDisappear 재정의 CODE를 실행하거나 권한이 나타나고 사라질 때 코드를 실행하거나 업데이트 작업을 수행하는 것이 매우 유용 할 수 있습니다.
권한 wiftui보기가 나타나거나 사라지면 몇 가지 조치를 취할 수 있습니다.
. JMPermissions ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] , onAppear : { } , onDisappear : { } ) onAppear 및 onDisappear 클로저 매개 변수는 권한 이 나타나고 사라집니다.
JMAlert 수정자는 상태 변경에 대한 동일한보기 수정자를 사용할 수 있습니다.
. JMAlert ( showModal : $showModal ,
for : [ . locationAlways , . photo ] ,
onAppear : { print ( " Appeared " ) } ,
onDisappear : { print ( " Disappeared " ) } ) 권한 wiftui 기본적으로 승인 상태를 자동으로 확인합니다. 현재 notDetermined 상태가없는 권한 만 표시됩니다. (IOS 시스템은 개발자가 거부 권한을 요구하는 것을 방지합니다. 허용 권한은 권한을 무시할 것입니다. 모든 권한이 허용되거나 거부되면 권한 wiftui에는 모달이나 경고가 전혀 표시되지 않습니다. 자동 점검 승인을 설정하려면 autoCheckAuthorization 매개 변수를 사용하십시오.
. JMModal ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )Jmalert에도 동일하게 적용됩니다
. JMAlert ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )권한 wiftui 기본적으로 자동 해고 행동이 없습니다. 이 동작을 무시하여 사용자가 마지막 권한 항목을 허용 한 후 모달 또는 경고를 자동으로 기각 할 수 있습니다. (모든 권한은 거부 된 경우 자동 해고되지 않아야합니다).
. JMModal ( ... autoDismiss : Bool ) - > some View 뷰를 자동으로 해산할지 여부를 선택하려면 true 또는 false 전달하십시오.
Contrionswiftui의 기능을 사용하여 개발자와 디자이너는 모든 UI 색상을 놀라운 유연성으로 사용자 정의 할 수 있습니다. 사용자 정의 색상으로 모든 상태에서 모든 색상을 완전히 구성 할 수 있습니다.
악센트 색상을 쉽게 변경하려면 :
. setAccentColor ( to : Color ( . sRGB , red : 56 / 255 , green : 173 / 255 ,
blue : 169 / 255 , opacity : 1 ) )기본 (기본 Apple Blue) 및 3 차 (기본 Apple Red) 색상을 변경하려면 :
. setAccentColor ( toPrimary : Color ( . sRGB , red : 56 / 255 , green : 173 / 255 ,
blue : 169 / 255 , opacity : 1 ) ,
toTertiary : Color ( . systemPink ) ) 
켈 .setAccentColor()및.setAllowButtonColor()동시에 사용해서는 안됩니다.
모든 주에서 모든 버튼 색상의 전체 사용자 정의를 발휘하려면 AllButtonColors Struct를 통과해야합니다.
. setAllowButtonColor ( to : . init ( buttonIdle : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ,
buttonAllowed : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ,
buttonDenied : ButtonColor ( foregroundColor : Color ,
backgroundColor : Color ) ) )위의 방법에 대한 자세한 내용은 공식 문서를 참조하십시오.
권한 wiftui는 기본적으로 모든 권한이 상호 작용하기 전에 사용자가 모달과 경고를 해산하는 것을 방지합니다. 이는 사용자가 표시된 모든 권한을 명시 적으로 거부하거나 허용하지 않은 경우 권한을 wiftui 뷰를 기각 할 수 없다는 것을 의미합니다. 이 제한은 해고 행동을 var restrictModalDismissal: Bool 또는 var restrictAlertDismissal: Bool properties에 의해 무시할 수 있습니다. 기본값 제한 해고 행동을 비활성화하려면 :
. JMModal ( showModal : $show , for permis sions : [ . camera ] , restrictDismissal : false )모델로 구성 할 수도 있습니다.
let model : PermissionStore = {
var model = PermissionStore ( )
model . permissions = [ . camera ]
model . restrictModalDismissal = false
model . restrictAlertDismissal = false
return model
}
......
. JMModal ( showModal : $showModal , forModel : model )다른 모든 권한과 달리 건강 권한 구성은 약간 다릅니다. Apple은 개발자가 읽기 및 쓰기 유형을 명시 적으로 설정해야하므로 권한 wiftui는 프로세스를 크게 단순화합니다.
HKAccess건강 권한의 열거 된 값을 초기화 할 때 hkaccess 구조가 필요합니다. 건강 허가에 대한 읽기 및 쓰기 유형 권한을 캡슐화합니다.
읽기 및 쓰기 건강 유형을 설정하려면 (여기에서 activeEnergyBurned 사용됩니다) :
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 ) ) ] )개별적으로 읽기 또는 쓰기를 설정하려면 :
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 ) ) ] )읽기 또는 쓰기 유형 만 설정할 수도 있습니다.
let readTypes = Set ( [ HKSampleType . quantityType ( forIdentifier : . activeEnergyBurned ) ! ] )
. JMModal ( showModal : $showModal , for : [ . health ( categories : . init ( read : readTypes ) ) ] ) 전체 악센트 색상 사용자 정의 :
setAccentColor ( to : )
setAccentColor ( toPrimary : toTertiary : )제목 사용자 정의 :
changeHeaderTo ( _ : )상위 설명 사용자 지정 :
changeHeaderDescriptionTo ( _ : )하단 설명 :
changeBottomDescriptionTo ( _ : )각 권한의 표시된 텍스트 및 이미지를 사용자 정의하십시오.
setPermissionComponent ( for : image : title : description : )
setPermissionComponent ( for : title : )
setPermissionComponent ( for : description : ) allow 버튼의 색상을 사용자 정의하십시오.
setAllowButtonColor ( to : )마지막으로 자동 해고됩니다
autoDismiss: BoolJMModal 및 JMAlert 의 매개 변수모달 또는 경고를 표시하기 전에 인증을 확인하십시오
autoCheckAuthorization: Bool모든 권한이 상호 작용하기 전에 해고를 방지하십시오
restrictDismissal: Bool보기 직전에 무언가를하십시오
onAppear: ( ) -> Void보기가 사라지기 직전에 무언가를하십시오
onDisappear: ( ( ) - > Void 다음은 모든 권한 권한이 지원하는 권한의 목록입니다. 예, iOS 14에 대한 최신 tracking 권한이므로 게임을 계속 유지할 수 있습니다. 권한의 모든 권한은 기본 이름, 설명 및 놀라운 Apple Native SF Symbols Icon과 함께 제공됩니다.
FaceID 허가에 대한 지원은 진행 중이며 곧 출시 될 예정입니다! 필요한 권한을 찾지 못하면 문제를여십시오. 더 나은 것은 직접 구축하고 풀 요청을 열면 새로운 권한 추가에 대한 단계별 가이드를 따라갈 수 있습니다. 
코더 및 비 코더 모두에게 기부금을 환영합니다. 당신의 기술 수준이 무엇이든, 당신은 특정에 대해 권한의 오픈 소스 커뮤니티에 기여할 수 있습니다. 시작하기 전에 Contributing.md를 읽고 새로운 유형의 iOS 권한을 기고하려는 경우이 단계별 안내서를 읽으십시오.
문제가 발생하거나 우려 사항이 있거나 의견이 있으면 주저하지 말고 알려주십시오. 토론, 문제를 열거 나 이메일을 보내주십시오. 개발자로서, 나는 당신이 코드베이스에서 무언가를 이해하지 못할 때 당신을 느낍니다. 나는 가능한 한 최선을 다하고 문서화하려고 노력하지만, 당신이 어떤 문제를 겪게되면, 내가 할 수있는 방법을 도울 것입니다.
Sppermissions는 @verabeis의 유명한 Swift Library Sppermissions 의 Swiftui 리메이크입니다. Sppermissions는 처음에 2017 년에 만들어졌으며 오늘날 Github에는 4000 명 이상의 별이 있습니다. 권한 wiftui는 Swiftui에서 아름답고 강력한 도서관을 제공하는 것을 목표로합니다. star ★ 내 프로젝트 권한 wiftui를 Star하는 경우 UI 디자인, readme.md 페이지의 일부 및 중요한 소스 코드 참조를 빌린 원래 Project Sppermissions를 확인하십시오.
Convissionsswiftui는 Jingwen (Jevon) Mao가 작성하고 MIT 라이센스에 따라 라이센스를 부여합니다.