应用程序更新后重置辅助权限

问题描述 投票:0回答:2

我制作了一个应用程序,要求用户授予辅助功能的权限。当应用程序首次启动并请求可访问性时,它的工作方式如下

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);

问题是,当我发布新版本(使用sparkle)时,可访问权限消失了,因此用户应该再次授予权限。这是因为我的代码没有使用 Apple Developer ID 签名吗?我正在应用程序商店之外分发我的应用程序。

objective-c macos sparkle
2个回答
8
投票

我没有办法对此进行测试,但我希望当用户批准应用程序的可访问性时,它会为应用程序创建一个临时代码签名,并随后使用该签名来识别应用程序。新版本,甚至同一版本的另一个副本,不会具有相同的签名,因此出于可访问性目的,不会被识别为“相同”应用程序。

解决方案:对应用程序进行签名,并使用相同的代码签名证书对后续版本进行签名。 Apple 提供的开发者 ID 证书对此很有帮助(并且也会让 Gatekeeper 满意),但我认为任何随机代码签名证书都可以让可访问性识别它(前提是您始终使用相同的证书)。


0
投票

这个仍然是macOS的问题。我提交了反馈 FB13704792,希望他们能够解决这个问题,因为当您需要更改签名证书时,它会为付费客户提供糟糕的用户体验...

© www.soinside.com 2019 - 2024. All rights reserved.