用Siri显示二维码, iOS11, INGetVisualCodeIntent
再过不久,iOS11就要出来啦。
这次的更新中,Siri将支持显示二维码。支付啦,要求支付啦,各种要求的二维码。
听起来好像还不错,苹果想要方便支付的心意已经传达到了。
只是真的会比自己打开app显示二维码更方便快捷吗。
或者,想象一下大家都用Siri来显示支付码的画面。
便利店的队伍中此起彼伏,“我的支付码”,“快显示我的二维码”,“二维码”。。
Siri说,“二一码”? ?
(也许是我不用Siri,场景再现全凭想象)
嘛,不管怎么样。可以先做个DEMO感受下。
之前没有做过支持Siri,试了一下意外得简单。
0. 安装Xcode 9 beta最新版和iOS11
1. 准备支持SiriKit的app ID
填好bundle ID并勾选支持SiriKit。
2. 准备相应的provisioning profile
3. 新建或打开已有的project。设置bundle identifier和provisioning profile为前面准备的
4. 选择project的target。在Capability中启用Siri
5. 给project添加Intents App Extension
因为要显示app的二维码,Include UI Extension应该勾着。
然后你会发现加了两个target。
6. 设置这两个target的Info.plist的NSExtension
SiriQRCodeIntents的:
SiriQRCodeIntentsUI的:
*IntentsRestrictedWhileLocked 就是设置在锁屏状态下需要解锁才能继续。其实这里不加也可以,支付相关的Intent默认需要解锁。
7. 创建Handler
在SiriQRCodeIntents project下,新建一个实现INGetVisualCodeIntentHandling protocol的类。
import Foundation import Intentsclass GetVisualCodeIntentHandler: NSObject, INGetVisualCodeIntentHandling {func handle(intent: INGetVisualCodeIntent, completion: @escaping (INGetVisualCodeIntentResponse) -> Void) {completion(INGetVisualCodeIntentResponse(code: INGetVisualCodeIntentResponseCode.success, userActivity: nil))} }
在默认的IntentHandler类的handler方法中使用。
override func handler(for intent: INIntent) -> Any {// This is the default implementation. If you want different objects to handle different intents,// you can override this and return the handler you want for that particular intent.if intent is INGetVisualCodeIntent {return GetVisualCodeIntentHandler()}return self }
8. 跑一下看看吧
到此为止,你的app就已经成功进入“支付码”之类的命令对应的候选app名单了!
选择想debug的target,然后run! (只能真机)
选app时选择Siri。
然后给Siri发号施令吧!!“显示我的支付码”之类的?
然后如果你的app名显示出来就OK啦。
9. 什么都没有啊。到底怎么显示二维码??
这时就需要之前添加的SiriQRCodeIntentsUI了。
我的话,就往MainInterface.storyboard里塞了一个二维码。
跑一下发现就那么显示了,就满足啦。?
10. 哦不,在那之前,调整大小。
在SiriQRCodeIntentsUI的IntentViewController里随意得设置了一下高200。
// Prepare your view controller for the interaction to handle.func configureView(for parameters: Set<INParameter>, of interaction: INInteraction, interactiveBehavior: INUIInteractiveBehavior, context: INUIHostedViewContext, completion: @escaping (Bool, Set<INParameter>, CGSize) -> Void) {// Do configuration here, including preparing views and calculating a desired size for presentation.completion(true, parameters, self.desiredSize)}var desiredSize: CGSize {return CGSize(width: extensionContext!.hostedViewMinimumAllowedSize.width, height: 200)}
DEMO结果和感想
不感到快捷方便。还经常识别错。?
也不能排除日语口齿不清的可能性。。
所谓的对显示二维码的支持,只是支持命令部分,要显示的二维码还是需要app提供的~~
参考:
https://developer.apple.com/documentation/sirikit/creating_an_intents_app_extension
https://developer.apple.com/documentation/sirikit/ingetvisualcodeintent
https://developer.apple.com/documentation/sirikit/ingetvisualcodeintenthandling
转载于:https://www.cnblogs.com/your3i/p/7499841.html
用Siri显示二维码, iOS11, INGetVisualCodeIntent相关推荐
- 知云文献翻译登录时不显示二维码,显示二维码后扫描登录不跳转解决方案
1.登录时不显示二维码--解决方案 打开 Internet Explorer 点击"设置"中的"Internet 选项" 切换到"连接"选项 ...
- java后台生成二维码以及页面显示二维码方式
上篇文章已经说明并发布了后台生成二维码工具类,大家可以直接去看或者去拿. 地址:最简单实用的java生成二维码工具 现在呢说明页面上展示二维码的两种方式: 1.使用img标签的src来请求生成二维码, ...
- 点击识别元素位置、生成显示二维码、下载二维码
百度网盘地址 效果: 代码: <!DOCTYPE html> <html><head><meta charset="UTF-8">& ...
- 0.96英寸128*64 OLED显示二维码
0.96英寸I2C,OLED 显示屏显示二维码 STM32 SSD1306 RT-Thread 关于 软.硬件环境 开启RT-Thread的终端打印二维码功能 思路 移植开肝 开始测试 关于 最近手头 ...
- Jenkins配置自动打包app发布蒲公英显示二维码
Jenkins配置自动打包app发布蒲公英显示二维码 搞了一周,终于弄好了,下面就是见证奇迹的时刻. 1.下载Jenkins,去官网点这里选择Windows版本: 2.下载完是个zip解压 安装 一路 ...
- 使用CSS实现悬停显示二维码
目录 方法一 方法二(推荐) 在进行广告配置时,要显示的二维码太小,直接扫码扫不出来,于是需要实现鼠标悬停显示大的二维码. 有两种实现的方法: 方法一 直接在要悬停显示二维码的 DOM 元素上添加样式 ...
- 用户登入腾讯视频,QQ扫描二维码不显示二维码
环境: 电脑:联想E14 系统:Windows 10 专业版 64位 AC:深信服AC13.0.47 问题描述: 用户登入腾讯视频,QQ扫描二维码不显示二维码 解决方案: 1.在AC上,在线用户列表搜 ...
- qrcode不显示二维码
<!DOCTYPE html> <html><head><title>标题</title></head><script s ...
- 用STC单片机在TFT屏上显示二维码
用STC8A单片机在TFT屏上显示二维码 概述 最近项目需要用单片机在TFT屏上显示二维码,将C++下显示二维码的代码经过改造,移值到C代码的单片机,成功运行,经多次测试能稳定运行,TFT屏显示部分, ...
- 微信鼠标点击显示二维码代码
<script type="text/javascript">function showImg(){document.getElementById("wxIm ...
最新文章
- Go 学习笔记(17)— 函数(03)[defer 定义、defer 特点、defer 释放资源]
- Ehcache配置参数详解
- VS2013和MATLAB相互调用混合编程
- JS如何获取RadiobuttonList的选中值
- ICMP 隧道——将流量封装进 IMCP 的 ping 数据包中,旨在利用 ping 穿透防火墙的检测...
- 运维杂记(二):打印机print spooler服务自动关闭
- 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数
- NTU课程笔记 MAS714(8) 分治与排序
- web安全漏洞加固方案简析
- 思考: 什么时候需要disable MMU/i-cache/d-cache?
- 关系抽取、时间抽取,实践项目推荐
- qt中QTreeWidget控件的使用
- 机械革命深海泰坦X1(1050T)触控板用不了三指
- 2018.11.05-4028-撸串(string)
- Disable UTC in Ubuntu
- Adb connect监听指定的主机和端口/Adb监听Visual Studio Emulator for Android模拟器
- ELementD对象
- echarts--(1)--基本使用
- 优动漫PAINT入门宝典(图层篇)——矢量图层
- Genymotion启动失败解决方案
热门文章
- python退出程序 只跳出while_为什么我的简单程序从不退出while循环?
- git SourceTree 客户端 安装/使用教程
- Oracle 视图、序列、索引、游标、触发器、事务
- sql插入时返回插入主键id(id位自动增长)
- BZOJ1815 SHOI2006有色图(Polya定理)
- Mysql查询性能优化
- scala 高级十六 scala 集合和集合的高级特性 map flatten fllatmap zip reduce zip 等操作...
- putty详细使用说明
- 解决物理机U盘安装Kali Linux2018.1,光驱无法加载问题
- eclipse导入Javaweb文件出错解决