一个用于 Mac OS 的简单文件管理器集成。Mavericks 引入了文件扩展,因此开发人员可以最终将右键点击动作集成到文件管理器中。尽管如此,集成并不容易——文件扩展的开发相当痛苦。
RCBRightClick 提供了简单的文件管理器集成。您只需注册操作名称,要调用的方案以及选中文件的详细信息(以及可选地)您感兴趣的文件类型。
Right Click Booster 是 Mac App Store 上的一款免费应用程序,允许用户在文件管理器中文件的右键上运行脚本。
它使用文件扩展来完成此操作——这个过程相当痛苦。
现在它提供了一个接口,您可以直接将右键动作添加到您的应用程序中,而无需构建完整的文件扩展,也不需要通过应用商店发布您的应用程序。
使用 Cocoapods 安装
pod 'RCBRightClick'
您的扩展应在用户操作的结果(例如点击一个“是的,请执行此操作”按钮)后安装。
[RCBRightClick registerExtensionWithName:@"Do something in my app"
scheme:@"myscheme"];
如果尚未安装,将提示用户安装 Right Click Booster。
一旦安装了 Right Click Booster,他们将要求确认是否希望安装此扩展。
当用户点击链接时,您的应用程序将通过您注册的方案被调用。
要获取回调,您需要在您的 App Delegate 中添加以下操作:
1) 在 init 方法中,注册您的 URL 处理程序
-(id)init
{
self=[super init];
if (self)
{
[[NSAppleEventManager sharedAppleEventManager] setEventHandler:self
andSelector:@selector(handleURLEvent:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
}
return self;
}
现在您可以处理回调。[RCBRightClick pathsFromURL:url] 提供了一个所选路径的数组。
- (void)handleURLEvent:(NSAppleEventDescriptor*)event withReplyEvent:(NSAppleEventDescriptor*)replyEvent
{
NSString *urlString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
NSURL *url=[NSURL URLWithString:urlString];
NSString *scheme = [[url scheme] lowercaseString];
NSLog(@"scheme: %@, string: %@",scheme,urlString);
if ([scheme isEqualToString:@"myscheme"])
{
[[NSAlert alertWithMessageText:@"My extension called"
defaultButton:@"Ok"
alternateButton:nil
otherButton:nil
informativeTextWithFormat:@"Called for paths:\n%@",[RCBRightClick pathsFromURL:url]] runModal];
}
}
最后,您需要在项目的信息选项卡中添加您的方案作为 URL 类型。
您可以为您的扩展注册更多信息...
[RCBRightClick registerExtensionWithName:@"RCB PNG JPEG Test"
scheme:@"rcbtest2"
filetypes:@[@"png",@"jpg",@"jpeg"]
image:[NSImage imageNamed:@"113-navigation.png"]
callbackScheme:@"rcbdemocallback"
];
filetypes 是一个逗号分隔的类型列表,当这些类型被触发时,应调用您的扩展。如果您想接收目录,可以使用 @"directory"。
image 允许您设置一个图像,该图像将在您的操作右侧点击选项中出现
callback scheme 允许您注册一个回调,以便 RCB 返回有关扩展是否成功安装的信息。它遵循 x-callback-url 规范。有关处理回调的信息,请参阅演示项目。
示例项目展示了各种扩展的安装和处理方法,包括安装回调,以及如何从回调响应中获取路径。
如果您使用RCB - 请告知我,以便我可以记录与RCB兼容的应用程序列表。(或者简单地将您的应用程序添加到维基页面)。