PermissionsSwiftUI 、Swiftuiのアクセス許可を表示および処理します。それは主にSppermissionsに触発されています。 UIは高度にカスタマイズ可能で、 Appleスタイルに似ています。プロジェクトが気に入ったら、 star ★お願いします。

permissionsswiftuiは、☀§ライトと?ダークモード。
onDisappear onAppearSPMを介してPermissionsSwiftuiをXcodeプロジェクトにインストールできます。 SPMの詳細については、ここをクリックしてください
Xcode 13の場合、ファイルに移動→パッケージを追加します
https://github.com/jevonmao/PermissionsSwiftUI )を貼り付け、 [次へ]をクリックします。(corepermissionsswiftuiまたはpermissionsswiftuiを追加する必要はありません)

Cocoapodsを使用してPermissionsSwiftUIをインストールすることもできます。ポッドファイルにpod 'PermissionsSwiftUI'を追加します:
platform :ios , '14.0'
target 'test abstract' do
use_frameworks!
pod 'PermissionsSwiftUI'
end 開始する前に、このリポジトリ
star ★てください。あなたの星は、全地区を引き、このオープンソースプロジェクトを維持する私の最大の動機です。
v1.4はこちらです!問題が発生した場合は、開発者が非難やAPIの更新を解決できるように設計された移行ガイドをご覧ください。
permissionsswiftuiを使用するには、任意のビューに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>を渡して、表示する許可を追加する必要があります。すべてのPermissionsSwiftuiのカスタマイズと構成をすばやく視線するには、チートシートをご覧ください!
許可テキストをカスタマイズするには、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 modifierの後、ルートレベルビューにsetPermissionComponentモディファイアを追加しますimageパラメーターはAnyViewを受け入れるので、SFシンボルまたはカスタムアセットを自由に使用してください。
. setPermissionComponent ( for : . camera ,
image : AnyView ( Image ( " Your-cool-image " ) )完全なSwiftuiビューでさえ機能しますか?:
. setPermissionComponent ( for : . camera ,
image : AnyView ( YourCoolView ( ) )コードの単一行を使用して、すべてのサポートされているアクセス許可にカスタムテキストとアイコンを使用できます。
ヘッダータイトルをカスタマイズするには、Modifier changeHeaderTo使用してください。 
. JMPermissions ( showModal : $showModal , for : [ . camera , . location , . calendar ] )
. changeHeaderTo ( " App Permissions " )ヘッダーの説明をカスタマイズするには、modifier 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 " )onDisappear onAppearコードを実行したり、PermissionsSwiftuiビューが表示されたり消えたりしたときに更新アクションを実行することが非常に便利だと感じるかもしれません。
Permissionsswiftuiビューが表示または消失したときにアクションを実行できます。
. JMPermissions ( showModal : $showModal , for : [ . locationAlways , . photo , . microphone ] , onAppear : { } , onDisappear : { } ) onAppearおよびonDisappear閉鎖パラメーターは、Permissionsswiftuiビューが表示され、消えるたびに実行されます。
JMAlert修飾子では、状態の変更のための同じビュー修飾子閉鎖が利用可能です。
. JMAlert ( showModal : $showModal ,
for : [ . locationAlways , . photo ] ,
onAppear : { print ( " Appeared " ) } ,
onDisappear : { print ( " Disappeared " ) } )PermissionsSwiftuiデフォルトでは、認証ステータスを自動的に確認します。現在、 notDeterminedステータスではない権限のみが表示されます。 (iOSシステムは、開発者が拒否された権限を要求することを妨げます。許可許可は、PermissionsSwiftUIによっても無視されます)。すべての許可が許可または拒否されている場合、PermissionsSwiftuiはモーダルまたはアラートをまったく表示しません。自動チェック承認を設定するには、 autoCheckAuthorizationパラメーターを使用します。
. JMModal ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )JMalertにも同じことが当てはまります
. JMAlert ( showModal : $showModal , for : [ . camera ] , autoCheckAuthorization : false )PermissionsSwiftuiデフォルトでは、自動解雇の動作はありません。この動作をオーバーライドして、ユーザーが最後の許可項目を許可すると、モーダルまたはアラートを自動的に却下できます。 (すべての許可を許可する必要があります。拒否された場合、自動却下はありません)。
. JMModal ( ... autoDismiss : Bool ) - > some View trueまたはfalseを渡して、ビューを自動的に却下するかどうかを選択します。
PermissionsWiftuiの機能を使用して、開発者とデザイナーは、すべてのUI色を信じられないほどの柔軟性でカスタマイズできます。カスタム色ですべての状態ですべての色を完全に構成できます。
アクセントの色を簡単に変更するには:
. setAccentColor ( to : Color ( . sRGB , red : 56 / 255 , green : 173 / 255 ,
blue : 169 / 255 , opacity : 1 ) )プライマリ(デフォルトのApple Blue)と三次(デフォルトの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 ) ) )上記の方法に関する詳細については、公式ドキュメントを参照してください。
PermissionsSwiftuiはデフォルトで、すべての権限が相互作用される前に、ユーザーがモーダルとアラートを却下しないようにします。これは、ユーザーが表示されているすべての許可を明示的に拒否していないか、許可していない場合、PermissionsSwiftuiビューを却下できないことを意味します。これにより、解雇行動はvar restrictModalDismissal: Boolまたはvar restrictAlertDismissal: Boolプロパティ。デフォルトの制限を無効にするには、却下の動作を制限します。
. 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は開発者が読み取りおよび書き込みタイプを明示的に設定する必要があるため、PermissionsSwiftuiはプロセスを大幅に簡素化します。
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 Buttonの色をカスタマイズします:
setAllowButtonColor ( to : )最後に自動的に却下します
autoDismiss: BoolJMModalとJMAlertのパラメーターモーダルまたはアラートを表示する前に、承認を確認してください
autoCheckAuthorization: Boolすべての権限が相互作用する前に却下を防ぎます
restrictDismissal: Boolビューが表示される直前に何かをしてください
onAppear: ( ) -> Voidビューが消える直前に何かをしてください
onDisappear: ( ( ) - > Void以下は、Swiftuiがサポートするすべての権限権限のリストです。うん、iOS 14の最新のtracking許可でさえ、ゲームのトップにとどまることができます。 Permissionsswiftuiのすべての権限には、デフォルトの名前、説明、見事なAppleネイティブSFシンボルアイコンが付属しています。
FaceID許可のサポートは、進行中の作業と近日公開予定です!必要な許可が見つからない場合は、問題を開きます。さらに良いことに、自分で構築してプルリクエストを開きます。新しいアクセス許可を追加する際のこのステップバイステップガイドに従うことができます。 
ここでは、コーダーと非コーダーの両方に貢献しています。あなたのスキルレベルが何であれ、特定の貢献を許可wiftuiのオープンソースコミュニティに貢献することができます。開始する前に貢献している.mdをお読みください。新しいタイプのiOS許可を寄付したい場合は、このステップバイステップガイドを必ずお読みください。
問題が発生した場合、懸念がある場合、またはコメントがある場合は、お気軽にお知らせください。議論、問題を開くか、私にメールしてください。開発者として、コードベースで何かを理解していないときは、あなたを感じます。私はできる限りコメントして文書化しようとしますが、あなたが何か問題に遭遇した場合、私はできる限りの方法で喜んで支援します。
Sppermissionsは、@verabeisによる有名なSwift Library SppermissionsのSwiftUiのリメイクが大きくなっています。 Sppermissionsは当初2017年に作成され、今日ではGithubの星を超えています。 Permissionsswiftuiは、Swiftuiに同じように美しく強力なライブラリを提供することを目指しています。あなたがstar ★私のプロジェクトを許可する場合は、UIデザイン、readme.mdページの一部、および途中で重要なソースコード参照を借りた元のプロジェクトsppermissionsを必ずチェックしてください。
PermissionsSwiftuiはJingwen(Jevon)Maoによって作成され、MITライセンスの下でライセンスされています