2016-12-14 49 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和設備密碼。儘管您可以指定最適合您用戶羣的策略。 –

相關問題