Tag: siri

使用iOS 12中的自定义Siri快捷方式构建交互式语音应用

Siri Shortcut是Apple在iOS 12中基于SiriKit框架引入的新API。 它为开发人员提供了为用户在应用程序中经常使用的活动提供自定义快捷方式的方法。 用户通过向Siri发出语音命令来调用快捷方式,可以通过记录与快捷方式关联的自定义短语来自定义实际短语。 自iOS 10中发布SiriKit以来,Apple一直在其提供的多个内置域(例如乘车共享,付款,消息传递等)中限制Siri的使用。开发人员无法选择提供自己的自定义意图。 但是,借助iOS 12中的Siri Shortcut,Apple终于为开发人员提供了框架,供他们构建自己的自定义意图,该意图可以使用至少可以用于Siri Shortcut的自定义参数和响应进行配置。 开发人员创建自定义意图的能力为开发人员打开了许多与Siri进行交互的方式,例如: 点东西(例如披萨,咖啡,早餐😋); 搜索可以连接到任何API的信息; 执行我们希望Siri执行的任何自定义操作; 还有很多! Apple鼓励开发人员仅为用户创建有意义的快捷方式,例如,为用户在使用应用程序时希望重复的活动提供快捷方式。 不建议为用户仅在应用程序中执行一次的活动创建快捷方式。 我真的鼓励大家观看下面的Apple WWDC 2018视频,以从Siri工程师那里了解有关Siri Shortcut的更多信息: Siri快捷方式简介– WWDC 2018 –视频– Apple Developer Siri快捷方式是iOS 12中的一项强大新功能,可让您的应用向Siri公开其功能。 这个… developer.apple.com 使用Siri快捷键构建语音– WWDC 2018 –视频– Apple Developer Siri快捷方式是帮助人们执行操作或从您的应用程序获取信息的好方法,但是快捷方式可以是… developer.apple.com 在本文中,我想提供一个简单的示例,说明如何使用Siri Shortcut使用The Movie DB API对即将上映的电影进行搜索,然后使用自定义Intent UI Extension显示结果。 为了使用Siri快捷方式构建演示应用程序,我们将介绍以下内容: 创建新项目并设置Podfile。 创建共享框架以在主应用程序和扩展之间共享。 构建影片列表视图控制器 创建Siri意向定义文件 创建意图扩展 创建意图UI扩展 从View […]

尽早制作-Siri快捷方式入门| Byteout博客

让我们通过引用WWDC 2018中的Apple来开始这篇文章 Siri快捷方式是iOS 12中强大的新功能,可让您的应用向Siri公开其功能。 这使Siri可以根据各种上下文在相关时间建议您的快捷方式。 有了这项新功能,应用程序便有了新的面貌-语音。 而且,它们会在您可能想到的时候立即出现在Spotlight上,从而自动“变得更聪明”。 因此,在本教程中,我将向您展示使用NSUserActivity在应用中实现快捷方式的速度—包含2个代码块 。 我将指导您完成一些步骤,向Siri展示我们喜欢的应用程序的一些最有价值的功能。 注意:您可以 在 Byteout Software博客 上 找到带有 更好格式的代码 的原始帖子 。 简短介绍-我们示例的背景故事 早期游戏警报是一款闹钟应用,在用户赢得简单游戏之前,它不会停止响铃。 用户也可以随时随地玩游戏,即使没有警报也是如此。 为此,在没有新的快捷方式的情况下,他们必须: 启动应用 转到列出所有游戏的屏幕 滚动到他们最喜欢的一个 按“播放” 但是有了快捷方式,他们将只能使用自己的声音,或者在搜索中键入游戏名称。 因此,让我们深入研究代码! 第一步是进行用户活动并在适当的时间捐赠。 // GamesSelectionViewController.m // 1. Make activity – (void)donateActivity { NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:@”com.your_appname.game_activity”]; // A activity.title = [NSString stringWithFormat:@”Play %@”, self.selectedGame.name]; // B […]

使用XCUISiriService从XCTest控制Siri

