《2016中國移動開發(fā)者大會》參會筆記

Overall

總的來說湃缎,2016年的綜合場(第一天上午)感覺講的一般,身邊的人吐槽也比較多蠢壹。不過相比之下嗓违,iOS場干貨就比較多了,演講者基本都是圈內(nèi)大V图贸,包括喵神蹂季,Sunny等等冕广。兩天停下來有兩個(gè)最大的感受,一是提到iOS大家很少提OC了偿洁,言必稱Swift佳窑,看來Swift趨勢勢不可擋;另一個(gè)是RN演講的比重很高父能,社區(qū)活躍度也很高神凑,看來也是時(shí)候要跟進(jìn)新技術(shù)了。
參加開發(fā)者大會一是開闊眼界何吝,二是來朝朝圣溉委,三是讓自己清楚的意識到自己跟臺上演講嘉賓的差距在哪里,回去該怎么學(xué)還怎么學(xué)去爱榕。瓣喊。。

VR的未來爆發(fā)

據(jù)估計(jì)黔酥,2020年會有20億的移動VR設(shè)備藻三,500萬的VR Game

京東的移動布局

京東的移動電商大數(shù)據(jù)價(jià)值觀:
  • 洞察: 數(shù)據(jù)包容豐富的趨勢和變化
  • 挖掘 :分析和學(xué)習(xí)趨勢,洞察變化原因
  • 決策 :將數(shù)據(jù)智能賦給客戶與供應(yīng)商
  • 開放 :分享對數(shù)據(jù)的洞察與商機(jī)給第三方
京東的移動應(yīng)用覆蓋率已經(jīng)達(dá)到了80%
京東的大數(shù)據(jù)定價(jià):

演講中跪者,京東顯然是通過大數(shù)據(jù)來進(jìn)行輔助定價(jià)棵帽,具體示意如下圖:


大數(shù)據(jù)定價(jià)

其中GMV指的是Gross Merchandise Volume,GMV=銷售額+取消訂單金額+拒收訂單金額+退貨訂單金額渣玲。GMV是流水逗概,只要你下了訂單,生成訂單號忘衍,就算了GMV

消費(fèi)者畫像

京東給了這么一個(gè)公式:精準(zhǔn)的用戶畫像+精準(zhǔn)的算法=成倍提高的效益
所謂精準(zhǔn)的用戶畫像逾苫,不是傳統(tǒng)的給用戶打靜態(tài)Tag的行為,而是根據(jù)用戶的購買行為建立起一個(gè)具體的枚钓,變化的铅搓,精準(zhǔn)的畫像。比如用戶買了母嬰用品搀捷,京東就有可能在半年之后給你推薦相應(yīng)段數(shù)的嬰兒奶粉星掰,試圖在最短的時(shí)間內(nèi)讓用戶買到最合適的商品。

React Native

跨平臺方案選型
  • Hybrid方案:Cordova性能和用戶體驗(yàn)差
  • Code轉(zhuǎn)換型方案:j2objc可移植性與可讀性都很差
  • 編譯型方案: Xamarin指煎,C#解決方案蹋偏,社區(qū)活躍度差便斥,學(xué)習(xí)成本高
  • 混合型方案:React Native至壤,社區(qū)活躍,RealTime Compiling
一種基于RN的程序架構(gòu)方法:
一種基于RN的程序架構(gòu)方法

在傳統(tǒng)MVC之上枢纠,V層演化為React Native像街,這樣就擁有了UI上的跨平臺能力黎棠;C層為引擎,鏈接通過Configure來切換UI镰绎,以及通過RPC來切換Model以及對應(yīng)能力脓斩;M完全靠SDK來做動態(tài)變化。

React Native 熱部署平臺:

一款微軟出品的熱更新平臺:codePush

React Native JS導(dǎo)航欄目前的問題
  • 隱藏導(dǎo)航欄時(shí)有閃動畴栖,體現(xiàn)在Push和Pop的時(shí)候
  • iOS和安卓樣式不統(tǒng)一
  • 動畫卡頓随静,由于在動畫過程中重新Render所致,通過延時(shí)或者InteractionManager解決
  • Native打開的RN頁面中吗讶,通過Bridge返回Native
替代RN的Navigation的方案
Native APP + RN的優(yōu)化方案
優(yōu)化方案的架構(gòu)
  • 所有功能放在一個(gè)Bundle中燎猛,使用統(tǒng)一導(dǎo)航;
  • 啟動時(shí)創(chuàng)建一個(gè)RN Root照皆,加載Bundle重绷;
  • RN中按功能添加路由;
  • 點(diǎn)擊功能時(shí)路由相應(yīng)功能膜毁;
  • 返回Native時(shí)如果路由為空清空緩存釋放內(nèi)存昭卓;
  • 運(yùn)行期間內(nèi)存泄漏檢測可能會誤報(bào),需要加白名單瘟滨;
  • 功能越來越多時(shí)Bundle越來越大候醒;
