macOS端点安全扩展长时间手动批准后didFinishWithResult回调未触发排查
关于OSSystemExtensionRequestDelegate回调异常的问题
我正在开发一款端点安全扩展加载器,实现了OSSystemExtensionRequestDelegate代理对象的多个回调方法,重点关注以下两个回调:
public func request(_ request: OSSystemExtensionRequest, didFinishWithResult result: OSSystemExtensionRequest.Result); public func requestNeedsUserApproval(_ request: OSSystemExtensionRequest);
我遇到了以下异常现象:
- 若在扩展激活后间隔很长时间再手动批准它,扩展进程会启动,但
request(_:didFinishWithResult:)回调并未被调用,而requestNeedsUserApproval(_:)回调始终能正常触发。 - 查看统一日志后发现状态流转的不同表现:
- 当扩展状态从
activated_waiting_for_user -> activated_enabling -> activated_enabled流转时,上述完成回调不会被触发; - 当扩展状态变为
activated_waiting_for_user -> activated_disabled时,该回调却会被调用(这与预期不符,因为activated_disabled状态本应暗示激活失败)。
- 当扩展状态从
请问为何扩展在激活后长时间才被手动批准时,对应的完成回调不会被触发?
内容的提问来源于stack exchange,提问作者Zohar81
相关产品推荐
相关产品推荐

