代码变更和新构建版本(Xcode/Swift模拟键盘输入)后,MacOS辅助功能API不工作

aamkag61  于 2023-01-08  发布在  Swift
关注(0)|答案(2)|浏览(114)

我发现了这段代码,并一直在用于一个应用程序,该应用程序可以将蓝牙激光测距设备的测量结果粘贴到聚焦应用程序中。
当我第一次运行它的时候,MacOS提示我允许它使用辅助功能,我就允许了。然后它就像我怀疑的那样工作了。但是如果我修改了代码中的一些东西并重新编译它,它就不再工作了。然后我必须首先从“首选项”/“安全性”/“隐私”/“辅助功能”中删除我的应用程序,然后再次运行它。然后它再次请求权限,然后工作了。
你知道我做错了什么吗?我是一个相当初学者,只是因为我需要一个Mac应用程序的设备才重新开始编码。

func pasteMatchStyle() {
    /*Source: https://stackoverflow.com/questions/40096457/swift-macos-how-to-paste-into-another-application?noredirect=1&lq=1
    */
    
    let event1 = CGEvent(keyboardEventSource: nil, virtualKey: 0x09, keyDown: true) // opt-shft-cmd-v down
    event1?.flags = [CGEventFlags.maskCommand, CGEventFlags.maskShift, CGEventFlags.maskAlternate]
    event1?.post(tap: CGEventTapLocation.cghidEventTap)
    
    let event2 = CGEvent(keyboardEventSource: nil, virtualKey: 0x09, keyDown: false) // opt-shf-cmd-v up
    event2?.post(tap: CGEventTapLocation.cghidEventTap)
}
jrcvhitl

jrcvhitl1#

如果你只是取消选中并重新选中权限框,然后重新运行你的应用程序,它应该工作。
辅助功能权限仅适用于已批准的应用,但您构建了系统已标识为不同的新版本(请阅读:不受信任),* 但该旧版本仍被批准 *,因此该框保持选中状态。

46qrfjad

46qrfjad2#

我在那里花了很多时间。
最后,我把它整理出来,希望它能和你遇到的问题一样。
您可能尚未在macOS应用程序上设置App Sandbox

Go to project setting -> Signing & Capabilities -> + Capability -> Add App Sandbox.

在Xcode项目的Signing & Capability选项卡上显示如下:

(It勾选了哪些选项并不重要)
参加派对太晚了,但至少在2023年对我现在有效。
我想这可能是你遇到的稍微不同的问题,
但我希望它能帮助其他开发人员处理这个问题。

相关问题