我有一個沙盒應用程序。我需要它在每次啓動時啓動一個輔助應用程序(從主應用程序的包中)。然而,這種失敗:從沙盒應用程序啓動助手
NSError *error;
[[NSWorkspace sharedWorkspace] launchApplicationAtURL:helperURL
options:NSWorkspaceLaunchDefault
configuration:nil
error:&error];
的錯誤是:
The application 「Helper」 could not be launched because it is corrupt., NSUnderlyingError=0x10214c700 "The operation couldn’t be completed. (OSStatus error -10827.)"}
現在,錯誤是誤導性的,因爲如果我禁用沙盒授權的應用程序啓動的罰款。顯然這是一個錯誤,據報道here。
我的問題是:是否有解決方法?
我可以用SMLoginItemSetEnabled
,描述here:
Pass
true
to start the helper application immediately and indicate that it should be started every time the user logs in. Passfalse
to terminate the helper application and indicate that it should no longer be launched when the user logs in.
但是,我不能使用這個API,而不要求用戶第一,因爲應用商店審查指南2.26:
Apps that are set to auto-launch or to have other code automatically run at startup or login without user consent will be rejected
因此,使用此解決方法意味着詢問用戶「每次登錄時啓動助手都可以?如果不是,則不能使用此應用程序!」顯然,這不是理想......
不確定這是否與rdar:// 10934199相關,因爲launchApplicationAtURL在沙箱下失敗,即使它嘗試的應用程序啓動已由用戶手動啓動 – valexa 2012-05-08 19:34:07
您是否可以獲得安裝用戶啓動代理的權限,該代理將檢查您的應用是否正在運行並啓動幫助程序? – Colin 2012-07-18 19:01:55