苹果已经发布了带有新Swift 3.1快照的新Xcode 8.3 beta 2,可以从Apple开发者帐户下载。 Xcode 8.3 beta 2中有很多新功能,如果您拥有Apple开发人员帐户,则可以阅读发行说明。 在XCTest框架中添加了一个方便的类,以通过XCUI Test(即XCUISiriService)与Siri进行交互。 在这篇文章中,如何启用与Siri的交互。 Xcode 8.3 Beta 2 Xcode 8.3 beta 2中提供了新添加的类XCUISiriService,如果您具有Apple Developer Account,则当前可以下载该类。 您可以从开发者帐户的“下载”部分获得它。 Xcode 8.3需要macOS版本10.12及更高版本。 您可以下载大约4.​​52 GB的压缩XIP文件。 如果您已经具有以前版本的Xcode,请删除它或保留它,但是必须在Xcode DEVLOPER_DIR之间切换。 下载完成后,您可以解压缩文件以安装Xcode 8.3 beta,并等待Xcode和命令行工具的安装。 一旦使用所有命令行工具完全安装了Xcode 8.3 beta 2,我们可以将其拖到/ Applications路径中。 现在,我们必须通过运行以下命令来切换到新的Xcode版本 $ sudo xcode-select —切换/Applications/Xcode-beta.app/ 这将设置新的DEVELOPER_DIR,我们准备使用Xcode 8.3。 确保使用xcrun使用正确的工具链— find swift命令将显示您正在使用的当前工具链。 $ xcrun —快速查找 /图书馆/开发人员/工具链/swift-3.1-DEVELOPMENT-SNAPSHOT-2017–01–22-a.xctoolchain/usr/bin/swift 现在,请确保导出工具链并使用正确的Swift版本,此版本当前为Apple Swift版本3.1-dev。 您可以通过运行以下命令轻松地做到这一点。 $ […]

ServiceNow和Siri快捷方式应用程序

作为苹果的忠实粉丝,我热切期待iOS 12的发布。随着iOS 12的发布,苹果推出了Siri Shortcuts应用程序,该应用程序允许任何人创建“ Shortcut ”:一系列可以与第三方应用程序(iOS)交互的步骤设备和Siri。 接触到该应用程序后,我发现Shortcuts和ServiceNow的Flow Designer之间有很多相似之处。 快捷方式中的步骤可以排序,并且它们的输入和输出(“魔术变量”)类似于Flow Designer中的“数据丸”。 快捷方式应用程序具有许多易于使用的“动作”,这些立即使我想起Flow Designer的“辐条”。 在“快捷方式”应用程序中,存在许多“开发人员”或“高级”用户操作。 在看到一些高级操作(例如“获取URL的内容”和“从输入获取字典”)后,我想知道是否可以将快捷方式链接到ServiceNow? 在短时间内,我能够创建一个非常有用的快捷方式。 快捷方式使用Siri指令创建ServiceNow事件。 然后,它回读通过表REST API创建的事件编号。 这显然是概念的快速证明,但是很明显,可能性是无限的。 无需代码,您就可以获取本地设备数据(例如位置或系统IP地址),然后将该数据传递给REST API,然后将结果解析回语音文本。 有待改进的地方包括使用API​​密钥而不是用户名/密码变量,甚至使用ServiceNow在伦敦发布的新Chat框架。 对于任何有兴趣的人,这里是捷径。 您所需要做的就是下载iOS应用程序“快捷方式”并安装它。 安装后,添加您的实例,用户名和密码。 我很高兴看到社区在这里提出了什么聪明的主意。 试试看! 快捷方式用户指南 Apple产品文档 support.apple.com

嘿,Siri,我的下一趟电车是几点?

自WWDC以来已经过去了两个星期,我们中的许多人都在尝试iOS 12的新API。到目前为止,对我来说最有趣的是Siri Shortcuts 。 通过快捷方式,您可以使用新的Siri Intents API将应用程序的主要操作公开给Siri。 在本文中,我将向您展示如何为我的应用《电车时代》实现它。 意图定义文件 输入意图的标题和描述。 您可以在此处决定是否要让用户确认意图(对订单有用)。 定义要在意图中使用的参数 。 在这里,我选择了工作站的自定义模型类型。 这是用户要查看其电车时刻的车站。 如果您有多个参数,则可以定义以下支持的组合。 然后,您可以定义意图的标题和副标题 ; 当Siri建议您使用快捷方式时,这些信息将显示给用户。 如果您的操作可以在后台运行,则需要选中“支持后台执行”选项。 定义了意图之后,您需要在Target成员资格中选择选项,以使Xcode为您生成您的意图类。 现在,您可以在设置的Siri&Search页面中为此快捷方式添加自定义短语。 在iOS12 beta 1中,它似乎对我不起作用; 我必须等待beta 2才能保存快捷方式短语。 用户遵循您的快捷方式后,您将需要在应用程序委托中对其进行处理。 在第一部分中,我向您展示了如何使用新的Siri Intents API。 在下一篇文章中,我将展示如何使用Intent Extensions和Custom Intent Responses来以Siri内联方式响应用户。 在这里查看我的完整实现: 小熊90 / TFGMLive 通过在GitHub上创建一个帐户为TFGMLive开发做出贡献。 github.com 我仍将继续进行整理,并使用Siri表盘进行更多工作。 谢谢阅读! 如果您受到启发,这里有一些有用的链接,可帮助您在遇到困难时提供帮助: Siri快捷方式简介– WWDC 2018 –视频– Apple Developer Siri快捷方式是iOS 12中的一项强大新功能,可让您的应用向Siri公开其功能。 这个… developer.apple.com 通过快捷方式加速应用程序交互 […]

