V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
ShikiSuen
V2EX  ›  iDev

AppKit 应用该如何监测系统 GateKeeper 需要向用户请求某本地 URL 的访问权限?

  •  
  •   ShikiSuen · 243 天前 · 744 次点击
    这是一个创建于 243 天前的主题,其中的信息可能已经有所发展或是发生改变。

    AppKit 应用该如何监测系统 GateKeeper 需要向用户请求某本地 URL 的访问权限?

    我是威注音输入法的作者。威注音输入法到 3.5.3 版为止允许用户直接指定 iCloud Drive 目录下的某个目录、作为输入法自订辞典(几个 txt 文件)的目录。

    但,如果这个用户就这样将系统升级到 macOS 14 的话,输入法会被系统提示「是否允许该输入法 app 访问您的 iCloud Drive 资料夹」。问题是这个「由输入法触发的」系统提示是在 main thread 上的,直接会让整个桌面失去响应(鼠标指针能移动,但整个桌面冻结+风火轮至少得有三四十秒,性急的用户肯定会强行断电重新开机)。

    所以我想知道该怎样检测 app 是否需要向用户请求这种权限。如果是的话,我会让这个输入法直接用 Finder 打开 iCloud 的辞典目录、且紧接着强制将输入法辞典目录改为自身的沙盒内的目录,以规避这个用户体验危机。这样一来,在 macOS 14 系统下,当用户自己亲自再将辞典目录改到 iCloud Drive 目录下之后,就会被系统记住是用户的主动行为设定,理论上就不会触发该警告。

    P.S.:

    1. 不太想用任何「会把 Xcode 专案搞得必须只能用签名者的 Developer Program ID 才能编译」的方法。
    2. 输入法有做沙盒处理。这恐怕是业界迄今为止唯一一款做了沙盒的 macOS 中文输入法。
    ShikiSuen
        1
    ShikiSuen  
    OP
       243 天前
    这个问题我暂时计划这样处理:在程序刚启动的时候,就检查是否可能会需要存取 iCloud Drive 、且提前解决存取权限问题。在使用者批准存取权限之前,拒绝执行 AppDelegate 。
    ShikiSuen
        2
    ShikiSuen  
    OP
       243 天前
    或者,在使用者批准存取权限之前,让 IMKInputController 的建构子检查这个工作,只要权限不够就返回 nil 。
    ShikiSuen
        3
    ShikiSuen  
    OP
       243 天前
    这招还真有用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1087 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:12 · PVG 07:12 · LAX 16:12 · JFK 19:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.