「我打不开啊!」

早上分享了一个App给朋友,他这样回复我。

操作流程大致是这样的。

我就奇怪了,自己也试了下,发现appsto.re短链真的打不开。

被墙了。好的吧,那只好自己想办法了。

开工

思路很简单,就是把短链恢复,还是用Workflow完成,顺便看看还有什么需要的功能就一起加进去。

这里有个捷径,如果你使用iMessage通信,直接在Share Sheet中拷贝链接就可以获取到长链,复制到iMessage中会自动转换。本文后面的内容没有任何实际意义。

短链恢复

想把短链恢复成长链其实并不是一件十分容易的事。

因为还是有以下限制:

  • 服务在国内可以正常访问
  • 免费
  • 可以解析appsto.re

这三条枪毙了很多网址恢复网站或者API。不过我还是找到了。

速度很理想,可惜的是没有提供API。

于是分析了一下网页,chrome里右键-查看网页源代码即可。

其实是一目了然的。

向 bitly.co 这个网站 POST 一个包含 turl / url_done 两个参数的 form 的 Request 就可以返回我们需要的长链了。

下面看一下如何在Workflow里实现这个过程。假设短链存于变量link中。

同样可以还原goo.gl或者t.cn等短链。

PS:

Workflow自带了Expand URL action,需要梯子。有条件的朋友可以用这个action代替。

额外功能

有了长链,其实可以做的事情很多。比方说:

  • 在App Store打开这个App的页面
  • 获取这个App的图标&预览
  • 发送一段含长链的文字分享给朋友

在App Store中打开

将获取到的长链变成URL类型,再Open URLs即可。

704864118.jpg

获取App图标

Apple提供了非常方便的方式让我们获取包含App图标和App预览图片。

中国区
http://itunes.apple.com/cn/lookup?id=

从长链中提取出App的id=966489322,可以使用正则表达式实现。

https://itunes.apple.com/cn/app/sheng-chen-guang-yin-yu-xin/id966489322?l=en&mt=8
接着访问
http://itunes.apple.com/cn/lookup?id=966489322

来看一下成果。这是一个包含了App页面所有信息的文件,访问上述网址可以得到。

搜狗截图20170130002203.jpg

黄色区域是操作区。

红色区域的三个链接对应三种不同大小的图标,蓝色区域的链接指向App预览图片。

用Workflow实现这个操作

1420507413.jpg这里还是用到了Get Contents of URL action,获取到App页面所有信息后,用Get Dictionary Value action将results,也就是黄色区域提取出来。artworkUrl512指向图标文件,所以再次使用Get Dictionary Value action将其从results结果中提取出来,最后预览图片。展示一下效果。

ImageApp预览图片的部分要用到一个新的action,叫做Repeat with Each。这样就可以获取到screenshotUrls中的所有图片了。然后添加到image变量中。

IMG_3056.png

分享

apple自带的分享信息如下,我拿高德地图举例好了:

Image
高德地图(精准专业的手机地图)-自驾公交骑行导航,作者:AutoNavi Information Technology Co. Ltd.
http://appsto.re/cn/OGqHB.i

我用自带的分享都会觉得很尴尬,这个短链接打不开,国内很多App开发商喜欢把App名称设定很长,再加上英文的开发商名称,实在太啰嗦了。所以我要做一些改动。

高德地图(精准专业的手机地图)-自驾公交骑行导航
https://itunes.apple.com/cn/app/gao-tu-jing-zhun-zhuan-ye/id46170328?mt=8

这样贴给朋友感觉好一些。

实现起来也很简单。

简单处理一下文本,然后复制到剪贴板,就可以随意分享了。

分享效果对比:

IMG_3062.jpg

最后

这虽然是个非常简单的功能拓展,但是牵扯到的action却都很常用,而且足够基础,所以拿出来详细说明思路和制作方法。希望可以启发到对Workflow充满迷茫的朋友们。

制作Workflow需要很基本的逻辑和英文能力,而不是编程基础。在明白Workflow可以为你做什么之前,不妨多看看,照葫芦画瓢。然后再根据自己的需求大胆创作吧!

贴上上文的workflow:https://workflow.is/workflows/7972e30ba4f6409f8c6a49daf0d94f78