セキュリティ系の勉強、その他開発メモとか雑談. GithubはUnity触っていた頃ものがメイン Twitterフォローもよろしくです

【Swift5】AXIsProcessTrustedWithOptions(_:) アクセシビリティのダイアログ(Window)が表示されない[MacOS]

//



情報が乗ってないわけではないのですが、日本語のMacOSの解説が少ないので残しておきます。この記事での原因はaddGlobalMonitorForEventsです。

developer.apple.com

f:id:thinline196:20191224092338p:plain


環境

xcode Version 11.2.1 (11B500)
Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)



コード

コード自体は割と転がっています。新規Cocoa Projectを作って、AppDelegateapplicationDidFinishLaunching()メソッドに記述します。AXIsProcessTrustedWithOptions()を呼ぶことで、アプリケーションに許可がない時にダイアログを表示することができます。

 let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeRetainedValue() as NSString: true]
    if !AXIsProcessTrustedWithOptions(options){
     //タイマーでチェックし続けるなどをよくする
   }


原因

僕の場合は、addGlobalMonitorForEvents()(アプリを開いてなくてもバックグラウンドでイベントを仕込める)を利用していたので、AppSandboxを切る必要がありました。左のプロジェクト階層のトップを開いて、Sging&Capabilitiesタブを開きます。(Teamは設定しておくと良いかも) f:id:thinline196:20191224092934p:plain


AppSandboxの右上のxボタンを押して消します。 f:id:thinline196:20191224092940p:plain


これで表示されると思います。