2016-12-14 43 views
0

我目前正试图让一个应用程序只在管理员登录被输入到一个对话框时打开。我已经尝试使用一个AppleScript下面的方法下:如何在OSX Swift应用程序中请求管理员登录?

set adminLogin to do shell script "" with administrator privileges 
display dialog adminLogin 

这显示我想对话,我能投进一个NSTask这个演出呢。我甚至可以获取输出并使用它来关闭应用程序和if声明。

我想使用实际的应用程序而不是osascript来提及它需要管理员登录才能继续,并且这个scpt文件一旦我编译,构建并将其存档以便实际使用即消失,这意味着我必须重新将此文件创建后添加到我为此所做的所有客户端。它似乎不太有效,因为它依赖于不同的任务来进行快速登录,而这可能会被利用,而不是使用与应用程序相同的进程。

有没有一种方法可以以编程方式要求管理员登录以继续打开应用程序?我可以使用CoreLocation吗?或者我可以使用AuthorizationServices()来执行此任务吗?

+0

是否提交到Mac App Store的桌面应用程序? –

+0

没有@ElTomato,我不打算将其提交给App Store。 – dylan

回答

1

看看LocalAuthentication框架。有一个deviceOwnerAuthentication处理Touch ID和设备密码认证的政策。

LocalAuthentication框架参考:https://developer.apple.com/reference/localauthentication

deviceOwnerAuthentication: https://developer.apple.com/reference/localauthentication/lapolicy/1514164-deviceownerauthentication

+0

这适用于OSX应用程序,而不适用于iOS。如果您的意思是来自新Touchbar的Touch ID,我们正在使用2015 Macbook Air模型。 – dylan

+0

@dylan LocalAuthentication框架由10.10以后的macOS支持。它支持Touch ID和设备密码。尽管您可以指定最适合您用户群的策略。 –

相关问题