版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.09.10 |
前言
大家都知道随着人工智能的发展,会掀起来另外一个工业革命,而语音识别就是人工智能的初始阶段,但是每个公司做的都不一样,涉及到一系列的语音的采集和算法实现,苹果的Siri就是业界语音识别的代表性的产品。接下来的几篇我们就详细解析一下SiriKit这个框架。感兴趣的可以看下面几篇文章。
1. SiriKit框架详细解析(一)—— 基本概览(一)
Overview
这一篇很好理解,依照苹果对安全的重视,这种设计个人隐私的一定要申请权限的,否则就会崩溃也无法进行上架的。你看到这里可以想到申请麦克风、相册以及定位等权限了吗?
下面我们就开始。
在用户授权他们执行此操作之前,Siri和Maps无法与您的Intents应用扩展程序进行交互。您从iOS应用程序请求授权,而不是您的扩展程序。用户授予的权限适用于您的iOS应用和watchOS应用。
要求授权:
1) Enable the Siri capability - 启用Siri功能。您的iOS应用或WatchKit扩展必须启用Siri功能才能成功授权。有关如何启用Siri功能的信息,请参阅Creating an Intents App Extension。
2) Configure your Info.plist file - 配置Info.plist文件。在您的iOS应用程序的
Info.plist
文件中包含NSSiriUsageDescription
键。此键的值是一个字符串,用于描述您的应用与SiriKit共享的信息。例如,锻炼应用程序可能会将值设置为字符串“锻炼信息将发送给Siri”需要包含此key
。3) Request authorization from your iOS app - 从您的iOS应用程序请求授权。在iOS应用执行期间的某个时刻调用INPreferences的requestSiriAuthorization(_:)类方法。
当您的应用程序的授权状态未确定时,从您的iOS应用程序调用requestSiriAuthorization(_:)方法会导致系统提示用户授权您的应用程序。alert
弹窗括您在应用的Info.plist
文件的NSSiriUsageDescription
键中提供的使用说明字符串。用户可以批准或拒绝您的应用程序的授权请求,并可以稍后在“设置”应用中更改您应用的授权状态。系统会记住您的应用程序的授权状态,以便后续调用requestSiriAuthorization(_:)方法不会再次提示用户。
注意:当用户首次尝试使用
Intent
扩展时,Siri和Maps可能会协助您对其进行授权。 具体而言,如果用户与您的扩展程序进行互动且其授权状态尚未确定,则地图会代表您的扩展程序自动请求授权。
INPreferences类
继承自NSObject,该类用于使用SiriKit的偏好和授权。
使用INPreferences
的类方法来执行与使用SiriKit相关的任务。 iOS应用程序必须在Siri之前请求授权使用SiriKit,或者允许地图调用其Intents扩展来处理意图。 要请求授权,请在应用程序执行期间的某个时刻调用requestSiriAuthorization:
方法。 第一次调用此方法时,系统会提示用户授予或拒绝您的应用程序的授权。 用户可以稍后在系统设置中更改应用程序的授权设置。 您可以使用siriAuthorizationStatus
方法获取应用程序的当前授权状态。
1. Managing the App’s Authorization - 管理应用程序的授权
-
- 请求使用Siri服务的授权。
-
- 返回当前应用程序的授权状态。
-
- 指示
Intents extension
授权状态的常数。具体枚举值如下所示。
- 指示
typedef enum INSiriAuthorizationStatus : NSInteger {
INSiriAuthorizationStatusNotDetermined = 0,
INSiriAuthorizationStatusRestricted,
INSiriAuthorizationStatusDenied,
INSiriAuthorizationStatusAuthorized
} INSiriAuthorizationStatus;
2. Getting the Siri Language - 获取Siri语言
-
+ siriLanguageCode
- 返回Siri用于与用户通信的语言。
该方法返回的是一个字符串。
+ (NSString *)siriLanguageCode;
标识语言的语言环境ID以及任何可选的区域或脚本信息。 区域设置ID的示例是“en”
,“en_GB”
,“zh-Hans”
和“zh-Hans_HK”
。 有关区域设置ID结构的详细信息,请参阅Internationalization and Localization Guide。
此属性仅供参考。 Siri的输入语言可能与用户设备上显示的语言不同。 但是,您的应用和Intents扩展应始终使用用户的首选语言指定内容,如当前设备的语言设置所示。
后记
本篇主要讲述了请求授权使用SiriKit和INPreferences类,感兴趣的给个赞或者关注~~~