從ios到小程序開發(fā)

1.序言

這篇文章獻給那些準(zhǔn)備從其他語言開發(fā)轉(zhuǎn)到小程序開發(fā)的的程序員。程序員是個需要終身學(xué)習(xí)的職業(yè),技術(shù)的更新迭代,以及市場和公司業(yè)務(wù)的變化都需要調(diào)整自己的技術(shù)方向來與之適應(yīng)。本人這么多年也經(jīng)過多次的技術(shù)轉(zhuǎn)型變化架忌,從最開始用c# sqlserver javascript 開發(fā)web系統(tǒng)和網(wǎng)站,后來隨著移動互聯(lián)網(wǎng)時代的來臨我衬, 學(xué)習(xí)objective-c c++轉(zhuǎn)到ios移動端的開發(fā)叹放,曾今有一段時間去學(xué)習(xí)cocos2d、 opengl es挠羔、 unity3d 差點轉(zhuǎn)型去做游戲井仰,如今的AI深度學(xué)習(xí)在NLP 和 視覺上取得很大的突破,業(yè)余時間也在學(xué)習(xí)python 和 相關(guān)方面的數(shù)學(xué)破加、框架俱恶、作為興趣研究這一領(lǐng)域,程序員就是一個一直在折騰自己的職業(yè),只有在不影響本職工作下不斷學(xué)習(xí)才能適應(yīng)這個時代的變化『鲜牵現(xiàn)在微信小程序的大熱了罪,借助微信龐大社交能力來引流獲客、開發(fā)成本低聪全、以及不需要安裝等等一些優(yōu)點泊藕, 很多app都不錯過這個流量入口開發(fā)了小程序版。

2.小程序開發(fā)與ios開發(fā)比較

同為一種客戶端难礼,首先來說微信小程序的api 框架設(shè)計還是不錯的娃圆,上手很容易,看2遍api 下幾個demo看看別人的代碼鹤竭,基本就能開始做項目了,當(dāng)然對于那些有前端經(jīng)驗的來說就更簡單了景醇,對于非前端比如ios android 轉(zhuǎn)過來寫小程序臀稚,會比較陌生的是css,不過問題也不大三痰,百度一下吧寺,問問同事很快就能學(xué)會了。從一個高級面向?qū)ο笳Z言轉(zhuǎn)到腳本語言剛開始還是會有些不適應(yīng)的散劫。

1.ios上自帶的很好用的觀察者模式通知稚机,kvo。在小程序上需要自己去設(shè)計實現(xiàn)获搏。首先介紹一下這個觀察者模式赖条,舉個栗子,比如ios的通知常熙,你的頁面A纬乍、B、C同時訂閱一個通知裸卫,你在controll層或者其他頁面執(zhí)行了業(yè)務(wù)操作仿贬,需要更新這些頁面的某些值或刷新一些ui顯示,那這時候只需要發(fā)送一個通知墓贿,傳遞一個值茧泪,訂閱的頁面收到通知就能做出相應(yīng)的修改,比如小程序里Tabbar的幾個頁面想在c頁面修改了值聋袋,更新a頁面的某個ui顯示队伟,有了觀察者模式就不需要用全局變量來控制交互了,還有組件幽勒,多層組件之間互相需要傳遞信息更新ui等操作都會很方便缰泡。這里我說下ios里觀察者的設(shè)計思路,還沒來得及在小程序中實現(xiàn),今后的文章中我會把實現(xiàn)教程發(fā)出來棘钞,首先觀察者用單例模式建立一個觀察中心缠借,訂閱者需要把對象本身的指針引用 、一個訂閱名稱宜猜、一個通知執(zhí)行的函數(shù)閉包泼返,發(fā)送給訂閱中心,訂閱中心收到相應(yīng)的訂閱名稱需要update的時候姨拥,就可以根據(jù)訂閱名給訂閱者發(fā)送通知了

2.ios上還有一個很好的優(yōu)化思路我覺得值得借鑒绅喉,當(dāng)初iphone4? 1Ghz 512內(nèi)存 比安卓2G 4G 雙核 4核還流暢,一個很重要的原因就是得益于系統(tǒng)的優(yōu)化叫乌,其中最主要的思想就是只渲染當(dāng)前顯示的內(nèi)容柴罐,回收那些用戶看不到的,比如一個很長的列表憨奸,列表每一行稱為一個cell,每次只渲染屏幕能看得到的cell和即將顯示的1革屠、2個cell,ios的渲染分為前幀緩存和后幀緩存排宰,后幀緩存做計算似芝,計算完成渲染好了,前后幀緩存交互位置板甘,后幀變前幀顯示党瓮,前幀到后幀計算新的渲染。程序不同但是思路是通用的盐类,很多游戲引擎都是如此寞奸,只渲染一個視錐截面體內(nèi)的頂點,光照在跳,紋理蝇闭,場景,用矩陣來控制復(fù)雜的變換硬毕, 小程序要實現(xiàn)復(fù)雜動畫的時候可以借鑒呻引。


3.小程序開發(fā)模板消息的使用

