几天前 Hum 发给我一个分享 iPhone 热点的 Workflow,问我是否了解其中的原理。

这个 Workflow 来自 疯先生博客的一篇文章,它可以生成一张带有 Wi-Fi 信息的二维码,理想效果是扫描后能直接加入 Wi-Fi。我平时常常给朋友分享热点,正需要这样一个 Workflow,免去每次手动帮别人输入密码的麻烦。

但是下载试用了这个 Workflow 后我遇到一些问题,扫描二维码后无法加入 Wi-Fi。检查后我发现这是原 Workflow 中的文本框使用不规范2 导致的,所以我进行了一些改良,现在应该不会出现问题了。这是成功连上热点的效果(Workflow 下载):

把这个二维码保存到手机里,要分享个人热点的时候你就可以从相册直接掏出来,炫一下技。你甚至还可以把这个二维码 用 Live Photo 做到锁屏壁纸上,炫技效果更理想。

用这个方式分享 Wi-Fi 密码是个好主意,不挑设备,iPhone 和 Android 手机都可以扫码加入。而且它使用场景很广泛:不仅仅是手机热点,家里、宿舍、餐厅的 Wi-Fi 都能用,还可以打印出来贴在墙上。这样的二维码,我们稍微了解一下原理就能做出来。

接下来,我们就来看看如何在 iOS 和 Mac 上制作一个这样的二维码。

iOS:用 Workflow 制做热点二维码

下载 Workflow 后,第一次运行时会提示你填入设备的名称(可以在 设备-通用-关于本机 中查看),因为这个 Workflow 主要的应用场景就是为手机热点生成二维码。

填入设备名
再来看一下这个 Workflow 的内部,其中有一些部分你是可以修改的。首先是第一个文本框 Text,其中的「请填入手机名」在第一次启动该 Workflow 时就已设置好,不过你仍然可以修改它,比如你改了手机名或打算为路由器生成二维码时。

输入框 Ask for Input 中的默认答案 Default Answer 也是可以自己填的,一般情况下我们的热点密码不会改,可以通过设置默认密码减少输入工作量。


其中 List 和 Choose from List 两个动作是可选的,如果你仅仅用于为 iPhone 热点生成二维码,一般不需要选择加密类型(iPhone 默认是 WPA1 )。如果你把两个动作删除了,记得将第 4 步的内容换成 WIFI:T:WPA2;S:【Wi-Fi 名称】;P:【你的密码】;;。要注意,你自己的 Wi-Fi 名称里可以带有空格,但是其他地方不能出现空格,不然会导致二维码无法被正确识别。

运行的时候依次填入、选好所需参数,就能形成一枚二维码。想象一下作为一个流量大户,你给朋友们开热点时只需让他们扫一扫,不用手打密码,真是大方和优雅兼具。

当然,你也可以把这枚二维码保存进相册,下次直接掏出来给朋友扫。

Mac:用 EFQRCode 做 Wi-Fi 二维码

自家的 Wi-Fi 不常换密码,我们就不需要每次运行 Workflow,把这个二维码打印出来贴在不碍眼的地方是更方便的选择。需要提醒的是,这个方法是明文保存密码,别人可以用二维码解析工具直接看到内容,所以它没有什么加密作用,仅仅方便连接 Wi-Fi。

如果你觉得黑乎乎的二维码看着很压抑,不妨参考我以前的文章 如何做一个特立独行的二维码,为二维码做一些美化工作。文章写得较早,现在我更推荐的艺术二维码制作工具是 EFQRCode

这样精致的二维码,几乎可以裱起来挂在墙上当作艺术品。制作工具 EFQRCode 的使用非常简单,只需要在文本框里输入 WIFI:T:【加密类型】;S:【Wi-Fi 名称】;P:【你的密码】;; 这一串文本,再选一张图片(watermark),点击 Create 就能生成独具特色的二维码。

工具下载:



原理

如果你对这个二维码的原理感兴趣,可以读读最后这一部分。这个二维码其实包含了一段 WIFI:T:安全等级;S:Wi-Fi名称;P:密码;; 格式的文本,里面记录着 Wi-Fi 的安全等级、名称和密码:



这是 zxing 提出的一种编码形式「Wifi Network config (Android)」,凡是支持这类编码的设备,捕获到这串文本后就会弹出「加入 Wi-Fi」的建议。当然,成功连上的前提是你处在这个 Wi-Fi 的覆盖范围内。

就像你在 Evernote 里输入 www.xxx.com 的文本, 它会被自动解析为超链接,Wifi Network config 也会被解析成一段加入特定 Wi-Fi 的「超链接」。

Android 设备早年间就已支持 zxing 的编码(zxing 的 GitHub 上至今在这种编码方式后用大大的括弧标出「Android」),iOS 系统算是赶上了末班车。