我看到过一些例子,人们在二维码上编写这样的可执行代码https://itsmattkc.com/etc/snakeqr/.我想创建一个二维码来执行命令,为任何手机(安卓和IOS(打开特定的手机应用程序
的过程是这样的
- 用手机扫描二维码
- 手机执行存储在二维码(类似于C语言中的"启动C:\…\特定应用程序"的代码(内的命令,并打开应用程序,如果手机上没有安装应用程序,则提示用户下载
- 关闭用于执行命令的窗口(如果有(
我现在的问题是,
- 什么语言可以用来编码打开手机应用程序的命令,就像我上面所说的那样
- 如何将代码转换为二维码
背景二维码本身不执行任何操作,在高级二维码只是将字节数组序列化为可视化形式的一种方法,读取器可以将图像反序列化为字节数组,然后必须对其进行解译。
通用QR阅读器通常会假设原始数据代表一个编码字符串,因此会将字节解码为字符串。
SnakeQR中的说明告诉你使用一个二维码阅读器,它可以将字节保存到磁盘上,而不是将它们解码成字符串,这只是表明二维码包含二进制数据,数据本身没有任何作用,用户需要获取这些数据并完成下一步操作,但操作取决于用户。
这是魔法开始发生的时候,如果二维码代表或包含URL,那么大多数阅读器应用程序将自动启动web浏览器并导航到该URL。
在应用程序开发领域,我们可以劫持这些二维码阅读器的默认行为,以3种方式与设备交互:
-
编写一个网页,该网页将执行脚本以在导航到该页面的设备上完成操作,将其托管在全局可访问的位置,并将该页面的URL存储在您的二维码中。
-
使用设备将识别为内部位置的URI,这篇文章如何从QR阅读器启动我的android应用程序描述了这个过程,在android应用程序API中,你可以定义这些意图,有效地注册具有特定操作的URI。
- 这方面的细节超出了范围,这个问题是关于QR码本身的,但大多数操作系统都有类似的过程,其中有绑定到URI的标准操作,并且通常有一种机制可以创建自定义绑定
-
编写您自己的专有二维码阅读器应用程序,该应用程序可以本机理解二维码中的命令,并可以直接执行。
就支持这一点的语言而言,这不是特定于语言的事情,在Android应用程序中,你想利用的机制是Android Intents教程(Android开发者-Intents(。
在iOS中,多年来一直存在URL绑定的混合版本,但SiriKit可能是功能上最接近的,它的限制远大于android,但足以启动应用程序并传递参数。
在Windows操作系统中,你可以注册URI方案来做同样的事情。。。
当涉及到专有逻辑时,我们可以使用所有3种方法为用户构建一种无障碍的体验:
- 制作一个带有类似"如果你看到这个页面,那么你应该安装我的应用程序以获得增强的体验">(在这个页面上应该有关于如何查找和安装应用程序的说明(
- 将二维码作为登录页的URL,并将您想要传递给应用程序的参数作为URL参数
- 构建和发布你的应用程序,在此应用程序中,你应该向本机设备操作系统注册登录页的URI,以便在安装设备后,你的应用会运行,而不是用户进入登录页。不要忘记将任何参数映射为应用程序的启动参数