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

摘要:前言Xcode 10已经正式发布,开发者可以接入Siri Shortcuts的iOS 12新特性。WWDC2018的Introduction to Siri Shortcuts Session详情了Siri Shortcuts的使用和Swift接入,但没有Objective-C版本的demo。于是新

前言

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实现的接口没有回调)

附录

苹果开发者文档
苹果官方的demo
本文的demo

招聘启事

北京招聘Vulkan图形开发工程师
受人所托,现帮忙发一则Vulkan图形开发工程师招聘消息。
要求:熟练掌握OpenGL ES、Vulkan等图形库的使用,最好有丰富的图形工程实践经验。
工作地点:北京
有意向熊皮皮联络,微信migao117842

  • 全部评论(0)
最新发布的资讯信息
【系统环境|服务器应用】Spring02——实现动态代理商阻拦器(2018-10-20 23:18)
【系统环境|服务器应用】Spring01——SpringIoC容器(2018-10-20 23:17)
【系统环境|服务器应用】最大堆进阶:堆排序及其优化(2018-10-20 23:17)
【系统环境|服务器应用】【一文读懂】百度一下,背后可不只是简单的一下(2018-10-20 23:17)
【系统环境|服务器应用】注意!这5种搜索套路,让你资源搜索不求人(2018-10-20 23:17)
【系统环境|服务器应用】Java线程池---Executor框架源码深度解析(2018-10-20 23:16)
【系统环境|服务器应用】X.509证书认证模式简介(2018-10-20 23:16)
【系统环境|服务器应用】Spring Security权限框架理论与实战(二)-常用权限阻拦器(2018-10-20 23:16)
【系统环境|服务器应用】做程序员太辛苦了, 我想换行,我该怎样办? “敲一下回车。”(2018-10-20 23:16)
【系统环境|服务器应用】mysql中使用select的正确姿势你知道吗?(2018-10-20 23:16)
手机二维码手机访问领取大礼包
返回顶部