在一段时间的SiriKit开发中遇到了很多问题,踩到了很多坑,最终实现的功能却很简单,远远没有达到惊艳的程度,使用过程中,一度怀疑这样的功能存在的必要性。
为了减少大家使用中造成的困扰,我分享一下自己使用中的主要步骤以及其中的注意事项。
1. 项目需要在project Target 的Capabilities中添加 SIri Ability。(注意:因为有时候在项目中直接添加会出现报错,新建的项目需要在 Apple development 账号中 查找 相应的bundle ID 并为之添加Siri Ability) 2. 在info.plist 文件下添加 获取Siri权限的文字,字段名为Privacy - Siri Usage Description,描述文字为 :使用Siri发送信息到... 3. 在AppDelegate文件中 导入Intents框架:#import,在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中添加获取Siri使用权限的代码:代码如下
[INPreferences requestSiriAuthorization:^(INSiriAuthorizationStatus status) {
if(status == INSiriAuthorizationStatusNotDetermined) {
NSLog(@"Siri not authorization yet");
}
else if(status == INSiriAuthorizationStatusRestricted) {
NSLog(@"Siri authorization restricted");
}
else if(status == INSiriAuthorizationStatusDenied) {
NSLog(@"Siri authorization denied");
}
else if(status == INSiriAuthorizationStatusAuthorized) {
NSLog(@"Siri authorization authorized");
}
}];
此段代码是必须的,通过此段代码获取Siri权限,才可以在Siri界面使用此app调用相关命令。(弹出申请权限请求界面,用户可能会拒绝,导致Siri无法使用)
4.在Xcode导航栏 ,在File—>New—>New—>Target,新建target,如下图所示
注意事项:默认勾选 Inclue UI Extension, 通过UI Extension可以自定义Siri命令唤起app的UI界面(使用锻炼命令始终唤醒不了界面,一直没有找到原因,但是使用Siri发送信息是可以唤起UI界面的,和同行交流过,有人说是Siri的bug,我也不太确定,欢迎大家指正)。
5.经过上一个步骤,在根目录下会生成两个文件夹,分别是Siri和SiriUI界面,接下来我们我们就可以在这些文件下编写自己想要Siri完成的命令。
6.默认状态下Siri文件夹下 info.plist 文件中NSExtension—>NSExtensionAttributes—>IntentsSupported中拥有的Siri功能包括三个INSendMessageIntent(发送信息命令),INSearchForMessagesIntent(搜索信息命令),INSetMessageAttributeIntent(设置信息属性命令),另外还有一个字段IntentsRestrictedWhileLocked 如果需要在锁屏时禁用某个功能,则再在IntentsRestrictedWhileLocked中加入相应项的Intent。可以自己另外增加相应的命令。比如说打车命令,运动命令,订房命令,付款命令,打电话命令。SiriUI文件夹下 info.plist 文件中NSExtension—>NSExtensionAttributes—>IntentsSupported中拥有的Siri命令包括INSendMessageIntent(发送信息命令)。
7.其他的细节请大家参考这篇文章,介绍的比较详细。
iOS10 SiriKit QQ适配详解
http://dev.qq.com/topic/57ece0331288fb4d31137da6
网友评论