再过不久,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. 知云文献翻译登录时不显示二维码,显示二维码后扫描登录不跳转解决方案

    1.登录时不显示二维码--解决方案 打开 Internet Explorer 点击"设置"中的"Internet 选项" 切换到"连接"选项 ...

  2. java后台生成二维码以及页面显示二维码方式

    上篇文章已经说明并发布了后台生成二维码工具类,大家可以直接去看或者去拿. 地址:最简单实用的java生成二维码工具 现在呢说明页面上展示二维码的两种方式: 1.使用img标签的src来请求生成二维码, ...

  3. 点击识别元素位置、生成显示二维码、下载二维码

    百度网盘地址 效果: 代码: <!DOCTYPE html> <html><head><meta charset="UTF-8">& ...

  4. 0.96英寸128*64 OLED显示二维码

    0.96英寸I2C,OLED 显示屏显示二维码 STM32 SSD1306 RT-Thread 关于 软.硬件环境 开启RT-Thread的终端打印二维码功能 思路 移植开肝 开始测试 关于 最近手头 ...

  5. Jenkins配置自动打包app发布蒲公英显示二维码

    Jenkins配置自动打包app发布蒲公英显示二维码 搞了一周,终于弄好了,下面就是见证奇迹的时刻. 1.下载Jenkins,去官网点这里选择Windows版本: 2.下载完是个zip解压 安装 一路 ...

  6. 使用CSS实现悬停显示二维码

    目录 方法一 方法二(推荐) 在进行广告配置时,要显示的二维码太小,直接扫码扫不出来,于是需要实现鼠标悬停显示大的二维码. 有两种实现的方法: 方法一 直接在要悬停显示二维码的 DOM 元素上添加样式 ...

  7. 用户登入腾讯视频,QQ扫描二维码不显示二维码

    环境: 电脑:联想E14 系统:Windows 10 专业版 64位 AC:深信服AC13.0.47 问题描述: 用户登入腾讯视频,QQ扫描二维码不显示二维码 解决方案: 1.在AC上,在线用户列表搜 ...

  8. qrcode不显示二维码

    <!DOCTYPE html> <html><head><title>标题</title></head><script s ...

  9. 用STC单片机在TFT屏上显示二维码

    用STC8A单片机在TFT屏上显示二维码 概述 最近项目需要用单片机在TFT屏上显示二维码,将C++下显示二维码的代码经过改造,移值到C代码的单片机,成功运行,经多次测试能稳定运行,TFT屏显示部分, ...

  10. 微信鼠标点击显示二维码代码

    <script type="text/javascript">function showImg(){document.getElementById("wxIm ...

最新文章

  1. Go 学习笔记(17)— 函数(03)[defer 定义、defer 特点、defer 释放资源]
  2. Ehcache配置参数详解
  3. VS2013和MATLAB相互调用混合编程
  4. JS如何获取RadiobuttonList的选中值
  5. ICMP 隧道——将流量封装进 IMCP 的 ping 数据包中,旨在利用 ping 穿透防火墙的检测...
  6. 运维杂记(二):打印机print spooler服务自动关闭
  7. 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数
  8. NTU课程笔记 MAS714(8) 分治与排序
  9. web安全漏洞加固方案简析
  10. 思考: 什么时候需要disable MMU/i-cache/d-cache?
  11. 关系抽取、时间抽取,实践项目推荐
  12. qt中QTreeWidget控件的使用
  13. 机械革命深海泰坦X1(1050T)触控板用不了三指
  14. 2018.11.05-4028-撸串(string)
  15. Disable UTC in Ubuntu
  16. Adb connect监听指定的主机和端口/Adb监听Visual Studio Emulator for Android模拟器
  17. ELementD对象
  18. echarts--(1)--基本使用
  19. 优动漫PAINT入门宝典(图层篇)——矢量图层
  20. Genymotion启动失败解决方案

热门文章

  1. python退出程序 只跳出while_为什么我的简单程序从不退出while循环?
  2. git SourceTree 客户端 安装/使用教程
  3. Oracle 视图、序列、索引、游标、触发器、事务
  4. sql插入时返回插入主键id(id位自动增长)
  5. BZOJ1815 SHOI2006有色图(Polya定理)
  6. Mysql查询性能优化
  7. scala 高级十六 scala 集合和集合的高级特性 map flatten fllatmap zip reduce zip 等操作...
  8. putty详细使用说明
  9. 解决物理机U盘安装Kali Linux2018.1,光驱无法加载问题
  10. eclipse导入Javaweb文件出错解决