RN下的開發(fā)人員組成參考
開發(fā)人員組成參考

面向協(xié)議編程

產(chǎn)生原因:
  • 面向?qū)ο蟛⒉荒芎芎玫姆磻?yīng)客觀世界
  • Cross-Cutting Concern :(定義來自于Wikipedia)
    In aspect-oriented software development, cross-cutting concerns are aspects of a program that affect other concerns. These concerns often cannot be cleanly decomposed from the rest of the system in both the design and implementation, and can result in either scattering (code duplication), tangling (significant dependencies between systems), or both.
    (簡單來說,Cross-Cutting Concern指的是一些由于設(shè)計(jì)和實(shí)現(xiàn)的問題導(dǎo)致的在功能分解時(shí)造成的代碼冗余及函數(shù)依賴)

針對以上問題杂瘸,傳統(tǒng)解決方法分為:

  • Copy & Paste: 不推薦火焰,初級程序員的做法;
  • BaseViewController: 不推薦胧沫,會將層級變的越來越多昌简;
  • 依賴注入:一定程度上解決了這個(gè)問題,但是會增強(qiáng)了函數(shù)之間的耦合性绒怨;
  • 多繼承:OC沒有此特性纯赎,而且容易造成二義性問題;

因此推薦使用面向協(xié)議來編程南蹂。對于協(xié)議犬金,需要注意的是:

  • 協(xié)議定義
  • 提供實(shí)現(xiàn)的入口
  • 遵循協(xié)議的類型需要對其進(jìn)行實(shí)現(xiàn)
  • 協(xié)議擴(kuò)展
  • 為入口提供默認(rèn)實(shí)現(xiàn)
  • 根據(jù)入口提供額外實(shí)現(xiàn)

為什么優(yōu)先考慮面向協(xié)議來編程:
高度協(xié)議化有助于解耦,測試以及擴(kuò)展

IM通信協(xié)議分享

排名前三的Socket協(xié)議分別為
  • XMPP:協(xié)議開源六剥,可擴(kuò)展性強(qiáng)晚顷,有各種實(shí)現(xiàn),接入方便疗疟;但是冗余多该默,耗費(fèi)流量
  • MQTT:協(xié)議簡單,流量少策彤,訂閱+發(fā)送模式栓袖。比較適合于推送匣摘,并不是太適合IM
  • WebSocket:Web原生支持,有很多第三方語言實(shí)現(xiàn)裹刮∫舭瘢可以適配XMPP,MQTT捧弃。
雙向Ping Pong機(jī)制

Server通過向Client直接發(fā)數(shù)據(jù)以及通過APNS來向Client發(fā)數(shù)據(jù)赠叼,來保證數(shù)據(jù)的到達(dá)率

雙向PingPong機(jī)制
APNS的優(yōu)缺點(diǎn)
  • 優(yōu)點(diǎn):解決了iOS假在線等問題
  • 缺點(diǎn):
  • 無法保證信息的及時(shí)性违霞。
  • 無法保證信息的準(zhǔn)確性梅割。
  • 服務(wù)端壓力太大。

因此APNS不適合需要及時(shí)響應(yīng)的應(yīng)用場景葛家。

Protobuff為最優(yōu)格式選擇

不論是序列化户辞,反序列化,字節(jié)大小來講癞谒,protobuf表現(xiàn)最好


字節(jié)長度比較
移動端的性能調(diào)優(yōu)
  • 優(yōu)化重連機(jī)制
  • 精簡心跳包
  • 減少心跳次數(shù)
  • 重連冷卻(按照斐波切納數(shù)列進(jìn)行重連)在APP端進(jìn)行重連

選擇原因:

  • 省流量
  • 高效
  • 省電
  • 成熟可靠
  • 易于使用

搜狗輸入法優(yōu)化實(shí)踐

鍵盤調(diào)起速度優(yōu)化步驟
  • 懶加載底燎,也就是依賴加載;
  • 盡量不阻塞主線程弹砚,不用解釋双仍;
  • 盡量避免額外操作,不用解釋桌吃;
  • 慎用AutoLayout
  • autoLayout有簡單朱沃,易用,可讀性強(qiáng)的特點(diǎn)
  • updateConstraint的調(diào)用時(shí)機(jī)會影響程序的性能
  • 慎用NSDateFormatter茅诱,性能很差
  • 慎用 [NSStrnig sizeWithAttributes:]此方法性能很差逗物,可以考慮通過估算每個(gè)字符寬度的方法來估算整體的String長度
所有應(yīng)用組件都應(yīng)該實(shí)現(xiàn)的方法(MemoryWarning)
  • 普通應(yīng)用(UIApplicationDelegate)
    - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
  • 鍵盤應(yīng)用(KeyboardViewController)
    -(void)didReceiveMemoryWarning
  • 所有應(yīng)用都應(yīng)該實(shí)現(xiàn),以在內(nèi)存告警的時(shí)候盡量釋放無用的變量保證程序的順利運(yùn)行
