sft*_*tsz 4 macos objective-c sparkle
我制作了一个应用程序,要求用户授予可访问性功能的权限。它在应用程序首次启动并要求可访问性时正常工作
const void * keys[] = { kAXTrustedCheckOptionPrompt };
const void * values[] = { force };
CFDictionaryRef options = CFDictionaryCreate(kCFAllocatorDefault,
keys,
values,
sizeof(keys) / sizeof(*keys),
&kCFCopyStringDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
access = AXIsProcessTrustedWithOptions(options);
CFRelease(options);
Run Code Online (Sandbox Code Playgroud)
问题是,当我发布新版本(使用 sparkle)时,可访问性权限消失了,所以用户应该再次授予权限。那是因为我的代码没有使用 Apple Developer ID 签名吗?我正在应用商店之外分发我的应用。
我没有办法对此进行测试,但我希望当用户批准该应用程序的可访问性时,它会为该应用程序创建一个临时代码签名,然后使用该签名来识别该应用程序。新版本,甚至是同一版本的另一个副本,将不会具有相同的签名,因此不会出于可访问性目的而被识别为“相同”的应用程序。
解决方案:对应用进行签名,并使用相同的代码签名证书对后续版本进行签名。Apple 提供的开发人员 ID 证书对此很有用(并且也会让 Gatekeeper 满意),但我认为任何随机代码签名证书都可以让无障碍识别它(前提是您始终使用相同的证书)。
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |