支付宝客户端的插件机制

前言

因为开了iOSDevTips的微信公共账号,老收到各种iOS开发的问题,前两天收到一个问题的内容是:

请问像支付宝钱包那样可以在应用里安装自己的应用,是已经在应用里写了逻辑,还是可以向应用里发送代码?

我觉得这个问题挺有意思的,估计大家都感兴趣,所以今天就抽空研究了一下,将支付宝客户端的插件机制具体实现方式介绍给大家。

先介绍一下该插件机制,如上图所示,支付宝客户端在安装后,对于像“彩票”、“爱心捐赠”这类功能,需要再点击安装一次,然后才可以使用。有些时候该插件功能进行了升级,需要点击升级才可以继续使用。插件的方式有利于软件动态增加新的功能或升级功能,而不用再一次向AppStore提交审核。另外,由于用户不需要的插件可以不用安装,也缩小了应用本身的体积大小,节省了下载流量。

分析过程

截取网络请求

分析第一步,截取网络请求。截取网络请求可以查看当用户点击“彩票”进行安装的时候,客户端到底做了什么事情。使用Charles的代理设置功能,启动一个http代理,然后在iPhone上设置连接此代理,则可以看到,当点击“彩票”插件时,客户端下载了一个名为 10000011.amr的文件。如下图所示:

下载插件文件

尝试用wget将文件下载下来,发现其没有验证cookie,下载成功,命令如下:

1
wget http://download.alipay.com/mobilecsprod/alipay.mobile/20130601021432806/xlarge/10000011.amr

amr本意表示是一个音频文件,明显不对,尝试将其后缀名改成zip,成功将其解压。用itools连接上支付宝的客户端,同样能看到客户端将其下载后,也是解压到document目录下的。解压后的内容与应用内新增加的内容一致,如图所示:

分析文件内容

大概浏览了一下解压后的文件,主要包括html、css和js文件。可见支付宝的插件机器是通过UIWebView来展示内容的方式来实现的,那为什么要先下载安装这些内容而不通过UIWebView实时下载html呢?这主要应该是为了节省相应的流量。我看了一下,10000011.amr文件整个有将近1M大小,如果不通过插件机制预先下载,则只能依赖系统对于UIWebView的缓存来节省流量,这相对来说没有前者靠谱。

另外,使用基于UIWebView的方式来展示插件,也有利于代码的复用。因为这些逻辑都是用js来写的,可以同样应用于Android平台,在Config.js文件中,明显可以看到对于各类平台的判断逻辑。如下图所示:

另外,/www/demo/index-alipay-native.html 文件即该插件的首页,用浏览器打开就可以看到和手机端一样的内容。如下载图所示(左半边是手机上的应用截图,右半边是浏览器打开该html文件的截图):

插件的网络通讯

接下来感兴趣的是该插件是如何完成和支付宝后台的网络通讯的。可以想到有两种可能的方式:

  1. 直接和支付宝后台通讯
  2. 和Native端通讯,然后Native端和服务器通讯。

要验证这个需要读该插件的js源代码,整个js源码逻辑还是比较干净的,主要用了玉伯写的seajs做模块化加载,backbone.js是一个前端的MVC框架,zepto.js是一个更适合于移动端使用的”JQuery”。

大概扫了一下,感觉更可能是用的方法一:直接和支付宝后台通讯, 因为Config.js中都明确将网络通讯的地址写下来了。另一个证据是,利用下面的脚本扫描整个js源码,只能在backbone中搜到对于iframe的使用。而在iOS开发中,如果js端和native端要通讯,是需要用到iframe的,详细原理可以参见我的另一篇文章《关于UIWebView和PhoneGap的总结》。不过我不能完全确认,因为我还没有找到相应控制页面切换和跳转的js代码,如果你找到了,麻烦告诉我。

1
find . -type f -name "*.js" | xargs grep "iframe"

交易的安全

用Charles可以截取到,当有网络交易时,应用会另外启动一个https的安全链接,完成整个交易过程的加密。如下图所示:

