引子“二維碼真是越來越多了…”一如既往我拿起手機準備3D touch微博的icon掃碼登錄,,突然覺得這個動作似曾相識,,好像我如此重復的時候還有很多,比如:
天哪,,這實在太麻煩了,我要做一個workflow完成所有的掃碼動作,。 多合一我想把所有要掃碼的地方全部用一個掃碼界面代替,。 目前實現(xiàn)了如下功能:
淘寶、支付寶,、豆瓣,、京東、大眾點評可以直達二維碼鏈接界面,。 但是微博,、微信需要跳轉(zhuǎn)到本身的掃碼界面二次掃碼。 雖說是二次掃碼,,但是也是極快的,。 具體原理可以參考微信的一篇文章。微信掃碼為啥那么快,? 也可以通過兩張動圖對比一下,。
然后要安利大家一個chrome插件,可以把電腦網(wǎng)頁轉(zhuǎn)換成二維碼顯示在屏幕上,,然后就可以愉快地掃碼了,。Anything to QRcode 實現(xiàn)原理實現(xiàn)這個workflow的原理主要基于URL SCHEME的應用和豆瓣API的調(diào)用。 1. 首先獲取各個App的URL SCHEME這些信息部分網(wǎng)上都可以搜到,。
2. 研究調(diào)用機制示例中分為一次掃碼是如何實現(xiàn)的呢,? 一次掃碼像是淘寶、支付寶和豆瓣,,App本身就支持從鏈接跳轉(zhuǎn)到App中制定頁面,,但是如何獲取這個「鏈接」就是關(guān)鍵了。 以情況不復雜的支付寶掃碼舉例,。復雜的情況類似于京東需要抓包分析,,本文不涉及。 這個二維碼包含了一個網(wǎng)頁 https://qr.alipay.com/a6x00588utz0thcokf77vv7d 然后我試著直接打開看看 這是一個新的網(wǎng)址,,有沒有覺得有點眼熟,? https://ds.alipay.com/?from=mobilecodec&scheme=alipays%3A%2F%2Fplatformapi%2Fstartapp%3FsaId%3D10000007%26clientVersion%3D3.7.0.0718%26qrcode%3Dhttps%253A%252F%252Fqr.alipay.com%252Fa6x00588utz0thcofk77v7d%253F_s%253Dweb-other 這個URL經(jīng)過了編碼,首先來解碼 https://ds.alipay.com/?from=mobilecodec&scheme=alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https://qr.alipay.com/a6x00588utz0thcofk77v7d?_s=web-other 將其分段便于理解 https://ds.alipay.com/?from=mobilecodec&scheme=alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https://qr.alipay.com/a6x00588utz0thcofk77v7d?_s=web-other 從上至下一眼便知: 第二行是支付寶客戶端的URL SCHEME,,第四行是剛剛二維碼內(nèi)含的網(wǎng)頁,。 把第二行和第四行結(jié)合起來去跑一下看看 alipays://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/a6x00588utz0thcofk77v7d?_s=web-other 果然成功了!直接進入了我的個人主頁,。 然后就可以在Workflow里開工了,。 首先掃描二維碼,把掃描到的內(nèi)容保存到一個變量中,,我的workflow里起名叫做code,。 隨后我清空了剪貼板,這是一個個人習慣。如果不需要可以刪除,。 接著就是Get Variable用If語句 判斷剛剛讀到的內(nèi)容里面是否含有 qr.alipay.com 這個元素,,如果有的話,那剛剛讀到的應該是一個調(diào)用支付寶打開的鏈接,。那么我們給他在他前面加上一端 alipays://platformapi/startapp?saId=10000007&qrcode= 使得鏈接變成這樣 alipays://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/xxxxxxxxxxxxxxxxxxxxxx 最后使用Open URLs就可以了,。 為了展示效果簡化了判斷是否為鏈接的判斷,也是同樣用If判斷即可,。 3. 羅列一下其它App的解決方案淘寶,,替換鏈接中https為taobao taobao://taobao.com/xxxxxx //淘寶頁面taobao://tb.cn/xxxxx //淘寶掃描二維碼登陸 微信,如包含以下關(guān)鍵字,,調(diào)用weixin://scanqrcode二次掃碼 tenpay.com //微信支付weixin.qq.com //微信公眾號,、小程序、個人名片鏈接 微博,,如包含以下關(guān)鍵字,,調(diào)用weibo://qrcode二次掃碼 weibo.cn //微博掃碼登陸 豆瓣,替換鏈接中https為douban douban://douban.com/book/xxxx //豆瓣讀書 京東,,替換商品id或者登錄key 大眾點評,,提取id dianping://shopinfo?id=<商戶id> dianping://tuandeal?id=<團購單id> 閱讀前文后可以自己嘗試看看,。 4.調(diào)用豆瓣API有興趣的可以研究一下,。在這個workflow里是掃描書背后的條形碼跳轉(zhuǎn)到豆瓣的頁面里。 豆瓣的API頁面:豆瓣圖書Api V2 當我們掃到了書的條形碼,,就是那個978xxxxxxxxxx的13位數(shù)字之后,,如何將它變成一個豆瓣可以打開的鏈接呢? 這里以《島上書店》舉例,。這本書的ISBN號是9787539971810,。 打開這個鏈接 https://api.douban.com/v2/book/isbn/9787539971810 我們可以獲得如下的信息 {'rating':{'max':10,'numRaters':49715,'average':'7.7','min':0},'subtitle':'','author':['[美] 加布瑞埃拉·澤文'],'pubdate':'2015-5','tags':[{'count':8523,'name':'小說','title':'小說'},{'count':6457,'name':'外國文學','title':'外國文學'},{'count':4281,'name':'好書,值得一讀','title':'好書,,值得一讀'},{'count':4024,'name':'美國文學','title':'美國文學'},{'count':3438,'name':'文學','title':'文學'},{'count':3267,'name':'生活','title':'生活'},{'count':3070,'name':'美國','title':'美國'},{'count':2878,'name':'深夜讀書','title':'深夜讀書'}],'origin_title':'The Storied Life of A. J. Fikry','image':'https://img3.\/mpic\/s28049685.jpg','binding':'平裝','translator':['孫仲旭','李玉瑤'],'catalog':'第一部\n《待宰的羔羊》 \/ 3\n《像里茲飯店那樣大的鉆石》 \/ 27\n《咆哮營的幸運兒》 \/ 41\n《世界的感覺》 \/ 81\n《好人難尋》 \/ 89\n《卡拉維拉縣馳名的跳蛙》 \/ 135\n《穿夏裙的女孩》 \/ 167\n第二部\n《與父親的對話》 \/ 183\n《逮香蕉魚的最佳日子》 \/ 197\n《泄密的心》 \/ 209\n《鐵頭》 \/ 223\n《當我們談論愛情時我們在談論什么》 \/ 249\n《書店老板》 \/ 257\n--\n注:整本書的章節(jié)標題都是文學作品的標題,。\n《島上書店》是一部小說。','ebook_url':'https:\/\/read.douban.com\/ebook\/9580262\/','pages':'271','images':{'small':'https://img3.\/spic\/s28049685.jpg','large':'https://img3.\/lpic\/s28049685.jpg','medium':'https://img3.\/mpic\/s28049685.jpg'},'alt':'https:\/\/book.douban.com\/subject\/26340138\/','id':'26340138','publisher':'江蘇鳳凰文藝出版社','isbn10':'7539971819','isbn13':'9787539971810','title':'島上書店','url':'https:\/\/api.douban.com\/v2\/book\/26340138','alt_title':'The Storied Life of A. J. Fikry','author_intro':'加布瑞埃拉·澤文 Gabrielle Zevin\n譯作目錄:http:\/\/book.douban.com\/doulist\/14076\/\n譯文小集:http:\/\/www.douban.com\/note\/34107135\/\n李玉瑤,,編輯,,譯者。七十年代生人,,現(xiàn)任職于上海譯文出版社,。譯有《阿克拉手稿》《與狼共舞》《房間》《激情》等作品。','summary':'島上書店是間維多利亞風格的小屋,,門廊上掛著褪色的招牌,,上面寫著: 沒有誰是一座孤島。','ebook_price':'16.80','series':{'id':'34361','title':'全球頂級暢銷小說文庫:加·澤文作品'},'price':'CNY 35.00'} 很長的一段信息,包含了這本書的封面圖片,、簡介等信息,。 這一次要提取的信息是《島上書店》這本書的豆瓣id 'title':'島上書店','url':'https:\/\/api.douban.com\/v2\/book\/26340138', url下有這本書的id,這本書的豆瓣網(wǎng)頁鏈接也包含了這個信息 26340138https://book.douban.com/subject/26340138/ 接下來進行文字替換,,打開鏈接即可,。 https://api.douban.com/v2/book/26340138douban://douban.com/book/26340138 下面用Workflow來完成這個動作。 5.如何把以上東西全部放到一個workflow里以上的教程單單領(lǐng)出來一個可能制作起來很方便,,但是要怎么自動識別讀到的文字呢,? 這里要用到正則表達式進行判斷 首先判斷一下是不是ISBN碼,它的特征是13位數(shù)字,,978開頭,。 ^978[0-9]{10}$ 再可以判斷是不是http開頭的鏈接,這里就不展開了,,這需要一些耐心琢磨,。 推薦大家兩個網(wǎng)站可以自學,正則表達式在線測試,,正則表達式30分鐘入門 拋磚引玉這個workflow還遠遠沒有完美,,希望大家一起完善。 這種東西少數(shù)派的大神肯定早就做過了吧,,我心里是這樣想的,,希望能夠拋磚引玉。 我暫時還沒有辦法找出手機QQ掃碼界面的url,。微博微信的掃碼還需要跳轉(zhuǎn)到App本身的掃碼界面二次掃碼,,并不像淘寶和豆瓣那樣可以直達。 歡迎留言,。 workflow下載地址:https:///workflows/50c68c91dfc5481689599b2c96ab98ba Update2017-01-23 增加大眾點評掃碼登陸&掃碼跳轉(zhuǎn)到手機大眾點評 2017-01-22 增加京東掃碼登陸&掃碼跳轉(zhuǎn)到對手機京東 2017-01-19 增加了支付寶掃碼付款&掃碼加好友等功能 2017-01-18 First Release,,支持淘寶、微博,、微信,、豆瓣 |
|