內(nèi)存優(yōu)化建議
  • autorelease Pool要利用好
  • 避免循環(huán)引用
  • 讀圖方式要選擇好
  • [UIImage imageNamed:@"xxx"] 圖片會緩存
  • [UIImage imageWithContentOfFile:path] 圖片不會緩存
  • 選擇正確的緩存策略
  • 降低內(nèi)存占用峰值(自己估計(jì)瑟俭,盡量減少使用)
  • 內(nèi)存文件的映射使用(解決大文件會刷爆內(nèi)存的問題)
  • FastImageCache
  • Path
  • Mapped Memory
  • Uncompressed Image Data
  • Byte Alignment

測試

自動化測試推薦流程:
  • 打包:ShenZhen
  • 重簽名:ota-tools/ipa-sign:
    unzip spa -> remove signature -> copy mobile provision -> code sign -> zip to new ipa
    請保持環(huán)境為UTF-8
  • 安裝
  • Instruments
  • 測試報(bào)告
自動化測試建議
  • 自動化用例腳本不用太多翎卓,保證主流程即可
  • 自動化用例也不用太長,防止鏈路過長而產(chǎn)生的問題
  • 避免用例互相依賴
  • 使用異步等待
  • 避免執(zhí)行環(huán)境的差異
  • 提高用例編寫水平
第三方內(nèi)存泄露檢測工具
  • FBRetainCycleDetector
  • FBAllocationTracker
  • FBMemoryProfiler

安全

  • Key不要直接存到客戶端
  • 標(biāo)識用戶通過UIN來進(jìn)行摆寄,相對安全
  • AFNetWorking要升級到3.0版本失暴,不然HTTPS也不安全
  • AES中強(qiáng)烈建議使用AES_GCM
  • 密碼如果一定要存的話,應(yīng)當(dāng)用Bcrypt/PBKDF2方式來進(jìn)行存儲

設(shè)計(jì)場

  • 一項(xiàng)真正的設(shè)計(jì)必須有一種感覺上的漂移微饥,它必須能轉(zhuǎn)換情感逗扒,喚醒記憶,讓人尖叫欠橘,充滿反叛矩肩。讓我們感覺好像過著一種只屬于自己的生活,它必須是充滿詩意的简软。
  • 設(shè)計(jì)的ATF原則:
  • Art:藝術(shù)蛮拔,美學(xué)
  • Tech:技術(shù)革新
  • Fun:充滿樂趣

各種工具推薦

  • 各種有用的越獄工具
  • openSSH 是ssh的開源實(shí)現(xiàn),一種保證遠(yuǎn)程登錄到系統(tǒng)的協(xié)議
  • IPA Installer Console 通過命令行方式安裝痹升,卸載應(yīng)用
  • Simulate Touch 模擬點(diǎn)擊建炫,滑動事件
  • Simulate Key Events 模擬發(fā)送物理按鍵事件的插件
  • iOS下Crash日志的收集
  • Crash Reporter
  • ITC
  • Bugly
  • Crashlytics
  • 友盟等
  • iOS下崩潰日志解析
  • symboliticrash
  • xcrun atos
  • dwarfdump
  • CLI工具:shenzhen
    shenzhen
  • iOS 自動化測試工具:ui-auto-monkey iOS上的uitest工具
  • 自動化測試平臺: appium
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市疼蛾,隨后出現(xiàn)的幾起案子肛跌,更是在濱河造成了極大的恐慌,老刑警劉巖察郁,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衍慎,死亡現(xiàn)場離奇詭異,居然都是意外死亡皮钠,警方通過查閱死者的電腦和手機(jī)稳捆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來麦轰,“玉大人乔夯,你說我怎么就攤上這事】钋郑” “怎么了末荐?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長新锈。 經(jīng)常有香客問我甲脏,道長,這世上最難降的妖魔是什么妹笆? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任块请,我火速辦了婚禮,結(jié)果婚禮上拳缠,老公的妹妹穿的比我還像新娘负乡。我一直安慰自己,他們只是感情好脊凰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布抖棘。 她就那樣靜靜地躺著,像睡著了一般狸涌。 火紅的嫁衣襯著肌膚如雪切省。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天帕胆,我揣著相機(jī)與錄音朝捆,去河邊找鬼。 笑死懒豹,一個(gè)胖子當(dāng)著我的面吹牛芙盘,可吹牛的內(nèi)容都是我干的驯用。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼儒老,長吁一口氣:“原來是場噩夢啊……” “哼蝴乔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驮樊,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤薇正,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后囚衔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挖腰,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年练湿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了猴仑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肥哎,死狀恐怖宁脊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贤姆,我是刑警寧澤榆苞,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站霞捡,受9級特大地震影響坐漏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碧信,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一赊琳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧砰碴,春花似錦躏筏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至猖辫,卻和暖如春酥泞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背啃憎。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工芝囤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓悯姊,卻偏偏與公主長得像羡藐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子悯许,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容