Ho bisogno di scrivere una funzione che aggiunge la mia applicazione agli elementi di avvio su OS X 10.11. Questo è quello che ho trovato in questo momento:Avvia l'avvio di Swift Cocoa all'avvio su OS X 10.11
func applicationIsInStartUpItems() -> Bool {
return (itemReferencesInLoginItems().existingReference != nil)
}
func itemReferencesInLoginItems() -> (existingReference: LSSharedFileListItemRef?, lastReference: LSSharedFileListItemRef?) {
if let appUrl : NSURL = NSURL.fileURLWithPath(NSBundle.mainBundle().bundlePath) {
let loginItemsRef = LSSharedFileListCreate(nil, kLSSharedFileListSessionLoginItems.takeRetainedValue(), nil).takeRetainedValue() as LSSharedFileListRef?
if loginItemsRef != nil {
let loginItems: NSArray = LSSharedFileListCopySnapshot(loginItemsRef, nil).takeRetainedValue() as NSArray
if(loginItems.count > 0) {
let lastItemRef: LSSharedFileListItemRef = loginItems.lastObject as! LSSharedFileListItemRef
for var i = 0; i < loginItems.count; ++i {
let currentItemRef: LSSharedFileListItemRef = loginItems.objectAtIndex(i) as! LSSharedFileListItemRef
if let itemURL = LSSharedFileListItemCopyResolvedURL(currentItemRef, 0, nil) {
if (itemURL.takeRetainedValue() as NSURL).isEqual(appUrl) {
return (currentItemRef, lastItemRef)
}
}
}
return (nil, lastItemRef)
} else {
let addatstart: LSSharedFileListItemRef = kLSSharedFileListItemBeforeFirst.takeRetainedValue()
return(nil,addatstart)
}
}
}
return (nil, nil)
}
func toggleLaunchAtStartup() {
let itemReferences = itemReferencesInLoginItems()
let shouldBeToggled = (itemReferences.existingReference == nil)
if let loginItemsRef = LSSharedFileListCreate(nil, kLSSharedFileListSessionLoginItems.takeRetainedValue(), nil).takeRetainedValue() as LSSharedFileListRef? {
if shouldBeToggled {
if let appUrl : CFURLRef = NSURL.fileURLWithPath(NSBundle.mainBundle().bundlePath) {
LSSharedFileListInsertItemURL(loginItemsRef, itemReferences.lastReference, nil, nil, appUrl, nil, nil)
}
} else {
if let itemRef = itemReferences.existingReference {
LSSharedFileListItemRemove(loginItemsRef,itemRef);
}
}
}
}
Ma LSSharedFileListCreate
, LSSharedFileListInsertItemURL
, LSSharedFileListItemRemove
, kLSSharedFileListItemBeforeFirst
, LSSharedFileListItemCopyResolvedURL
, LSSharedFileListCopySnapshot
, kLSSharedFileListSessionLoginItems
stati deprecati in OS X 10.11. Come farlo funzionare sull'ultima versione di Mac OS? Come cambiare o riscrivere questo codice?
Bello e davvero di aiuto rispondere, anche dopo tanto tempo! –
Dove è definito 'NCConstants.KILLME'? –
Nell'applicazione di avvio AND l'applicazione principale. Puoi definirlo in questo modo: class NCConstants { // Notifica costante statico let KILLME = Notification.Name ("killme")} – Thomas