iOS使用JSBox实现一键查询公交

1.起源

作者本人吊丝码农,坐标苏州,一把年纪了上下班还要挤公交,每次出门之前,都习惯性的查询一下目前公交距离自己还有多少站路,以确定走路的步伐快慢[捂脸哭]。

在苏州的朋友可能会知道,查询各路公交有个专门的微信公众号,所以每天出门时要查公交的时候,还得

1.先打开微信;
2.找到公众号;
3.点击公众号第二个tab“公交查询”呼出菜单;
4.再点开“公交实时查询”的菜单按钮,才能打开查询的网页;
5.输入要查询的公交线路;
6.点击搜索出的结果;

经历这繁琐的6步,才能查询到运行情况。Emmmm到这里是不是觉得每天出门第一句,先说一声xxx。

WTF.png

其实说白了,我们要解决的问题,或者说需求就是用最简单的步骤,获知最近一班你想要乘坐的公交,距离自己还有多少站路?

2.分析

2.1获取数据

经过前几步复杂的步骤,无非就是打开了一个专门的网页,查询相应的接口。打开强大的Charles,设置手机代理抓包,抓到如下几个接口:

1.网页地址
苏州公交110南线示例
请求方式:GET
http://app.2500.tv/bus/lineInfo.php?lineID=10000522&roLine=10000570
一个get请求后面接了俩参数,但是只能在微信内嵌浏览器内打开(可能是为了获取用户openId,用于统计)。

2.查询接口
http://app.2500.tv/bus/api_line_status.php
请求方式:POST
入参数:lineID
返回:

{
    "status":1,
    "data":[
        {
            "BusInfo":"",
            "Code":"ADU",
            "ID":10003883,
            "InTime":"",
            "OutTime":"",
            "StationCName":"星塘公交中心"
        },]
}

其实有了第二个接口,就能做很多事情了。

2.2处理数据

我们已经能有办法获取到数据了,但是我们想要在手机上处理数据,就必须得有一个容器来获取数据,再处理数据。这个时候就轮到主角JSBox登场了。

2.2.1 JSBox

JSBox 是由知名的 PIN (iOS 剪贴板增强工具) 的作者@StackOverflowError推出的一款可让你在 iOS 上编写与运行 JavaScript 脚本的工具。
这个app是收费的,貌似还不便宜,没记错的话是50软妹币。不过本人刚好某次转发微博抽奖抽到一个兑换码😜😜😜😜
点击这里了解更多关于JSBox
个人推荐使用VSCode来编辑脚本,毕竟在手机上码代码太难受了,而且JSBox还提供了VSCode插件,能够在线编辑调试,非常方便。

利用JSBox封装好的$http,去调接口,然后再对返回的json,做下一步的处理(遍历,循环,判断,计算),计算出当前最近的一般公交,距离你有几站路。

2.2.1 为什么不直接用捷径

有人也许会说,iOS的捷径app,也能实现。确实不可否认,本人只对捷径研究了一两个小时,里面也有高级的api,来调接口。但是不用捷径直接处理的原因如下:

捷径截图.png

如上图所示,用程序猿的眼光来看:
捷径本质就是把某一个功能,不用代码,而是用图形化(GUI)的界面来实现。
所以,对于一般大众用户,编程小白来说,用捷径去完成一些不复杂的工作流,还是可以的。比方说,相应一条指令,打开某个app,或者拨打某个电话等等。
但是,想对于发送post请求,json数据解析,业务需求处理,这种相对高级的操作,用图形化界面来弄,会变的非常的复杂。
总结一下就是:
1.GUI操作界面,不太适合复杂度高,定制化高的工作流,而且是在手机上操作 ;
2.还是因为GUI的原因,不方便调试(debug),工作效率就显得很低下;

2.3展示数据

UI展示,直接利用了JSBox提供的控件labellist
将第2.2中处理好的数据展示出来,展示出:
1.还剩余多少站路
2.还剩余那些站。
直接照着文档一步一步敲,而且Masonry似的布局方式对iOS开发者很友好,就可以轻轻松松搭UI界面。

3.最终效果

3.1 在JSBox中使用

直接运行脚本,来看效果:

JSBox内效果.gif

可以看出能达到查询公交的效果,最后来实现如何实现一键查询

3.2 通过iOS锁屏widget(推荐)

废话不说上图


widget.gif

锁屏widget里一键点一下即可,都不需要解锁,很方便。

3.3 通过Siri唤起(推荐)

通过Siri,也能实现一键查询。不过通过Siri实现的方式有两种。

3.3.1 Siri唤起JSBox执行脚本

在JSBox App里,添加方式有如下两种:
脚本设置页面 -> 添加为 -> 添加为 Siri
系统设置页面 -> Siri 与搜索 -> 在捷径中找到相应的脚本
效果图:


siri_run_jsbox.gif

3.3.2 Siri唤起捷径执行JSBox

当然需要你先创建一个捷径,并且你要在捷径里,添加一个JSBox提供的组件。然后再设置Siri指令。

捷径设置.png

效果图:
siri.gif

使用Siri的唤起的好处就是,你都不需要动手点亮屏幕,直接一句“嘿,Siri,我要下班”就能够实现查询。
当然,前提是手机要先设置好Siri唤起,以及手机不处于低电量模式。

3.3.3 通过桌面图标唤起(比较推荐)

首先,你还是要先创建一个捷径App,导入JSBox提供的组件。然后再设置“添加到主屏幕”


image.png

如图,本人添加了俩个捷径。
效果图:


图标唤起jsbox.gif

如果你所在的环境比较嘈杂,不方便使用Siri唤醒,除了widget之外,使用桌面icon一键唤醒,也是比较推荐的方案。

4.扩展

整个脚本,我都是把线路参数,公交站参数等等直接写在脚本里的,直接做成二维码分享出去意义不大,毕竟每个人的查询需求是不同的。有需要的,可以下载脚本,根据公众号的网页抓包,得到你想要的线路和站台参数,修改完后再执行。
附上Demo,走过路过的朋友不妨可以star或者fork一下。

万变不离其宗,对于非苏州的朋友,可以各自查找所在城市相关的微信微博网站等等,找到相应的查询接口,JSON数据结构修改一下,就可以了。

5.总结

本人前后花了不到一天的时间,从0开始学习JSBox和捷径,直至做出最终效果。可以说上手难度还是很低的。整个过程也学习了很多,感受到了JSBox这个app很强大,值得深入研究。
完结,鼓掌散花!👏👏🌹🌹

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容