总结

支付宝的插件机制整体上就是通过html和javascript方式实现的,主要的好处是:

  1. 跨平台(可以同时用在iOS和Android客户端)
  2. 省流量(不需要的插件不用下载,插件本地缓存长期存在不会过期,自己管理插件更新逻辑)
  3. 更新方便(不用每次提交AppStore审核)

坏处如果非要说有的话,就是用javascript写iOS界面,无法提供非常炫的UI交互以及利用到iOS的所有平台特性。不过象支付宝这种工具类应用,也不需要很复杂的UI交互效果。

另外教大家一个小技巧,如果你不确定某个页面是不是UIWebView做的,直接在那个页面长按,如果弹出”拷贝,定义,学习”这种菜单,那就是确定无疑是UIWebView的界面了。如下图所示:

相关工具

欢迎关注我的技术微博 @唐巧_boy 和微信公共账号 iOSDevTips ,每天收获一些关于iOS开发的学习资料和技巧心得。

我在研究时使用了Charles来截获支付宝客户端的网络请求,用iTools来查看支付宝客户端的本地内容。如果你想自行验证本文内容,请先下载上述工具。在此就不额外介绍它们的使用了。

保卫生活,直到世界崩塌

以下内容再次摘自「知乎」,请大家根据理智自行判断,各取所需!

 

哪些东西购买或用上之后,会让人因生活质量或幸福感提升而感觉在这个水生火热的世界有活下去的理由了?

下面主要为汇总信息,具体的细节介绍和体验分享请猛击「这里」来深度阅读。

 

电子产品类:

  1. 迅雷会员下各种资源[迅雷VIP需要多说么?] QQ绿钻下珍稀音乐
  2. 阅读:KindlePaperwhite +豆瓣阅读+爱看豆+Kindle DXG
  3. 耳机类:HIFI耳机与降噪耳机——HIFI耳机有(AKG K701+清华吴刚的小耳放+CD音源)降噪耳机有BOSE OE 索尼 NC22 主

    动降噪耳机 (RMB 300), 索爱 MW600 蓝牙立体声耳机 (RMB 300) 一套hifi音响或者耳机。beats的HD。monster beats的低音效果太赞 bose IE2 HD600HD650 Monster Isport

  4. TP-Link mini wireless router,迷你无线路由器,出差必备/大功率无线网卡
  5. Cherry白色茶轴机械键盘[天天用键盘的才能理解巨大的差异],680元
  6. Sandisk CZ80 -16/32/64G U盘
  7. 移动电源[手机控必备]
  8. 三星128G的固态硬盘[最便宜的方法来体验下个时代的计算机速度]
  9. 宾得ME SUPER
  10. 索尼的录音笔
  11. 苹果三件套;Iphone+Ipad(iOS双蓝牙键盘)+Macbookair 13寸低配/MacBookPro withRetina display.

推荐App:

  1. 谷歌地图
  2. Passbook+Siri
  3. chorme+ Evernote/印象笔记付费版 Dropbox/金山快盘 全平台同步
  4. 天气通:查天气;
  5. Nike+:记录跑步的距离;
  6. 空气污染指数:看看当天是否适合跑步;
  7. 挖财:记录财务信息,看看我这一个月到底花了多少钱,对于开源节流的确很有帮助;
  8. 百度地图:查地铁公交,到陌生城市查地址,而且还能离线使用,很赞;
  9. 有道词典:查单词用; 

家居产品类:

 

  1. 宜家四件套(床单、被罩、枕套)高支精梳棉纯白床单被罩+舒适的被子+荞麦皮枕芯
  2. 扫地机器人Roomba和他的妹子擦地机器人Mint地贝 自动扫地机器人(吸尘器)
  3. 家用激光打印机Hp,价格在1000以内
  4. Muji香薰加湿器/超声波香薰机
  5. 社交聚会用具:烧烤餐具,麻将桌,Wii
  6. 伊莱克斯家用滴漏式咖啡机+illy中焙咖啡豆
  7. 智能座便器——卫洗丽【最基本型号,最有用的就是马桶圈加热和温水冲洗】
  8. herman miller或okamura的椅子,或其他人体工程学椅
  9. 九阳豆浆机DJ11B-D30EC 植物奶牛 豆浆机榨汁机
  10. Brita R滤水壶
  11. 西门子全自动洗衣干衣机/海尔洗衣机(带烘干功能)/LG全自动滚筒洗衣机
  12. 宜家的衣柜尼龙挂格与裤子挂钩 尼龙衣物收纳挂箱 真空压缩袋
  13. MUJI(无印良品)的家居用品、床上用品、衣服、平底鞋
  14. 九狐的养生壶
  15. 木质SPA浴桶 Lush洗发皂氨基酸洗发水
  16. 尤伦斯卖的艺术收藏装饰品
  17. 格兰仕电压力锅(可以卸下盖子的)[改变懒人生活]
  18. 烤箱
  19. 自动洗碗机
  20. HDMI线/LED电视如越狱后的AppleTV3[改变电视机]
  21. 投影仪奥图码hd33
  22. 隔油壶
  23. 家庭必备:象牌Zojirushi暖水壶
  24. 丰盈和暖地暖垫
  25. 预约功能的全自动电器,电饭锅等

个人生活护理类:

  1. 欧乐B电动牙刷+ Waterpik 水牙线+DiamondClean杯+Clarisonic 洗脸刷+ Nuface 微电流面部紧肤器+负离子数字和吹风[用了才知道什么叫做彻底清理]
  2. 穿戴式运动监控设备: GarminForerunner 410 GPS手表Jawbone Up 2
  3. 跑步机/健身单车
  4. 睡觉套装(充气枕、眼罩、耳塞)3d眼罩 3M防噪音耳塞 护颈枕
  5. Northface Gore-Tex 冲锋衣 + 登山鞋[防水、快干、耐脏,你还需要别的特性么?]
  6. Silva席尔瓦指南针,90RMB
  7. OSIM头部按摩仪
  8. 身体磨砂膏
  9. tangle teezer 这把梳子
  10. 美利达Cross2000跨界款山地车,入门级即可
  11. 雅顿绿茶身体乳一定是那个带蜂蜜颗粒的
  12. 计数式跳绳
  13. 瑞士军刀冠军/威戈swissgear电脑包双肩背包15寸商务休闲旅行包
  14. 家居常用消毒酒精喷雾95%浓度+无比滴+金嗓子喷雾剂+曼秀雷敦药膏
  15. 暖手宝
  16. Asics GEL-CUMULUS14跑鞋[跑鞋之王,NIKE什么的都是渣渣]
  17. 吉列剃须泡清新柠檬型210G-个护健康,210克装
  18. 耐克正品NIKE Pro男子专业DRI-FIT运动训练长袖紧身衣(80%聚酯纤维+20%莱卡)
  19. Patagonia C4运动保暖内衣
  20. Moleskine本子經典硬面橫間本+lamysafari钢笔基本款 三菱的自动铅笔
  21. 24HRS的皮鞋

自制奶茶

  1. 斯里兰卡各种牌子的伯爵红茶包!
  2. 每食富肉桂糖粉:加在红茶里实在是很有意思的味道!
  3. 甜菊叶:比任何砂糖都牛逼的甜味剂
  4. YOGI的花果茶/三得利黑乌龙茶

 

 

母婴用品

  1. Lansinoh羊毛脂乳头保护霜
  2. 美德乐swing电动吸奶器
  3. 婴儿指甲剪,水温计,婴儿房温湿度计
  4. 婴儿专用电动剃头刀易剪
  5. 婴儿背带

 

请点击「这里」来观摩原帖里的海量答案!还有更多具体的细节介绍以及体验分享!

 

 

—————–EOF——————-

来自「冷折腾」,微信号:「Lengzt」

【移动】iOS 7 Beta升级方法(无需开发者帐号)

 

