前言
Xcode 10 https://developer.apple.com/xcode/ 已经正式发布,开发者可以接入 Siri Shortcuts 的 iOS 12 新特性.
WWDC2018 的 Introduction to Siri Shortcuts Session 介绍了 Siri Shortcuts 的使用和 Swift 接入, 但没有 Objective-C 版本的 demo.
于是新开此文, 介绍如何快速用 OC 接入 iOS 12 新特性 Siri Shortcuts.
正文
快速接入 Siri Shortcuts
Siri Shortcuts 的 API 有两大类: NSUserActivity 和 Intents.
使用 NSUserActivity 接入 Siri Shortcuts 简单高效, 只需十分钟.
1,plist 添加 activity type(Define Shortcut)
注意是 array 的类型, 每个元素是一个字符串, 这里定义的是 loying.LearnSiriShortcut.type;
- <key>
- NSUserActivityTypes
- </key>
- <array>
- <string>
- loying.LearnSiriShortcut.type
- </string>
- </array>
2, 配置 NSUserActivity 并通知 Siri(Donate Shortcut)
-initWithActivityType 接口的 type 参数要和 plist 一致;
eligibleForPrediction 是 iOS 12 新增 API, 如需支持老版本要添加 @available(iOS 12.0, *) 的判断;
userActivity 的 userInfo 属性是透传的参数值;
最后把 userActivity 赋值给 viewController 的 userActivity 属性;
- - (void)reportSiriShortcuts {
- NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:@"loying.LearnSiriShortcut.type"];
- userActivity.eligibleForSearch = YES;
- if (@available(iOS 12.0, *)) // 如果要支持老版本, 加上判断
- {
- userActivity.eligibleForPrediction = YES;
- }
- userActivity.title = @"测试标题";
- userActivity.userInfo = @{@"testKey" : @"testValue"};
- self.userActivity = userActivity;
- }
3, 在 AppDelegate 中处理 Siri 打开 App 请求 (Handle Shortcut)
通过 userActivity 的 type 值判断是否为 Siri Shortcuts 呼起, 做相应的逻辑处理.
- - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
- NSLog(@"continueUserActivity");
- if ([userActivity.activityType isEqualToString:@"loying.LearnSiriShortcut.type"]) {
- // 做自己的业务逻辑
- }
- return YES;
- }
至此接入 Siri Shortcuts 完毕, 仅需三步!
下面根据 WWDC 的视频详细介绍 Siri Shortcuts 的新特性.
Siri Shortcuts 的特性解析
Siri Shortcuts 提供的能力有两个:
1,Suggestion(建议)
用户重复, 固定的行为, 通过不断的告知 siri,siri 会在确定用户习惯后, 会发本地推送提醒用户;
比如说某个用户习惯每天晚上 11 点的时候用微信读书进行阅读, 如果微信读书把用户每次的行为发送给 Siri, 那么 Siri 在学习到用户的习惯之后, 会在适当时候通过本地推送提示用户, 推送的截图如下:
2,Shortcuts(短语快捷方式)
把 App 的常用操作行为与短语挂钩, 通过设置好的短语可以快捷使用 App 的功能;
WWDC 以点外卖为例, 通过设置好的短语 coffee time, 可以呼起 App, 也可以直接在 Siri 界面进行下单操作;
coffee time
以上的功能都需要特定的使用场景:
1,App 的关键功能;
2, 用户有重复性的行为;
3, 随时都可以执行;
不满足以上三个要求的功能, 苹果不推荐使用 Siri Shortcuts.
Siri Shortcuts 的使用
iOS 12 的开发者选项增加了 Display Recent Shortcuts, 打开之后可以显示最近发送给 Siri 的 Shortcuts;
如下, 向 Siri 发送了名为 "测试标题" 的 Shortcuts;
在添加 Siri Shortcuts 之后, 本地搜索时能找到对应的 Shortcuts, 点击之后会执行定义好的 Shortcuts 操作;
在 App 添加 Shortcuts 之后, 可以在系统设置中录制 Siri Shortcuts 的快捷短语:
录制短语之后, 可以通过 Siri 快速呼起 App 对应的功能:
注意事项
1,Siri 语言版本可以设置成中文 / 英文, 需要与短语的语言类型一致;
2, 检查项目中是否已存在接口 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler;(实际开发过程, 因为 UniversalLink 接入, 在 Category 已经实现这个 delegate, 导致在 AppDelegate.m 实现的接口没有回调)
附录
苹果开发者文档
苹果官方的 demo
本文的 demo
招聘启事
北京招聘 Vulkan 图形开发工程师
受人所托, 现帮忙发一则 Vulkan 图形开发工程师招聘消息.
要求: 熟练掌握 OpenGL ES,Vulkan 等图形库的使用, 最好有丰富的图形工程实践经验.
来源: https://www.qcloud.com/developer/article/1346344