5

我们开发了一个授权插件,它使用 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 版本

在优胜美地发布之前,这段代码对我们来说运行良好。

有人在尝试类似的问题吗?任何想法或建议来解决这个问题?

4

1 回答 1

1

而不是靠近窗口,您应该覆盖 didDeactivate 方法并添加调用:

[self didDeactivate];

在将结果设置为 ALLOW 之后的 SFAuthorizationPluginView 类中。

Apple 更新了他们的文档,你可以重新阅读它,有一些很好的指南可以在一年前为我节省很多时间和精力。

于 2014-11-27T10:19:44.783 回答