/ / No se puede agregar un elemento en el menú contextual del Finder utilizando servicios en Cocoa - macos, cacao, servicio, menú contextual, buscador

No se puede agregar un elemento en el menú contextual del Finder usando servicios en Cocoa - macos, cocoa, service, contextmenu, finder


Me gustaría agregar un elemento en el menú contextual de mi Finder cada vez que hago clic derecho en archivos o carpetas, y este menú está vinculado a un método de mi aplicación Cocoa.
Estoy siguiendo el ejemplo de CocoaDev y la documentación de Apple, pero no puedo mostrar el servicio.
Aquí está mi .h

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate,NSObject>

@property (assign) IBOutlet NSWindow *window;
-(void)IClicked:(NSPasteboard *)pboard
userData:(NSString *)data
error:(NSString **)error;

@end

.metro

#import "AppDelegate.h"

@implementation AppDelegate
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[NSApp setServicesProvider:self];
}

- (void)IClicked:(NSPasteboard *)pboard userData:(NSString *)data error:(NSString **)error
{
NSLog(@"I clicked");
}

@end

y el extracto de mi Application-plist.info:

<key>NSServices</key>
<array>
<dict>
<key>NSKeyEquivalent</key>
<dict>
<key>default</key>
<string>E</string>
</dict>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>My Application</string>
</dict>
<key>NSMessage</key>
<string>IClicked</string>
<key>NSPortName</key>
<string>TestService</string>
<key>NSSendFileTypes</key>
<array>
<string>public.item</string>
</array>
<key>NSSendTypes</key>
<array>
<string>NSPasteboardTypeString</string>
</array>
<key>NSRequiredContext</key>
<dict>
<key>NSServiceCategory</key>
<string>public.item</string>
</dict>
<key>NSReturnTypes</key>
<array>
<string>NSPasteboardTypeString</string>
</array>
</dict>
</array>
</dict>

Subí el código a http://www.petits-suisses.ch/TestService.zip.

¿Qué hice mal, o hay algún código Cocoa disponible que pueda descargar para entender lo que hice mal?

Gracias !

Respuestas

6 para la respuesta № 1

Encontrado los problemas:
1. Realmente tuve que almacenar mi aplicación al menos una vez en la carpeta Aplicaciones (que no se hace de manera predeterminada cuando compila con Xcode)
2. Debería haber agregado NSUpdateDynamicServices (); después de la [NSApp setServicesProvider: self]; mando.
3. Espere aproximadamente 10 segundos después de haber iniciado la aplicación para que se complete el menú de Servicios del Finder.