技巧:利用 Workflow 显示附近的免费 Wi-Fi
2016-12-06 09:34
323 查看
得益于 Workflow 自 1.5.3 版本起更新的 Get Content of URL 动作,该 App 的潜力得到了极大的提升。本文分享一种有趣的用法,搜寻附近的免费 Wi-Fi 并择一显示在系统地图上。
获取当前地理位置;
通过网络资源获取附近的免费 Wi-Fi 资源;
将所选 Wi-Fi 显示在系统地图上
大体的步骤很少,所以是非常简单的。下面将逐步介绍。
请求方式为 Get/Post,总共有 6 个输入参数:
lon:经度,使用上一步获取的经度;
lat:纬度,使用上一步获取的纬度;
gtype:所传递经纬类型,1:百度 2:谷歌 3:gps,填 gps;
r:搜索范围,单位 M,填 1000 即可,太远懒得跑;
key:应用 APPKEY,申请后可以获得,或者直接使用我的;
dtype:返回数据的格式,不用填。
如上填写就可以获取到返回的 json 数据了,参照 API 文档页面的介绍逐层提取数据即可。
每个 Wi-Fi 的数据形式如下:
使用 Set Name 动作
在使用 Repeat with Each 动作对 Wi-Fi 位置信息进行逐个处理时,首先提取用于显示的信息,如 Wi-Fi 名称、距离,再使用 Set Name 对每个 Dictionary 数据命名:
这样在接下来的 Choose from List 动作中所有 Dictionary 都将显示自己独特的名字,而不是一个个干巴巴的「Dictionary」。在使用者做出选择后,就可以安排其它的 Get Dictionary Value 动作来进一步获取数据了。
该方式唯一的缺点就是在只有一个 Dictionary 数据时,由于 Workflow 开发者更新了 Choose from List 动作,此时会显示 Dictionary 中的键与键值,所以需要安排额外的动作对此进行处理。
使用 Text 动作
该方式在 Repeat with Each 动作结束后,会产生一个文本 List,随后的 Choose from List 动作将列出每个文本的首行。在使用者做出选择后,需要通过 Match Text 动作使用正则表达式对经纬度数据进行匹配,语法如下:
优点是避免了 Set Name 方案的问题,缺点是每一次循环都需要将经度纬度提取出来,当数据有成百上千个时会多浪费点时间。
将从步骤二中获取的数据填入并访问即可。
2. 苹果地图显示位置:
只有两步操作,所以还是很快捷的。虽然距离的显示有点问题,但还在我可以接受的范围内。不过聚合数据的 Wi-Fi 数量不算特别多,不知是否会进一步更新数据库。
原作者: creampie
简介
本 Workflow 主要分三部分,从通知中心运行(下载地址)获取当前地理位置;
通过网络资源获取附近的免费 Wi-Fi 资源;
将所选 Wi-Fi 显示在系统地图上
大体的步骤很少,所以是非常简单的。下面将逐步介绍。
1. 获取当前地理位置
这个直接利用 Workflow 自带的 Get Current Location 动作就可以获取,由此获得的地理信息包含经纬度,分别使用 Get Details of Locations 提取即可。经纬度信息将用在步骤 2 中。2. 获取附近免费 Wi-Fi 信息
这里就直接使用聚合数据的 全国 Wi-Fi API 了,只需要注册个账号就可以申请 API key,没有使用限制。请求方式为 Get/Post,总共有 6 个输入参数:
lon:经度,使用上一步获取的经度;
lat:纬度,使用上一步获取的纬度;
gtype:所传递经纬类型,1:百度 2:谷歌 3:gps,填 gps;
r:搜索范围,单位 M,填 1000 即可,太远懒得跑;
key:应用 APPKEY,申请后可以获得,或者直接使用我的;
dtype:返回数据的格式,不用填。
如上填写就可以获取到返回的 json 数据了,参照 API 文档页面的介绍逐层提取数据即可。
每个 Wi-Fi 的数据形式如下:
{ "name":"瑞尔威饭店", "intro":"中F1旅馆门厅;中F2办公区;中F3-F7奇数层走廊;中F4,F6走廊;东F2餐厅,办公;东F3-F7奇数层走廊;东F4,F6走廊;西F3-F7走廊;西F1快餐厅;西B1公共区域", "address":"北京市丰台区北京市丰台区莲花池东路116-2号", "google_lat":"39.896877", "google_lon":"116.325342", "baidu_lat":"39.9026269139", "baidu_lon":"116.33193121541", "province":"北京市", "city":"北京市", "distance":2959 },
注意
唯一关键的地方是,如果附近有多个 Wi-Fi,则服务器会返回多组数据,这时必须要将它们排成列表供使用者选择。而未经处理的 Dictionary 数据在 Choose from List 动作中的显示统一是「Dictionary」,不利于使用者查看。这里介绍两种解决方式:使用 Set Name 动作
在使用 Repeat with Each 动作对 Wi-Fi 位置信息进行逐个处理时,首先提取用于显示的信息,如 Wi-Fi 名称、距离,再使用 Set Name 对每个 Dictionary 数据命名:
这样在接下来的 Choose from List 动作中所有 Dictionary 都将显示自己独特的名字,而不是一个个干巴巴的「Dictionary」。在使用者做出选择后,就可以安排其它的 Get Dictionary Value 动作来进一步获取数据了。
该方式唯一的缺点就是在只有一个 Dictionary 数据时,由于 Workflow 开发者更新了 Choose from List 动作,此时会显示 Dictionary 中的键与键值,所以需要安排额外的动作对此进行处理。
使用 Text 动作
该方式在 Repeat with Each 动作结束后,会产生一个文本 List,随后的 Choose from List 动作将列出每个文本的首行。在使用者做出选择后,需要通过 Match Text 动作使用正则表达式对经纬度数据进行匹配,语法如下:
(?<=lat:).*?(?=\n) (?<=lon:).*$
优点是避免了 Set Name 方案的问题,缺点是每一次循环都需要将经度纬度提取出来,当数据有成百上千个时会多浪费点时间。
3. 在系统地图显示 Wi-Fi 位置
查询苹果地图相关的 文档 后,可以知道该 URL 为:http://maps.apple.com/?ll=纬度,经度&q=名称
将从步骤二中获取的数据填入并访问即可。
使用
1. 通知中心访问:2. 苹果地图显示位置:
只有两步操作,所以还是很快捷的。虽然距离的显示有点问题,但还在我可以接受的范围内。不过聚合数据的 Wi-Fi 数量不算特别多,不知是否会进一步更新数据库。
原作者: creampie
相关文章推荐
- 利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
- 高通Wi-Fi显示技术:电视机同步显示手机画面
- Android开发wifi功能(附近Wi-Fi,输入密码,链接Wi-Fi)
- 古巴开设免费Wi-Fi
- 传谷歌微软争夺频率资源欲建设免费Wi-Fi网络
- 被“无聊”催出来公交免费Wi-Fi
- 基于Wi-Fi的HID注射器,利用WHID攻击实验
- 央行:免费Wi-Fi易出安全问题 少做网上支付
- 笔记本无线网卡变身热点供手机Wi-Fi免费通过宽带上网
- 15款免费的Wi-Fi安全测试工具
- 安全专家称黑客瞄上Wi-Fi免费上网大餐
- 一键获取隐藏Wi-Fi SSID:利用Python和Scapy发现隐藏无线热点
- 【SEO实战技巧】利用免费博客提升…
- 日本免费Wi-Fi
- 乔布斯曾想利用Wi-Fi频谱为iPhone单独打造一个移动网络
- 直接拨号、将电话号码传入拨号程序、调用拨号程序、调用系统浏览器浏览网页、调用系统程序查看联系人、显示系统设置界面和显示Wi-Fi设置界面代码
- Facebook与思科联手推免费Wi-Fi服务 搜集用户数据