2015-07-02 28 views
9

Dosya ve klasörlerdeki rozetleri göstermek için FinderSync Extension'ı kakao Uygulamamda bütünleştiriyorum. Aşağıdaki iki senaryoya bakın:Kakaoda Sistem Tercihinde FinderSync Uzantısı nasıl etkinleştirilir - Objective C

1) FinderSync Uzantısı'nı (DemoFinderSync gibi) kullanarak uygulamayı çalıştırdığımda, aşağıdaki resimde mavi açılan pencereye bakın; bu durumda Uzantı, Sistem Tercihi Onay işaretine eklenir ve Ayrıca ana sınıf "FinderSync.m". Bu durumda Uzatma Sistemi Tercihi ama onay işareti ve bu madde olmadan eklenir içinde

Screen shot 1

2) i) DemoApp gibi benim Uygulama Programı (kullanarak uygulamayı çalıştırdığınızda, aşağıdaki resimde mavi açılır bakmak "FinderSync.m" sınıfı çağrı yapmaz ve FinderSync Extension bu durumda çalışmaz.

Screen Shot 2

Yani biri ikinci senaryoyu kullanarak Sistem Tercihi Finder Uzantısı etkinleştirme bir fikrim var.

Herhangi bir yardım için teşekkür ederiz .. !!

cevap

7

bir çözümüm var
system("pluginkit -e use -i AppBundleID.FinderSync") 

sadece ".FinderSync" çalışmasını kaldırın.

+0

Merhaba, Uygulamamda benzer bir sorunla karşı karşıyayım.Uygulama güvenilir bir sertifika tarafından imzalandı ancak uygulama ilk kez bir macda başlatıldığında, uzantı otomatik olarak etkin değil.Oluşturur? –

+0

İlgili sorular: https://stackoverflow.com/questions/44117848/adding-product-module-name-to-nsextensionprincipalclass-in-findersync-plist-cras https://stackoverflow.com/questions/44017346/how-to- başlatmak-bulucu-senkron-uzantısını-on-başlatılması-ana-app –

7

Olmayan ayıklama şeması (#if DEBUG!):

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

sizin applicationDidFinishLaunching yönteminde bu belirtin:

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

ayıklayıcı altında çalışan doğrudan uzantısı yolunu verir. Ayrıca, bunu bir kez manuel olarak açmanız gerekir, böylece kullanıcı, Sistem Tercihleri'nde uzantınızı kapatırsa, uygulamanız her başlatıldığında onu açmazsınız. Kullanıcı, bulucu senkronizasyon uzantısı desteğine sahip olan uygulamanızı ilk kez başlattığında bir NSUserDefaults anahtarı ayarlıyorum.

:

Kod Uzantısı (grup kimliği) Uzantısı (grup kimliği)

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

i kullanılan önce devre dışı bırak

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

Kod etkinleştir:

+0

Onun çalışmıyor .. :( – jigs

+0

Sistem tercihini ekleyin ama yukarıda görüntülenen sorgunun ikinci ekran görüntüsünde gösterildiği gibi onay işareti olarak etkinleştirmeyin .. – jigs

+0

Eklenti için man sayfasına gidin ve komut satırından test edin. – dbainbridge