十分钟接入iOS 12新特性——Siri Shortcuts

前言

Xcode 10已经正式发布,开发者可以接入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实现的接口没有回调)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华仔的技术笔记

iOS应用架构谈 view层的组织和调用方案 pragma mark - life cyclepragma mark - life cyclepragma mark - getters and set

36180
来自专栏儿童编程

《爱溜达的小黄猫》——儿童学编程Scratch2”运动(Motion)“部分

Scratch2非常容易上手,无论对儿童还是零基础的成年人来说,都非常有趣。操作起来就像搭积木一样简单有趣。也许你印象里的编程是满屏代码,不知所云。而这里,编写...

41850
来自专栏企鹅号快讯

什么样的密码才是安全的?

什么样的密码才是安全的?相信这样的老生常谈你已经听腻了:密码设置得长一些,混合数字字母符号,避免任何可能容易联系到你本身的密码。但现实是在街头调查中大多数人并没...

20460
来自专栏编程一生

IO和socket编程

13930
来自专栏待你如初见

相关资源

32510
来自专栏Golang语言社区

【Golang语言社区】--无线视频监控传输原理

监视前端一体摄像机安装在圆形防护罩内,内带全方位云台。摄制的图像转换成视频信号传输到微波发射机的调制端,微波发射机将其加载到载波上,经微波天线定向辐射到监控中心...

50290
来自专栏我是攻城师

Java与Node.js的较量--一场史诗之战

79660
来自专栏安恒信息

通用缓解措施和多维度攻击简介

  DEP(Data Execution Prevention,数据执行保护)这东西很多人都知道,但ASLR(Address space layout rand...

37480
来自专栏北京马哥教育

SDN有哪些开源项目?

SDN 之所以能够发展的如此之快,其中开源社区的贡献不容忽视。随着SDN 各类社区的不断发展状大,开源项目也在不断增多,从控制器到交换机再到网络虚拟化,开源...

41980
来自专栏地方网络工作室的专栏

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(十一)阶段性小结

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(十一)阶段性小结 前情回顾 去年写的那一套东西,虽然我也写得非常的认真,...

22690

扫码关注云+社区

领取腾讯云代金券