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

本文详细介绍了如何使用Objective-C在iOS12上快速接入SiriShortcuts,包括配置NSUserActivity、处理Siri请求及SiriShortcuts的新特性解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

640?wx_fmt=gif

640?wx_fmt=jpeg

程序员大咖 点击右侧关注,免费进阶高级! 640?wx_fmt=jpeg


作者:落影loyinglin

链接:https://www.jianshu.com/p/edda18023a7b


前言


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。


640?wx_fmt=other


使用NSUserActivity接入Siri Shortcuts简单高效,只需十分钟。


640?wx_fmt=other


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;
}</id<uiuseractivityrestoring>




至此接入Siri Shortcuts完毕,仅需三步!


下面根据WWDC的视频详细介绍Siri Shortcuts的新特性。


Siri Shortcuts的特性解析


Siri Shortcuts提供的能力有两个:


1、Suggestion(建议)


用户重复、固定的行为,通过不断的告知siri,siri会在确定用户习惯后,会发本地推送提醒用户;


比如说某个用户习惯每天晚上11点的时候用微信读书进行阅读,如果微信读书把用户每次的行为发送给Siri,那么Siri在学习到用户的习惯之后,会在适当时候通过本地推送提示用户,推送的截图如下:


640?wx_fmt=other


2、Shortcuts(短语快捷方式)


把APP的常用操作行为与短语挂钩,通过设置好的短语可以快捷使用APP的功能;

WWDC以点外卖为例,通过设置好的短语coffee time,可以呼起APP,也可以直接在Siri界面进行下单操作;


640?wx_fmt=othercoffee time


以上的功能都需要特定的使用场景:


1、App的关键功能;


2、用户有重复性的行为;


3、随时都可以执行;


不满足以上三个要求的功能,苹果不推荐使用Siri Shortcuts。


Siri Shortcuts的使用


iOS 12的开发者选项增加了Display Recent Shortcuts,打开之后可以显示最近发送给Siri的Shortcuts;


640?wx_fmt=other


如下,向Siri发送了名为“测试标题”的Shortcuts;


640?wx_fmt=other


在添加Siri Shortcuts之后,本地搜索时能找到对应的Shortcuts,点击之后会执行定义好的Shortcuts操作;


640?wx_fmt=other


在APP添加Shortcuts之后,可以在系统设置中录制Siri Shortcuts的快捷短语:

640?wx_fmt=other


制短语之后,可以通过Siri快速呼起APP对应的功能:


640?wx_fmt=other

事项


1、Siri语言版本可以设置成中文/英文,需要与短语的语言类型一致;


2、检查项目中是否已存在接口- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id> * _Nullable))restorationHandler;(实际开发过程,因为UniversalLink接入,在Category已经实现这个delegate,导致在AppDelegate.m实现的接口没有回调)


附录


苹果开发者文档

苹果官方的demo

本文的demo


640?【点击成为源码大神】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值