小程序不允許像app那樣自由給用戶推送消息,只能通過模板消息來實現(xiàn)消息的通知吐咳,這個模板消息在微信中叫服務(wù)通知逻悠,界面大概長這樣


整個推送流程如下圖:


我來解釋下這個流程:微信默認(rèn)只能發(fā)送支付行為的通知,我們想實現(xiàn)自定義的模板消息需要在我們的小程序端收集formid(formid就是一串加密串),保存到服務(wù)端韭脊,服務(wù)端每次要發(fā)送通知的時候童谒,就會消耗一個formid。對于客戶端要做的就是把頁面上用戶會經(jīng)常點到的按鈕換成微信的buttion 用form包含沪羔。

<form bindsubmit="formSubmit" report-submit="{{true}}" >

<button? data-type='click' formType="submit" class="formBtn baby-babyTopBtn flex-center" bindtap='clickToUrl' >

</from>

buttion 主要是formType="submit" 這個屬性饥伊,要設(shè)置

form 標(biāo)簽 report-submit="{{true}}" 這個屬性不能漏了

form 表單設(shè)置?bindsubmit="formSubmit"? 提交表單的方法,然后在js文件中定義該方法,

點擊一次可以獲得一個formid

//提交 formid給服務(wù)端

? formSubmit: function (e) {

? ? console.log('獲得formid:', e.detail.formId);

? ? var formid = e.detail.formId;

? ? formIdManage.submitFormidToService(formid);

? },

象浑,把這個按鈕樣式修改為你頁面的樣子

比如

formid 有個坑需要注意:

如果你的小程序有開發(fā)版和體驗版,對應(yīng)的服務(wù)端是統(tǒng)一的琅豆,但是收集formid的時候來自不同的版本愉豺,當(dāng)用戶收到消息,點擊消息打開的會是formid 收集到的那個版本茫因,舉個栗子:比如我們在早上9點發(fā)布了一個v1版本蚪拦,假設(shè)服務(wù)端保存10個formid,數(shù)據(jù)庫目前的10個formid都是來自v1 版本收集的,這時候發(fā)現(xiàn)一個通知跳轉(zhuǎn)進去有問題冻押,我們修改了代碼驰贷,發(fā)布一個V2版,如果從之前的服務(wù)通知點進去或者你從服務(wù)端新發(fā)了一條通知洛巢,肯定跳到的還是v1版本的小程序括袒,這時候你怎么測試都是還有問題的,因為跳轉(zhuǎn)的還是舊版本稿茉。這時候就需要清除服務(wù)端數(shù)據(jù)庫的舊的formid,1讓服務(wù)端直接給你刪除锹锰,2因為服務(wù)端保存formid也是隊列形式先進先出的原則,所以你可以在你的新版上收集formid的地方去點10次狈邑,點一次formid變一次城须,就是一個新的蚤认,保存到服務(wù)端米苹,把舊的formid替換掉,然后再發(fā)一次通知砰琢,這時候跳轉(zhuǎn)的才是你最新的版本蘸嘶。


4.小程序的一些比較坑的限制

1.本地存儲限制10M ,陪汽,就是你想做一些下載緩存保存下臨時文件不能耐超過10m训唱,這個很好理解不多做解釋

2.在IOS不支持虛擬支付≈吭可能是因為蘋果對虛擬商品的收費需要抽成况增,微信無法對接和審核這些交易,所以干脆不支持训挡,虛擬商品比如一些知識付費澳骤,游戲的交易等等。不過是有變通解決方案的澜薄,就是利用客服消息为肮,小程序?qū)涌头ⅲ缓筚徺I的時候客服消息會發(fā)送一條購買的鏈接給用戶肤京,用戶點擊這個購買鏈接就可以支付颊艳,其實就是躲開蘋果的審查就行了

3.整個開發(fā)包限制4M,包括代碼、圖片資源等,圖片可以存服務(wù)端棋枕,不過網(wǎng)絡(luò)差的時候體驗可能會差一點白修,代碼省著寫吧,顧名思義“小程序”

4.通過 wx. navigateTo 推入后臺的頁面最多10層戒悠,超過會無法打開新頁面

目前發(fā)現(xiàn)這些吧熬荆,還有一些運營上的坑,比如你想做一些通過分享轉(zhuǎn)發(fā)來推廣绸狐,然后解鎖某些功能這是不允許的卤恳,涉嫌“誘導(dǎo)分享”微信直接封殺,想想有點可怕寒矿,生殺大權(quán)微信說了算



5. 小程序適合做哪些突琳?不適合做哪些?

首先不得不說大部分app都是可以用app來實現(xiàn)或者實現(xiàn)核心功能的符相,比如 共享單車拆融、餓了么、滴滴打車啊终、愛奇藝镜豹,今日頭條 等。 還有對于那些移動互聯(lián)網(wǎng)產(chǎn)品不是核心產(chǎn)品蓝牲,但是需要一個移動端來形成閉環(huán)做一些“售后服務(wù)“式的程序?趟脂,可以節(jié)省成本只做小程序。 那哪些app是不適合或者說小程序目前無法實現(xiàn)的呢例衍?