向Siri打个招呼

苹果宣布在上届WWDC中Siri将向开发人员开放。 因此,让我们在应用程序中使用它。 由于SiriKit是一个功能强大的框架,开发人员可以毫不费力地向其应用程序添加语音识别功能。 由于语音在Apple服务器中处理,因此Siri将需要Internet连接。 在将UITextView和UIButton放入视图控制器之前。 当用户点击按钮时,他/他将在UITextView上看到他/她在说什么。 您的应用需要获得许可才能捕获麦克风中的语音并加以识别。 因此,您需要在info.plist文件中添加两个字符串。 密钥为隐私-麦克风使用说明和隐私-语音识别使用说明 。 这些值是任意的。 当然,您将需要在项目中检查这些权限。 为了使用SiriKit,应导入Speech类。 您还需要使用SFSpeechRecognizerDelegate ,该方法只有一种实现方法, func speechRecognizer(_ speechRecognizer:SFSpeechRecognizer,availableDidChange可用:Bool) 。 代码 您可以使用上面的代码来测试设备中的语音识别。 别忘了模拟器不适合测试,因为您可以使用麦克风。 使用真实的设备进行测试。 如果您愿意,可以从下面的Github链接下载示例项目代码: onurtuna / SpeechRecognition-Swift SpeechRecognition-Example-Swift –用Swift编写的语音识别示例。 github.com

Siri快捷方式示例(iOS12 / Xcode10 beta)

2.在此示例中,打开* .intentdefinition,然后添加New Intent,为其命名,然后设置重要部分是Parameters and Shortcut Types (如果需要用户确认,请检查☑️需要用户确认),在此示例中,我将跳过确认过程。 查看苹果文档以获取更多信息。 参数让我们使用Custom类型。 快捷方式类型的 标题/副标题将显示为Siri结果。 3.不要忘记设置响应, 响应 模板中的模板将再次显示为Siri结果。 4.创建新的目标选择 意图扩展和意图UI扩展。 5.在您的应用程序目标中创建IntentHandler类, NSObject和IntentHandling的子类也在Inspectors中选择Target Intent和IntentUI 。 在“确认”部分中,Soup Chef App尝试显示订单确认视图,当Siri订购Soup Chef App时,也尝试在代码中显示发票,但两者均未显示在Siri屏幕中。 您可以在Siri响应文本中看到[object Object] ,这意味着Response中不支持Decimal 。 Apple可能会很快更新SiriKit和Siri Shortcuts文档,请等待。 源代码 neungnarakjung / CookBook-Siri-快捷方式-示例 CookBook-Siri-Shortcuts-示例– Siri快捷测试版(XCode10 beta) github.com

嘿Siri:在iOS上与Anghami交谈

