自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS開發(fā)——App架構(gòu)之抽象協(xié)議

移動開發(fā)
App架構(gòu)組最重要的一個職能就是統(tǒng)一 App 架構(gòu),讓業(yè)務(wù)開發(fā)同學(xué)在一套統(tǒng)一的架構(gòu)中盡情塑造端的產(chǎn)品,以提高業(yè)務(wù)開發(fā)效率和保證業(yè)務(wù)使用穩(wěn)定性為己任。本著這一原則,這一年來也在不斷探索各種跟 App 架構(gòu)相關(guān)技能。協(xié)議是我發(fā)現(xiàn)最能體現(xiàn) App 架構(gòu)意義的一個關(guān)鍵技術(shù),用好以及推廣好協(xié)議,能使業(yè)務(wù)開發(fā)效率倍增。

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

[[214533]]

App 架構(gòu)組最重要的一個職能就是統(tǒng)一 App 架構(gòu),讓業(yè)務(wù)開發(fā)同學(xué)在一套統(tǒng)一的架構(gòu)中盡情塑造端的產(chǎn)品,以提高業(yè)務(wù)開發(fā)效率和保證業(yè)務(wù)使用穩(wěn)定性為己任。本著這一原則,這一年來也在不斷探索各種跟 App 架構(gòu)相關(guān)技能。協(xié)議是我發(fā)現(xiàn)最能體現(xiàn) App 架構(gòu)意義的一個關(guān)鍵技術(shù),用好以及推廣好協(xié)議,能使業(yè)務(wù)開發(fā)效率倍增。

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

iOS URL Scheme

URL Schemes是蘋果給出的用來跳轉(zhuǎn)到系統(tǒng)應(yīng)用或者跳轉(zhuǎn)到別人的應(yīng)用的一種機制,同時還可以在應(yīng)用之間傳遞數(shù)據(jù),用于實現(xiàn)一些特定的功能。你可以完全按照理解一個網(wǎng)頁的 URL 的方式來理解一個 iOS 應(yīng)用的 URL。

比如微信的 url scheme

  1. weixin:// 

微信朋友圈 url scheme 格式

  1. weixin://dl/moments 

看著是不是很方便?

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

 

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

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

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

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

通用協(xié)議

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

在 App 架構(gòu)中,頁面導(dǎo)航框架是非常重要的一個組件,直接決定當前 App 的頁面組織形式以及風格,好的頁面導(dǎo)航框架也能讓業(yè)務(wù)方開發(fā)擁有***的新頁面搭建以及頁面間跳轉(zhuǎn)體驗。從協(xié)議角度出發(fā),我們可以這樣約定一個頁面跳轉(zhuǎn)協(xié)議:

頁面跳轉(zhuǎn)協(xié)議

 

  1. page://action?params=\{\}&origin=xxx 
  2. // 跳轉(zhuǎn) 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. // 跳轉(zhuǎn) 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. // 跳轉(zhuǎn) native 頁面 
  2. // 跳轉(zhuǎn) h5 頁面 

服務(wù)請求協(xié)議

 

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

Bridge 橋接協(xié)議

 

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

2013-07-24 16:47:23

iOS開發(fā)學(xué)習(xí)iOS協(xié)議代理傳值

2014-07-21 14:49:35

iOSUILabel

2014-07-23 13:17:53

iOSUITextField

2021-07-21 16:30:38

iOSAPP架構(gòu)

2016-05-17 10:21:30

iOSAPP開發(fā)

2017-02-15 09:25:36

iOS開發(fā)MQTT

2011-08-02 11:07:42

iOS開發(fā) UIWebView

2011-08-11 16:50:04

iOSTwitter

2013-11-21 10:36:31

iOS APP開發(fā)工具

2011-12-19 15:53:35

2017-08-31 11:08:53

iOS架構(gòu)ReSwift

2014-08-08 10:12:44

IRC

2013-07-25 15:15:26

iOS開發(fā)學(xué)習(xí)iOS全局變量

2013-07-25 15:19:23

iOS開發(fā)學(xué)習(xí)Xcode打包framiOS開發(fā)

2013-04-11 16:08:50

iOS開發(fā)技巧積累

2013-07-29 04:51:41

iOS開發(fā)iOS開發(fā)學(xué)習(xí)file列表查看

2014-06-13 13:47:31

UDP

2017-07-17 15:19:10

MVVM模式iOS開發(fā)MVP

2010-08-26 09:20:22

虛擬桌面架構(gòu)連接協(xié)議

2010-08-26 09:27:44

虛擬桌面架構(gòu)連接協(xié)議
點贊
收藏

51CTO技術(shù)棧公眾號