1昔期、需要大量本地緩存的app,比如QQ音樂這種音樂類的app佛玄,由于小程序還是依附在微信這個 app上來實現(xiàn)的硼一,本質(zhì)上微信也是給每個小程序分配一定沙盒空間(小程序存儲限制10m以內(nèi)),如果不做這個限制梦抢,那每個小程序都大量存儲般贼,要管理這些小程序的緩存也是很麻煩的,那微信的存儲也就是用戶收集的存儲可能很快就滿了奥吩。

2哼蛆、需要用到一些比較底層技術(shù)的app小程序目前還無能為力,比如像抖音這種需要對視頻進行編輯 合成 一些app?

3圈驼、一些先進新技術(shù)無法在上面使用人芽,比如 IOS android 都有推出相應(yīng)的一些在視覺 AR 和 深度學(xué)習(xí)方面應(yīng)用的庫? 。

6.小程序整體看法绩脆?

目前市面上很多app都有做一個對應(yīng)的小程序版萤厅,橄抹。互聯(lián)網(wǎng)以app為核心的產(chǎn)品大公司的app都只把一些核心功能簡化做一個小程序版本惕味,我想他們還是想把核心渠道把握在自己手里楼誓,不能把雞蛋放一個籃子里的意思吧,畢竟小程序? ios? android 都是一個入口名挥。做小程序是一個互利共贏的模式疟羹,對于公司來說多來一個獲客渠道,對于微信來說禀倔,微信就是一個超級app,功能“無所不能”榄融,同時也帶來一個問題,小程序入口之爭以后將來很激烈救湖,任何一個新鮮的熱點都將帶來紅利期愧杯,我們也得警惕紅利消失后,藍海的競爭是非常劇烈的鞋既。馬化騰曾說:“小程序并不是想取代App力九,而是降低App的用戶流失率”,張小龍為什么把小程序的入口設(shè)置那么深邑闺,不明顯跌前,我想也是這個意思。個人認(rèn)為小程序? ios? android 都是一道菜陡舅,誰都不能當(dāng)主食來吃抵乓,但是多了一道菜用戶多了種口味。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹭沛,一起剝皮案震驚了整個濱河市臂寝,隨后出現(xiàn)的幾起案子章鲤,更是在濱河造成了極大的恐慌摊灭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件败徊,死亡現(xiàn)場離奇詭異帚呼,居然都是意外死亡,警方通過查閱死者的電腦和手機皱蹦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沪哺,“玉大人,你說我怎么就攤上這事辜妓】萃荆” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵酪夷,是天一觀的道長。 經(jīng)常有香客問我晚岭,道長,這世上最難降的妖魔是什么坦报? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任库说,我火速辦了婚禮片择,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘构回。我一直安慰自己,他們只是感情好纤掸,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布脐供。 她就那樣靜靜地躺著借跪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掏愁。 梳的紋絲不亂的頭發(fā)上歇由,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音果港,去河邊找鬼沦泌。 笑死,一個胖子當(dāng)著我的面吹牛辛掠,可吹牛的內(nèi)容都是我干的谢谦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼萝衩,長吁一口氣:“原來是場噩夢啊……” “哼回挽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起猩谊,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤千劈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后牌捷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墙牌,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡袁梗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了憔古。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遮怜。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鸿市,靈堂內(nèi)的尸體忽然破棺而出锯梁,到底是詐尸還是另有隱情,我是刑警寧澤焰情,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布陌凳,位于F島的核電站,受9級特大地震影響内舟,放射性物質(zhì)發(fā)生泄漏合敦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一验游、第九天 我趴在偏房一處隱蔽的房頂上張望充岛。 院中可真熱鬧,春花似錦耕蝉、人聲如沸崔梗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒜魄。三九已至,卻和暖如春场躯,著一層夾襖步出監(jiān)牢的瞬間谈为,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工踢关, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伞鲫,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓耘成,卻偏偏與公主長得像榔昔,于是被迫代替她去往敵國和親驹闰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評論 25 707
  • 用到的組件 1、通過CocoaPods安裝 2屹培、第三方類庫安裝 3怔檩、第三方服務(wù) 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,619評論 1 180
  • 嗨~蓄诽!大家好,我是沐愛凈心小編~玲瓏 〖 眾生是佛 〗 有佛心 —— 看人人皆佛 有佛愿 —— 為人人付出 有佛緣...
    四無量心文化玲瓏閱讀 450評論 0 1
  • 1 果子的男友劈了腿乙埃,果子就失戀了锯岖。 失戀后的果子痛哭流涕,兩眼腫得像核桃出吹。她對自己的慘樣來了個自拍,把圖片發(fā)到了...
    眼萌萌的新世界閱讀 292評論 1 1
  • 最近在得到訂閱了吳伯凡的認(rèn)知方法論鸠珠,每次學(xué)習(xí)的時候及時記筆記,學(xué)完以后留言跳芳,關(guān)于認(rèn)知盲維的留言還榮幸被精選。 剛學(xué)...
    Joanna_喬閱讀 661評論 12 2