自2011年推出以来,Siri一直在稳步学习越来越多的技能。 每年,Apple都会对Siri进行更改,以允许开发人员使用更多功能,并且WWDC 2018看到了一些最令人兴奋的更新。 在WDC 2018之前,要与Siri集成,开发人员必须选择他们要提出的请求类型(称为意图),并且只有少数意图类型可供选择。 如果您的应用不属于这些类别之一,那么就不可能与Siri集成。 但是,在WWDC上,Apple向SiriKit引入了两个新功能,使Anghami可以集成到Siri中:媒体意图和自定义意图。 1.媒体意图 媒体意图提供了一种方便的方法,可将与媒体相关的操作添加到Siri。 他们的工作方式很简单。 首先,创建一个INMediaItem对象,该对象由一些参数(包括标识符,标题,类型和插图)进行自定义。 让容器= INMediaItem(标识符:标识符,标题:标题,类型:类型,艺术品:图片) 就我们在​​Anghami的情况而言,类型可以是从播放列表,艺术家到歌曲的任何类型,并且标识符将是项目的唯一ID。 完成之后,将创建一个INPlayMediaIntent对象,这是我们想要提供给Siri的实际意图。 let intent = INPlayMediaIntent(mediaItems:nil,mediaContainer:mediaContainer,playShuffled:shuffled,playbackRepeatMode:.all,resumePlayback:nil) 最后,将意图本身建议给Siri,然后Apple提供一个UI,允许用户向该操作分配任何自定义短语。 用户调用操作后,将在我们的应用程序委托中调用以下函数: -(void)应用程序:(UIApplication *)应用程序handleIntent:(INIntent *)意图完成处理器:(void(^)(INIntentResponse * _Nonnull))completionHandler; 在这里进行检查,以查看该意图是否为INMediaIntent,是否从对象中检索了mediaItem,然后我们可以轻松地检索与该mediaItem相关的音乐对象(播放列表,艺术家,歌曲等)并进行播放。 最棒的是,这一切都是在后台发生的,因此用户无需解锁手机即可执行操作。 他们只是告诉Siri他们想要什么并且完成了。 2.自定义意图 媒体意图非常适合播放音乐,但是如果我们想对Siri进行更多处理,该怎么办? 在Anghami,我们还希望简化操作,包括喜欢歌曲,下载歌曲,检查歌曲的歌词,调用搜索等。这就是自定义意图的体现。 要创建自定义意图,首先应定义意图。 这是在意图定义文件中完成的(自然)。 创建一个新的自定义意图,然后必须定义一些参数。 类别参数具有“执行”,“运行”,“购买”等选项。 这用于帮助Siri在用户运行时知道如何谈论此操作。 然后定义一些更明显的参数,例如标题和描述。 最后,可以将参数添加到自定义意图。 这些将在创建意图时提供给Siri。 就像媒体意图一样,将创建一个意图对象,然后将其提供给Siri。 这很容易,因为在定义了意图之后,Apple会自动生成与新的自定义意图相关的类对象。 自定义意图的缺点在于,它们只能以两种方式运行,既可以在应用程序的前台运行,也可以在单独目标的后台运行。 这就是说,如果我们希望在不打开Anghami的情况下工作,那么我们必须这样做,同时又不能访问我们在Anghami主应用程序目标中拥有的许多有用的类和文件。 一种简单的解决方案是仅使自定义意图打开Anghami应用程序。 对用户而言,这只是一步而已,但是当我们知道一点点额外的工作可以消除这一步时,这样做是错误的。 因此,我们成功了。 我们的主要问题是我们想与应用通信,希望对当前播放的歌曲执行此特定操作。 不管是下载当前歌曲,喜欢它还是播放更多类似的歌曲都没有关系。 如果我们让应用程序确定了我们希望现在发生的事情,那么困难的部分就完成了。 处理方式是在共享容器的帮助下进行的。 共享容器基本上是一个可以存储文件/数据的存储桶,可以在主应用程序及其所有扩展(包括Intents扩展)之间共享。 因此,我们有一种与应用程序进行数据通信的方法。 有助于解决问题的另一点是,如果用户想要对当前歌曲执行操作,则音乐可能正在通过Anghami播放,这意味着我们的应用程序已经在后台运行。 因此,我们要做的就是简单地将当前歌曲的ID写入共享文件,使其始终处于更新状态,并在调用Intent时,根据所调用操作的类型将同一ID写入不同的文件(下载,例如,像这样玩,等等。 […]

适用于iOS开发人员的WWDC 2018:Siri快捷方式

Apple在2016年发布了SiriKit,作为您的应用程序与Siri一起使用的一种方式。 我真的很兴奋,因为它为用户创造了一种与手机互动的全新方式。 他们不再局限于触摸(手势,力度,键盘)了。 相反,他们最终可以在支持它的任何应用程序中使用自己的声音。 那时,当我沉迷于这个想法时,我意识到,事实并非如此。 SiriKit的使用仅限于6类,即: 讯息传递 VoIP通话 付款 乘车预订 图片搜寻 锻炼 这真烂。 我很沮丧,也没有深入研究它,因为我的名单上没有项目可以从中受益。 快进到2018年。周一,苹果公司在其主题演讲中终于宣布了一种与Siri进行交互的新方式。 它称为Siri快捷方式。 让我们深入研究iOS开发人员如何使用它们。 捷径 那么什么是Siri快捷方式? 它们是Siri可以预测并在Spotlight搜索,锁定屏幕等位置提供给用户的操作。您的应用可以在用户与Siri交互时将这些操作提供给Siri。 例如,当用户在您的商店订购咖啡时,您的应用可以向Siri提供带有订购信息的操作。 随着时间的流逝,Siri将了解用户是否多次执行此操作,并将开始建议您的应用提供的操作。 这样,可以从锁定屏幕订购咖啡。 那不是很好吗? 那不是全部! 用户甚至可以使用这些快捷方式添加个性化语音短语。 因此,下次您告诉Siri“胡言乱语”时,Siri将点您的咖啡。 但是我们该怎么做呢? 快速方法 如果您已经在使用NSUserActivity,则可以使用一行代码使它们符合Siri的预测: userActivity.isEligibleForPrediction = true 但是快捷方式可能更强大。 因此,让我们看看自定义快捷方式是如何工作的。 应用程式结构 和以前使用SiriKit一样,我们需要对应用程序进行Intent应用程序扩展。 该扩展将处理将在后台运行的快捷方式。 此外,Apple建议将扩展程序和应用程序之间共享的代码拆分为框架。 该框架应包含所有管理和捐赠快捷方式的代码。 创建快捷方式 查看您的应用并查看最常发生的操作。 让我们看一下可以播放音乐的健身应用程序。 每当您开始锻炼时,您都想听音乐。 因此,该应用可以向Siri捐赠相应的快捷方式。 现在,只要Siri检测到用户开始锻炼程序,它就可以建议通过您的应用播放音乐。 当然,Siri必须先学习它,因此在Siri提出这些建议之前,必须进行一些锻炼。 我做舞厅舞。 由于我总是从开始就开始练习慢速华尔兹15分钟以进行热身,因此我的应用程序可以创建一个快捷方式,建议您精确地进行此操作并将其捐赠。 在研究如何捐赠快捷方式之前,让我们看看如何创建快捷方式。 首先,我们需要一种新型的意图。 意图是用于与Siri通信的对象。 在我们的案例中,系统未提供此类意图,因此应用必须提供自定义意图。 这可以通过将Intent Definition文件添加到项目中来完成。 […]

Siri快捷方式入门

Apple的iOS 12新功能 嗨,我很愿意。 今天,我们正在使用SIRIKIT探索SiriShortcuts 要求: Swift 4中级知识 知道如何玩MVC Xcode 10 Apple付费开发者帐户。 物理iPhone会更好(不是必需的) 你不需要火箭科学😉 这是Apple在iOS 12上的新功能,在WWDC 2018主题演讲中宣布,并将在今年秋天推出…因此,最好准备好您的应用程序,以便您的用户尽快使用它们。 我非常确定,他们会赞赏的,因为它确实确实可以使生活变得更轻松-特别是如果您添加了经常使用的快捷方式,并且所有这些操作都可以直接在锁定屏幕,搜索或Siri中完成,表盘。 Siri可以使用诸如位置,一天中的时间和运动类型(例如步行,跑步或驾驶)之类的信号来建议快捷方式,并在锁定屏幕上显示为用户可以点击以运行任务的通知。 不必担心您的隐私-所有收集的数据都存储在设备上,因此不会受到任何损害。 可以从新的Shortcuts应用程序中可用的示例库中添加快捷方式。开发人员可以创建其自定义快捷方式,并将其与应用程序一起提供。 在这个故事中,我将向您展示如何创建简单的自定义快捷方式:—) 让我们开始吧! 我假设您创建了一个空项目 添加SiriKit意向定义 文件 。 该文件就像我们正在创建的“心脏”。因此,您可以试用此文件以获得所需的响应。 2.打开somename .intentdefinition,然后添加New Intent,为其命名,然后设置。重要部分是“ 参数和快捷方式类型” 快捷方式类型的 标题/副标题将显示为Siri结果。 新意图—一个应用程序可能包含许多意图和快捷方式。因此,所有意图均在此处创建。 每个意图都有自己的参数,这些参数是用户定义的。我们可以在使用siri快捷方式时传递这些参数。 3. 快捷方式类型的 标题/副标题将显示为Siri结果。 在这里,可以根据需要选择参数的数据类型。可以根据需要将这些参数传递给Title来调用函数。请确保遵循MVC(模式视图控制器)模式。 4.不要忘记设置响应, 响应 模板中的模板将再次显示为Siri结果。 5.创建新的目标选择 意图扩展和意图UI扩展。 Intent Extension与您的Intent定义文件绑定以处理数据 使用Siri快捷方式时,Intent UI Extension将提供一些UI 4.1。表达你的意图。 现在,我们需要让系统知道用户何时在我们的应用程序中执行“应用程序的特定功能”交互。 根据用户执行此操作的频率以及一天中的什么时间等,Siri随后将向用户建议此交互。 但是,用户也可以自己访问这些快捷方式。 在ViewController.添加捐赠代码ViewController. 5.在您的应用程序目标中创建IntentHandler类, […]