测试版本升级需谨慎,不排除卡顿、闪退和各种bug出现的可能,iphone 4 及以上都可以升级,虽然更新升级并不会擦除原本的数据,但还是强烈建议在升级前备份好自己的数据!

 

  1. 确保你是iphone是没有越狱的 如果越狱了的要先刷回6.1.4后再操作.
  2. 下载好iphone对应的ios固件 放在自己能找到的文件夹里
  3. 打开itunes按住键盘的shift键 点更新 找到ios7固件完成(注意,一定要点更新才不会删除你的APP和数据
  4. 刷好后无需开发者账号直接激活使用 

PS:iPhone机型很多 如果是有锁机请谨慎刷机.

 

 所有型号的固件下载地址:

iPhone 5(Model A1429 – 电信、联通、国行、港行、新加坡行、等等等等除美国加拿大 AT&T 之外全宇宙所有行)
– 百度:http://pan.baidu.com/share/link?shareid=420116897&uk=4144241008
– 迅雷:http://kuai.xunlei.com/d/uuHzDQKVnQC8eLZR4ad
– https://mega.co.nz/#!qwIGlBQL!GryQXyLOuTdwOaz2FidWrnCO748C65FPS4pOlQgJCg8

iPhone 5(Model A1428 – 仅供美国、加拿大 AT&T 版本)
– 百度:http://pan.baidu.com/share/link?shareid=487091525&uk=4144241008
– 迅雷:http://kuai.xunlei.com/d/uuHzDQINngBVe7ZRa40
– https://mega.co.nz/#!HwRW3Bqb!U_PBaVaYun-i3v1AM5e-rWpAQkYeI2Xdnxcksm_ZmT4

iPhone 4S(下面的链接的确是 4S 的并没有错,只是文件名叫做 4 而已)
– 迅雷:http://kuai.xunlei.com/d/uuHzDQJcnAD6bbZR952
– https://mega.co.nz/#!Dsw0DJqA!UUDsBw-8oJft0sOYkBZeCWM9ijofsCNm1obLlMpmV0M

iPhone 4 (GSM)
– 迅雷:http://kuai.xunlei.com/d/gg0vCgK7pwAMq7ZRc07(感谢 royying 上传)
– https://mega.co.nz/#!n15VQBDK!R8jMCW7X_Ojd_NKPShPUYEtVcC9PzaVeisFeZXq1BSg

iPhone 4 (GSM Rev A)
– https://mega.co.nz/#!S4ADnJbR!HwjgdCAG32lOe7sHnWegzCbWX4EXKCTQTUMtCYpinPM

iPhone 4 (CDMA)
– 微盘:http://vdisk.weibo.com/s/FoPw-(感谢 sidsid2 上传)
– https://mega.co.nz/#!GhYRwARb!YvRWUEVLB7BbeumyT0shQHnVphQwuVPjHk8EgFi08n8

iPod touch 5 代
– 迅雷:http://kuai.xunlei.com/d/nfcBCAJApQDFnrZRc63
– https://mega.co.nz/#!Wgwg1YAT!ZJpJCV_7pnyBbAmz54O21DK8s9xA9Vp2gHqP_N0yj3E

虽然是国外网盘,但速度极快。进入后可切换至中文页面(右上角)。
请使用 Google Chrome 下载,亲测可用。

以上链接转载自 http://ibetadownload.com/download.html

 

From : http://bbs.weiphone.com/read-htm-tid-6542935.html

—————–EOF——————-

来自「冷折腾」,微信号:「Lengzt」

 

【冷吃货】曼谷街边美食

其实曼谷街边的美食是多之又多啊,亲们只要有一个好奇的心,就能随时随地发现美食享受美味滴。千万不要用中国式的思维来对待路边摊的哦~路边的美食不会比饭店中的差的。泰国3台就有个栏目会想大家推荐些路边美食摊子的。这是个全民皆喜欢路边淘美食的国度哦~~

 

TOP  1  海南鸡饭

海南鸡饭的美味,美在鸡肉的鲜嫩,美在香喷喷米饭。曼谷很多海南鸡饭档口,除了供应正宗的油鸡饭,还有炸鸡饭,或者油鸡+炸鸡双拼饭。油鸡和炸鸡自然不必说啦,油而不腻,上面有介绍过滴。鸡肉下面盖的米饭,是各家档口秘制的重点。加入大蒜、鸡油,其他香辛料后泰国香米蒸饭。真是粒粒有滋味粒粒香喷喷,香而不腻。配着油鸡或是炸鸡,难忘的美味啊!一般档口还另外送一碗鸡骨头煮制的鸡汤。别小看这碗鸡汤呦,那可是常年不歇老火慢炖出来的鸡汤哦。油鸡剔下的鸡骨头直接被仍如汤锅,慢慢的煮,滋味很足,绝对不含味精等人工添加剂的。美美的吃饭饭,美美的喝鸡汤,几十铢吃到饱!

很多人都知道在水门的那家著名海南鸡饭档。还有个很受曼谷本地人欢迎的档口哦,就在中国大使馆旁边的小巷子里面,24小时常年不歇,到了午夜还依然灯火通明,很多曼谷人来关顾,可见其受欢迎的程度啦。

价格:普通油鸡饭配免费鸡汤40铢左右

 

TOP 2 泰式炒河粉

很多人去国内泰餐厅的必点菜之一Phat thai,就是泰式炒河粉。泰国盛产大米,米粉、米线就是当家主食啦。炒河粉的摊子遍布曼谷市内的每个角落,是晚餐宵夜的最佳选择之一。别看一道简单的炒河粉,用料是真的很用功的,配料丰富,鸡蛋、虾、豆腐干、虾干、花生、豆芽、韭菜,这是基本配料。希望更加鲜美一点的话,可以再加生蚝或双份虾。对于帝都生活的人来,标配里面的虾够大够多,足以让人泪流满面喽,再加点生蚝的话就鲜上加鲜更完美啦。这么简单的一份河粉,炒得河粉劲道不粘连,配料丰富不散乱,可不是件容易的事情哦。很多摊子的河粉都只软而不劲道,或者软塌塌的,要不就是配料丰富而且过多,少了灵魂。当一份酸酸甜甜,鲜鲜香香炒河粉,装在芭蕉叶叠成的盒子后,摆在你面前,让你吃的欲罢不能时。估计摊主一定是个年长而又严肃的中年人,炒河粉的功力那可必须是积年累月练就出来滴。碰到好吃的炒河粉摊子,就是个幸福的邂逅,哈哈!

价格:40-50铢不等

 

TOP 3 泰式汤河粉

说完炒的河粉,那就一定要再说说汤河粉了。那纯朴天然的味道,清清淡淡汤汤水水,让吃多油腻的胃非常的舒服。曼谷人夜宵的必备之选啊。河粉摊子通常都会提供,宽、中、细,3种不同“型号”的河粉,还有细鸡蛋面选择。跟大名鼎鼎的越南牛肉河粉相比,泰式汤河粉,没有牛肉汤底。但也是骨汤+草药包熬制而成,清汤汤底,而又营养丰富。那简简单单轧制的草药包,汤头的好坏就靠这一把草啦。各家秘制都不同的,还有摊主在汤中放入白萝卜,让汤底更加鲜美。食客选择配猪肉、鸡肉或者海鲜放入汤中。有汤有肉有粉,还有搭配的有神秘香气罗勒叶、爽口豆芽,天天吃都不烦。另有一种曼谷人喜欢的重口味的吃法,就是加入汤底中兑入鲜猪血,清汤顿时变成红褐色的浓汤,慢慢品尝另有一番鲜香滴。大家可以壮胆试试哦,吃过一次下次就一定还要的。

价格:30-40铢不等

 

TOP 4 猪脚饭

每次路过猪脚饭的摊子,都会不禁会被摞成“小山”一样的,软烂的猪脚吸引,飘来的阵阵香气无疑是在挑战吃货们的定力!口水流一地啊~~~别急别急,想吃,还要知道吃的规矩哦~虽然叫“猪脚饭”其实有猪脚、大肠、肘子3种不同的东东在一起炖煮的。可以根据自己爱吃的不同肉质来跟店主提要求哈。喜欢多肉,就来肘子部位的;要多筋,店主给您来猪脚的后筋;来重口味,可以要整份大肠!或者您来个双拼,店主都会满足您的需求。同时,还会附送些泰国酸菜来解腻。一份几十株,荤素搭配,不多不少吃到饱。饭后再来杯街边的果汁,生活真美好啊!

价格:50铢/份

 

 

TOP 5 各种甜水水、鲜榨果汁、奶茶、咖啡

吃吃喝喝,说完吃的,就要来点喝的东东啦~~在这个只有“热”和“更热”两个季节的国度,冰凉饮料绝对是不离手的伙伴啦。选择的种类也非常的多,加上泰国人民的创意精神,经常很多新的创意。比较“奢侈的“是鲜榨果汁,摊主边榨汁边卖,绝对的新鲜。除了常规的泰国橘子汁,最难得的是石榴汁,一瓶250ml只要50铢啊,绝对无添加!平民的咖啡、奶茶一定要喝! 15铢一大杯的冰咖啡远胜过星星哦。冰绿茶奶茶、红茶奶茶,更是女生们的最爱!最神奇的是”神童“牌的红水和绿水。这种颜色艳丽的浓缩汁,被发明了各种喝法。俺最爱的是绿水兑苏打水加冰,实在太好喝了,每天都要来一杯,怎么喝都爱喝滴!最健康的要数,鲜果+酸奶+蜂蜜的喝法了,满满的一大杯也只需要40铢左右哦,饭后来一杯解腻是最好的选择啦。

 

作者:Sunny

—————–EOF——————

来自「冷折腾」,微信号:「Lengzt」

让写博客更加简单纯粹

2013-06-06 23 00 54

 

一个人思考的时候,总觉得这个问题,要怪现在的博客产品设计得太糟糕了。我并不真的需要打开一个网页浏览器,登录一个网站,点几次鼠标,等一段Loading的时间,在一个丑陋的富文本编辑器界面中写作,还要时刻小心地保存,然后要操心Crash、备份、恢复。

 

你只是想一边听着音乐,一边敲击键盘,在写作的时候,并不想打开任何网页,不想上传,不想提交,不想编译;只要最后,文章能优雅地呈现到博客中,就可以了。这就是 www.farbox.com 的存在意义了。

 

根据 farbox.com 的作者所说,创作 farbox.com,是想解决两个问题:

  • 写作:回归纯粹的写作。在写作的时候,不打开任何网页,不上传,不提交,不编译;只要最后,文章能优雅地呈现到博客中,就可以了。
  • 照片:把照片放到电脑里,无需上传,一切就好。只要把你的照片直接放到 Dropbox 的文件夹里,不需要任何操作,就可以优雅地在网页中呈现,像这样:http://image.farbox.com/。

 

farbox.com = Dropbox + Markdown。

 

如果你还没有Dropbox帐号(不知道Dropbox为何物的请自行谷歌),

请通过此链接注册: http://db.tt/DqSBYv5X

 

 

 

请点击「这里」进入FarBox官网

 

————————————————-

来自「冷折腾」,微信号:「Lengzt」

「不折腾会死」的微信账号-「冷折腾」上线

小弟刚刚公开了微信公共账号,欢迎关注,目前有几个功能:

  • 关键词搜索(搜索本博客的历史文章)
  • 不定期推送各种可折腾的消息(APP,吃喝玩乐,金融,产品,科技等)
  • 偶尔发送乱七八糟的东西…

请搜索「Lengzt」或者扫一扫下面的二维码来关注吧!

qrcode_for_gh_0dea56916e5c_430