系统Service
简介
Service 是 OSX 应用提供对外服务能力的一种机制
应用遵循约定的方法实现,申明自己为服务的提供者,服务的请求方使用者利用 Service 服务来增强自己应用的功能,提供更好的用户体验
OSX 系统本身提供了大量的服务,通过这些服务能极大的增强单个应用的能力,用户不需要打开其他应用就能获得这项功能的使用
打开系统设置,Shortcuts-> Keyboard> Services 里面可以看到系统中所有的 Services,这里面既包括系统各种应用提供的 Service,也包括安装的第三方应用提供的 Services
另外Finder中也有大量的服务
Service处理流程
Service中有 2 类角色:
- Service 服务提供者
- Service 服务使用者
以剪贴板为例,有如下关系图:
- Copy 阶段:服务使用者将需要处理的数据写入系统聘贴板对象
- Read 阶段:服务提供者从系统剪贴板获取数据
- Write 阶段:服务提供者处理完成将结果数据写回剪贴板
- Paste 阶段:服务使用者得到处理完成的数据
不是所有的 Service 都需要这 4 个阶段,Service 根据处理流程不同分为 2 类
Processor:这类服务仅仅对数据做处理,只有 copy 和 read 两个阶段。比如一个邮件 Service,选择文本内容,通过服务发送
Provider:服务做为提供者,包括完整的四阶段处理流程。对数据处理完成后需要将处理结果回调给触发服务的应用。
Service服务的定义
Service服务提供方编程
1 实现Service功能接口
2 申明Service
3 注册Service服务
4 测试Service功能
Service服务使用方编程
系统的 NSTextField, NSTextView 等输入控件已经自动实现了服务请求相关方法。如果需要实现自定义的 NSView 控件现服务请求处理,基本的处理流程如下:
-
- 注册服务请求和结果的数据类型
-
- 实现系统服务请求时服务菜单项是否出现的校验
-
- 发送需要处理的数据到剪贴板
-
- 获取数据完成的数据从剪贴板