【Swift5】AXIsProcessTrustedWithOptions(_:) アクセシビリティのダイアログ(Window)が表示されない[MacOS]
//
情報が乗ってないわけではないのですが、日本語のMacOS
の解説が少ないので残しておきます。この記事での原因はaddGlobalMonitorForEvents
です。
環境
xcode Version 11.2.1 (11B500) Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
コード
コード自体は割と転がっています。新規Cocoa Project
を作って、AppDelegate
のapplicationDidFinishLaunching()
メソッドに記述します。AXIsProcessTrustedWithOptions()
を呼ぶことで、アプリケーションに許可がない時にダイアログを表示することができます。
let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeRetainedValue() as NSString: true] if !AXIsProcessTrustedWithOptions(options){ //タイマーでチェックし続けるなどをよくする }
原因
僕の場合は、addGlobalMonitorForEvents()
(アプリを開いてなくてもバックグラウンドでイベントを仕込める)を利用していたので、AppSandbox
を切る必要がありました。左のプロジェクト階層のトップを開いて、Sging&Capabilities
タブを開きます。(Teamは設定しておくと良いかも)
AppSandbox
の右上のxボタンを押して消します。
これで表示されると思います。