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

栏目: IOS · 发布时间: 7年前

内容简介:前言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。

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

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

十分钟接入iOS 12新特性——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;
}
 </uiuseractivityrestoring>
</id>

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

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

Siri Shortcuts的特性解析

Siri Shortcuts提供的能力有两个:

  • 1、Suggestion(建议)

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

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

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

  • 2、Shortcuts(短语快捷方式)

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

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

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

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

1、App的关键功能;

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

3、随时都可以执行;

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

Siri Shortcuts的使用

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

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

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

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

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

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

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

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

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

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

注意事项

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

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

附录

苹果开发者文档

苹果官方的demo

本文的demo

招聘启事

北京招聘Vulkan图形开发工程师

受人所托,现帮忙发一则Vulkan图形开发工程师招聘消息。

要求:熟练掌握OpenGL ES、Vulkan等图形库的使用,最好有丰富的图形工程实践经验。

工作地点:北京

有意向熊皮皮联系,微信见原文

作者:落影loyinglin

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms Unlocked

Algorithms Unlocked

Thomas H. Cormen / The MIT Press / 2013-3-1 / USD 25.00

Have you ever wondered how your GPS can find the fastest way to your destination, selecting one route from seemingly countless possibilities in mere seconds? How your credit card account number is pro......一起来看看 《Algorithms Unlocked》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换