成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS開發——App架構之抽象協議

移動開發
App架構組最重要的一個職能就是統一 App 架構,讓業務開發同學在一套統一的架構中盡情塑造端的產品,以提高業務開發效率和保證業務使用穩定性為己任。本著這一原則,這一年來也在不斷探索各種跟 App 架構相關技能。協議是我發現最能體現 App 架構意義的一個關鍵技術,用好以及推廣好協議,能使業務開發效率倍增。

從架構設計層面,一個端,尤其是一個成熟的端,應該有自己的規范,大到頁面跳轉、服務請求,小到某個具體的業務功能比如生成訂單、取消訂單、查看訂單等。一方面,制定統一的協議后,不僅可以約束各業務線開發同學的開發行為,統一代碼的風格,還可以增強團隊同學的合作以及凝聚力,另一方面,統一開發行為后,對于增加新的功能、修復bug、查詢問題等都有很好的幫助,極大提高開發效率。

[[214533]]

App 架構組最重要的一個職能就是統一 App 架構,讓業務開發同學在一套統一的架構中盡情塑造端的產品,以提高業務開發效率和保證業務使用穩定性為己任。本著這一原則,這一年來也在不斷探索各種跟 App 架構相關技能。協議是我發現最能體現 App 架構意義的一個關鍵技術,用好以及推廣好協議,能使業務開發效率倍增。

一般來說,App 中的協議類型可以任意發散,只要可以復用的地方,你都可以用協議一言以蔽之。當然,我們都是有追求的人,應該創造一些更通用、更抽象、更值得讓大家復用的協議,舉個栗子,iOS SDK 中 url scheme 就是這樣一個典型。

iOS URL Scheme

URL Schemes是蘋果給出的用來跳轉到系統應用或者跳轉到別人的應用的一種機制,同時還可以在應用之間傳遞數據,用于實現一些特定的功能。你可以完全按照理解一個網頁的 URL 的方式來理解一個 iOS 應用的 URL。

比如微信的 url scheme

  1. weixin:// 

微信朋友圈 url scheme 格式

  1. weixin://dl/moments 

看著是不是很方便?

在其他app中,你可以像這樣就可以跳轉到微信 App 應用(如果已安裝的話)

 

  1. NSURL *url = [NSURL URLWithString:@"weixin://"]; 
  2. [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) { 
  3.           
  4. }]; 

每個應用都可以創建一個或者一些自己的 url scheme,只需要配置 info.plist 文件即可,然后通過 App 管理中心 [UIApplication sharedApplication] 即可進行 App 之間的通信。

同樣,我們將這樣的思路可以應用到其他抽象模塊中來。在每一個抽象模塊中,我們用一個協議來指定它的使用規則以及支持的功能,開放給調用方使用時,只要其遵循協議規則,使用抽象模塊提供的 api 接口,即可進行模塊的調用或者使用其提供的服務。

由此,我們得出這樣一個結論:采用協議方式抽象一個模塊,需要兩個重要組件:協議+協議管理中心。

通用協議

  1. scheme://service/actor?params=\{\"xxx\":xxx\}&origin=xxx 

在 App 架構中,頁面導航框架是非常重要的一個組件,直接決定當前 App 的頁面組織形式以及風格,好的頁面導航框架也能讓業務方開發擁有***的新頁面搭建以及頁面間跳轉體驗。從協議角度出發,我們可以這樣約定一個頁面跳轉協議:

頁面跳轉協議

 

  1. page://action?params=\{\}&origin=xxx 
  2. // 跳轉 native  頁面 
  3. page://goto?params={"page_name":"xxxx","data":{"xxx":"xxx",...},"navi_type":0|1,"anime_type":-1|0|1|2|3|4,"success_callback":"xxxxxx","failure_callback":"xxxxx"}&origin=xxx 
  4. // 跳轉 h5 頁面 
  5. page://act_web?params={"page_name":"xxxx","data":{"xxx":"xxx",...},"navi_type":0|1,"anime_type":-1|0|1|2|3|4,"success_callback":"xxxxxx","failure_callback":"xxxxx"}&origin=xxx 

Manager 需要提供的 api 包括:

 

  1. // 跳轉 native 頁面 
  2. // 跳轉 h5 頁面 

服務請求協議

 

  1. // @TODO 可繼續拆分 
  2. service://modulename/servicename?params={}&origin=xxx 

Bridge 橋接協議

 

  1. // bridge 為特定 scheme,bridgename 為bridge js庫支持的api 
  2. bridge://bridgename?module=xxx&method=xxx&args=\{\}&origin=xxx 
責任編輯:未麗燕 來源: coderanger
相關推薦

2013-07-24 16:47:23

iOS開發學習iOS協議代理傳值

2014-07-23 13:17:53

iOSUITextField

2014-07-21 14:49:35

iOSUILabel

2021-07-21 16:30:38

iOSAPP架構

2016-05-17 10:21:30

iOSAPP開發

2011-08-02 11:07:42

iOS開發 UIWebView

2017-02-15 09:25:36

iOS開發MQTT

2011-08-11 16:50:04

iOSTwitter

2013-11-21 10:36:31

iOS APP開發工具

2011-12-19 15:53:35

2017-08-31 11:08:53

iOS架構ReSwift

2013-04-11 16:08:50

iOS開發技巧積累

2013-07-29 04:51:41

iOS開發iOS開發學習file列表查看

2014-08-08 10:12:44

IRC

2013-07-25 15:15:26

iOS開發學習iOS全局變量

2013-07-25 15:19:23

iOS開發學習Xcode打包framiOS開發

2014-06-13 13:47:31

UDP

2017-07-17 15:19:10

MVVM模式iOS開發MVP

2010-08-26 09:20:22

虛擬桌面架構連接協議

2010-08-26 09:27:44

虛擬桌面架構連接協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕乱码视频32 | 久草综合在线视频 | 国产亚洲精品精品国产亚洲综合 | 天天综合久久 | 国产精品福利视频 | av男人天堂影院 | 日韩羞羞 | 久在线观看 | 久久成人精品视频 | 怡红院成人在线视频 | 亚洲视频自拍 | 国产黄色在线观看 | 一区二区三区电影网 | 高清国产午夜精品久久久久久 | 国产精品久久久久久高潮 | 精品福利视频一区二区三区 | 日韩视频一区二区 | 九九热免费视频在线观看 | 剑来高清在线观看 | 久久成人综合 | 欧美一区在线视频 | 久久精品国产亚洲夜色av网站 | 亚洲免费av一区 | av男人的天堂在线 | av国产精品毛片一区二区小说 | 欧美视频免费在线观看 | 成人做爰www免费看视频网站 | 欧美日韩亚洲系列 | 亚洲一区亚洲二区 | 成人亚洲片 | 亚洲二区在线 | 亚洲精品日韩欧美 | 大久 | 国产在线永久免费 | 欧美中文字幕 | a在线观看免费 | 欧美中文字幕在线观看 | av在线播放网址 | 碰碰视频 | www.99re| 日韩一区二区在线视频 |