//新版本:/p/c9ef4060

本文不包含可以直接使用的链接 但新版本中提供

先上个效果图

image.png
---前提剧情---

上个月朋友安利了我Workflow这个应用,其实2014.10就有人推荐给我了,当时有点犹豫,但这次买的原因是有一条戳中了痛点:对于一个16G用户来说,总会有一堆没用的截图占空间!虽然截图本身很小,但是每天总有那么几张发给朋友的截图,之后又没有意义,但也懒得删除。2014年用iPhone 4S的时候照片占了整个13G(iOS 7)中的7个G(真不知道当时剩下的空间怎么用的,完全不够)。然而2014.9我买iPhone 6时仍然固执的选择了16G,现在用的也挺悲剧。

image.png


为了解决无意义截图的问题,我购买了Screeny,一款专门帮助你清理截图的软件,但当他安利我时告诉我Workflow可以在通知中心删除指定截图时,我毫不犹豫的花了¥18买下来了。

双十二买了一张小米通信的SIM卡,然而小米却选择发“如xx快递”导致我12.23才用上,现在流量还剩1.1G!!于是在我等快递时,突发奇想,为什么不用Workflow查快递呢?

---准备---

image.png

在开始之前,请保证有一个自己的域名,或者朋友有也行,这是因为注册快递API一般会要求在自己的域名加入友情链接,但审核通过后就可以删除了,因此找别人借一下也可以。

在“提醒事项”中创建一个名为“Workflow”的列表(可修改Workflow内容自定义名字)

image.jpeg

有关API在Workflow上的运用,请参考少数派  Workflow 教程(七):https://sspai.com/30870

---正文---

下文选用的API为kuaidi.com提供,申请和技术文档请参阅此网页,此API所用到的快递公司代码和格式请参照此文档。还有很多快递查询网站提供API服务,可根据自己需求选择。

下载这条Workflow来对比思路 >

1.读取名字为“Workflow”的提醒事项列表中的事项,并读取个数,如果只有一个则跳过选择,如果大于一个则选择其中一个作为快递单号,并保存单号数字(提醒事项的标题)为“事项”

2.读取对应事项中的内容,为“代号”(即快递公司)

3.将单号和公司带入API网址,下载API提供商给我们返回的数据。

这里得到了数据如下:

{"success":true,"data":[{"context":"已签收,感谢使用顺丰,期待再次为您服务","time":"2015-12-28 17:51:25"}],"status":6,"reason":""}

这是一段标准的json代码,我们如何对这段代码进行分析呢?首先为确保编码正常显示,先用URL Encode工具做一个解码,然后读取返回数据中的字典(也就是success,data这样的东西)并保存为“结果”

image.png(P.S.授权码我已替换,请自行申请)

4.判断查询是否成功,在上述API中提供success值表明是否查询成功,比如快递公司代号错误,单号错误等都会导致失败。

读取json代码中success的值:

如果success=1,则是成功的,进行下一步

如果success=0,则是失败的,重新取回“结果”,读取“reason”即为失败的原因,并通知。

比如这是一段失败的返回代码

{"success":false,"reason":"快递公司代码异常或单号错误。","data":[],"status":0}

5.如果成功,重新取回“结果”,进入data项。在刚刚的代码中可以看到data里面又有context和time,分别读取设置为时间和内容,发送通知。

效果GIF

image.gif

整个过程只有三步,由于每次查询快递公司很麻烦,你也可以修改代码存储一些比较常用的快递公司,让程序来执行公司代号的读取。一般的快递公司代号都是全拼,具体请以上文doc文档为准,且不同API提供商返回数据格式和网址不同,请按照自己的需求更改代码。


---P.S---

第一次写文章,感觉自己有点跳步骤,因为这个代码是我改过很多次的,也节省了一些我觉得不必要的步骤,所以不知道各位能否理解,有什么问题可在评论区讨论,谢谢:D