2015-07-02 18 views
9

Sto integrando l'estensione FinderSync nella mia applicazione Cocoa per mostrare badge in file e cartelle. Guarda lo scenario sotto due:Come abilitare l'estensione FinderSync nelle preferenze di sistema in Cocoa - Obiettivo C

1) Quando eseguo l'applicazione utilizzando l'estensione FinderSync (come DemoFinderSync) guarda il popup blu nell'immagine sottostante, in tal caso l'estensione viene aggiunta in Preferenze di sistema con segno di spunta e la chiama classe principale "FinderSync.m" pure.

Screen shot 1

2) Quando eseguo un'applicazione che utilizza il mio schema di applicazione (come DemoApp) cerca il popup blu nell'immagine qui sotto, in si aggiunge quel caso di estensione in Preferenze di Sistema, ma senza segno di spunta e che principal la classe "FinderSync.m" non chiama e l'estensione FinderSync non funziona in questo caso.

Screen Shot 2

Così qualcuno ha un'idea su come abilitare Finder estensione nella preferenze di sistema utilizzando secondo scenario.

Qualsiasi aiuto è apprezzato .. !!

risposta

7

ho avuto la soluzione:

codice per attivare Extension (ID fascio)

system("pluginkit -e use -i YourAppBundleID") 

codice per disattivare l'estensione (ID fascio)

system("pluginkit -e ignore -i YourAppBundleID") 

Prima ho usato:

system("pluginkit -e use -i AppBundleID.FinderSync") 

quindi basta rimuovere ".FinderSync" dal suo funzionamento.

+0

Ciao, sto affrontando un problema simile nella mia app.L'applicazione è firmata da un certificato attendibile ma quando l'app viene lanciata per la prima volta su un Mac, l'estensione non è abilitata automaticamente.Tutti i cavi? –

+0

Domande correlate: https://stackoverflow.com/questions/44117848/adding-product-module-name-to-nsextensionprincipalclass-in-findersync-plist-cras https://stackoverflow.com/questions/44017346/how-to- lanciare-finder-sync-extension-on-lancio-the-main-app –

7

non-debug schema (#if DEBUG!):

system("pluginkit -e use -i com.domain.my-finder-extension"); 

Quando si esegue sotto debugger dare percorso al proprio interno direttamente:

NSString *pluginPath = [[[NSBundle mainBundle] builtInPlugInsPath] stringByAppendingPathComponent:@"My Finder Extension.appex"]; 
NSString *pluginkitString = [NSString stringWithFormat:@"pluginkit -e use -a \"%@\"", pluginPath]; 
system([pluginkitString cStringUsingEncoding:NSUTF8StringEncoding]); 

specificare questo nel metodo applicationDidFinishLaunching. Dovresti anche attivarlo manualmente una sola volta in modo che se l'utente disattiva la tua estensione nelle Preferenze di Sistema, non la accendi ogni volta che si avvia l'applicazione. Ho impostato una chiave NSUserDefaults la prima volta che l'utente avvia la mia app con il supporto dell'estensione di sincronizzazione finder.

+0

Non funziona .. :( – jigs

+0

Aggiunge la preferenza di sistema ma non abilita come segno di spunta come mostrato nella seconda schermata della domanda sopra riportata. – jigs

+0

Guarda la pagina man per plug-plug e prova tramite la riga di comando per – dbainbridge