我们开发了一个授权插件,它使用 SFAuthorizationPluginView 向用户呈现 UI。此示例基于 Apple 提供的“旧” NameAndPassword 示例。
我们正在使用这个授权插件来解锁会话(我们已经更新了授权数据库中的“system.login.screensaver”授权)使用自定义视图。这在 Yosemite 的最后一次更新之前一直很好。从优胜美地开始,SFAuthorizationPluginView 在用户登录会话后不再关闭。我们可以通过执行以下操作更新示例以强制关闭窗口:
// confirm that we have authorized the user
[self callbacks]->SetResult ([self engineRef], kAuthorizationResultAllow);
// close the window
NSView* v = [self viewForType:SFViewTypeCredentials];
NSWindow* w = [v window];
[w close];
现在 SFAuthorizationPluginView 在用户登录后很好地关闭(在我们授权用户之后),但某些东西在后台保持活动状态并且用户在会话中没有焦点(用户无法选择某些东西或在文本编辑中写入例子)。我们必须手动杀死 SecurityAgent 才能再次获得焦点。(请注意,系统似乎会在 30 秒后自动终止 SecurityAgent)。
我们在以下页面找到了 Apple 的 NameAndPassword 身份验证插件示例的固定 2014 版本,但我们在 Yosemite 上遇到了同样的问题: Apple 的 NameAndPassword 身份验证插件示例的固定 2014 版本
在优胜美地发布之前,这段代码对我们来说运行良好。
有人在尝试类似的问题吗?任何想法或建议来解决这个问题?