由蘋果的4種版本想到的
根據渠道(企業和蘋果市場)和模式(Debug
和Release
)兩個維度組合,可以有4
種不同的版本組合。
1. AppStore
渠道Debug
模式
這是最常用的模式,一般就是所謂的開發版
用開發證照
測試手機的
UUID
需要上傳蘋果網站可以用
XCode
連線測試機除錯,設定斷點等可以用
iTools
等工具在測試機上安裝沒有註冊
UUID
的手機不能用
2. AppStore
渠道Release
模式
這是通常所說的產線版本
用釋出證照
不能用
XCode
除錯,不能設定斷點不過可以通過
XCode
安裝。執行時會閃出來不能用
iTools
等工具在手機上安裝只能從
AppStore
下載安裝
3. 企業渠道Debug
模式
299美元/年
的賬號用開發證照
測試手機的
UUID
需要上傳蘋果網站可以用
XCode
連線測試機除錯,設定斷點等可以用
iTools
等工具在測試機上安裝沒有註冊
UUID
的手機不能用是企業版的“開發版”
與普通的開發版
bundle id
不一樣,相當於不同的應用。這個模式也是給開發人員用的
4. 企業渠道Release
模式
這是通常所說的“企業版”、“內測版”、“搶鮮版”
用釋出證照
不能用
XCode
除錯,不能設定斷點不過可以通過
XCode
安裝。執行時會閃出來能用
iTools
等工具在手機上安裝,手機不需要註冊UUID
也可以放在企業內網,下載安裝
不能上傳
AppStore
關於友盟統計
一開始,友盟統計的
AppKey
是跟bundle id
相關的;這樣的話,引入企業版就要申請新的AppKey
估計企業版用於內測比較多,除了
bundle id
不一樣,其他功能跟正式版都一樣,那麼把bundle id
作為區分條件就不合適當前的友盟統計的
AppKey
跟bundle id
無關;這樣的話可以自己決定是否需要新建AppKey
。
簡單處理就不要新增了,跟正式版用同一個;
如果要區分渠道:正式的還是內測的,那麼就新建一個。
關於分享
新浪微博分享,一個
AppKey
下面可以掛最多4
個bundle id
,所以可以不新增。微信分享,一個
AppKey
可以掛2
個bundle id
,另外一個的名字叫測試bundle id
。看來是專門用來拿企業版當內測版的QQ
分享,有AppKey
和AppID
兩個引數,不知道為什麼這麼設計。從網站介紹來看,AppID
好像跟bundle id
有關。經過實際試驗,其實他的處理方式和友盟統計一樣:AppID
和bundle id
無關小結:微博,
QQ
,微信這三個分享,都可以做到企業版和正式版用相同的AppKey
,可以簡單地把企業版當做“內測版”。
當然,如果要精細化管理,區分資料來源,那麼用不同的AppKey
來做也是可以的。只是模式太多,版本太多,管理上面要多花點心思。
關於極光推送
這個沒有辦法,需要上傳推送證照。所以AppKey
跟bundle id
是強相關的。這種相關是蘋果的證照生成方式決定的,在可預期的未來也很難改變。
企業版和正式版,是完全不同的應用,雖然功能是完全一樣的。
需要幾個版本?
開發版:(
AppStore Debug
模式)開發和測試使用,測試負責維護伺服器資料。開發可以用工具造資料,比如Charles
;也可以在本地自己寫測試資料,只是不要忘了到時候刪除測試程式碼。建議的方式還是測試和開發合作,由測試提供核心案例資料,開發和測試標準統一。內測版:(
企業賬號 Release
模式)一般有兩種用法:(1)測試維護,用來測試和內部驗收。(2)運營維護,真正的內測版,伺服器環境和正式版本一致,但是獨立的伺服器,和正式環境隔離。稽核版:(
AppStore Release
模式)這個版本專門給蘋果稽核用。伺服器環境和正式版本一致,但是獨立的伺服器,並且只是1
個或者2
個測試賬號,(使用者數最好不要超過10
個),註冊,簡訊驗證碼之類的流程都不要產生。並且,面對稽核,有些特殊的要求,比如IPv6
伺服器等等。同時,蘋果稽核通過之後,不能自動上架,要手動上架。伺服器的開關切換放在後臺,手動上架前要把伺服器地址切換到正式的。正式版:(
AppStore Release
模式)。這是“產線版”,基本上都是有的。
大前端趨勢
JavaScript
有一統江湖的跡象,iOS、Android
開發都準備轉JavaScript
前端開發,至少思想上需要有這樣的趨勢。facebook
的React Native
; 阿里的weex
,Google
的PWA
,這些大公司都在跟蘋果爭奪開發者。iOS
開發者地位下降,需求降低,薪資走低,蘋果的影響力控制力降低,這些都是正在發生的事情。
庫克比賈伯斯差的不是一點點,從iOS
開發者的生存狀態就可以看出來。PC 前端:主要是瀏覽器的網站
H5 前端:微信小程式,支付寶生活號,微信公眾號,
App
中的活動,也可以嘗試一下Google
的PWA
App開發:
iOS、Android
元件開發,這些還是原生的。facebook
的React Native
, 阿里的weex
選擇一個。以前用H5
寫的活動頁面,也可以用weex
(或者React Native
)來實現。閘道器開發:大前端裡面的後臺,後端系統的前端介面層。採用
Node.js
來做,也是JavaScript
。這一層的價值是“大前端”和“大後端”之間的介面層。與後端,是純的“資料介面”;這一層主要是負責對各端資料格式做適配(比如瀏覽器的換行是<br />
,原生的換行是\n
)。
建議的流程
改進點:一般都是後臺系統準備好了,在提供資料給前端聯調,導致前鬆後緊,為上線加班。現在將整個流程分為內部發布,內部試用,蘋果稽核,正式上線4個階段,減少無意義的加班。
內部發布:在開發分支上開發新特性,
develop
,資料由“閘道器開發”提供。能接實際後臺的就接上,比如使用者系統。後臺提供不了的,那麼就由測試根據核心測試案例構造一些,直接以url
為key
,value
就是前端需要的json
,直接放在“快取資料庫”中。保證各端都是可用的產品,沒有本地寫死的Demo
資料。開發測試完成之後,就可以內部發布,將版本轉移到釋出分支。格式為alpha-年年月月日日
。產品部門可以驗收,試用,看看是否符合設計,完成後就可以進入下一個開發週期。一個週期建議4
周(1
周理解需求和方案設計,2
周開發測試,1
周和產品部分交流合作,並未下個研發週期做準備)。當然,採用2周的開發週期也是可以的,只是要求部門間配合要做好。內部試用:這個要看後臺的進度。那些由“閘道器開發”提供的臨時
json
資料都接上真正的後臺資料,再經過測試驗證,就可以釋出“內測版”。這個內測版最好使用企業版賬號的Release
模式。這個階段主要是後臺開發的實現以及“閘道器開發”介面的調整。前端方面,只要將某個合適的alpha-年年月月日日
轉以為beta-年年月月日日
就可以了。當然,由於接上真正的後臺,可能會導致前端的調整。並且這段時間也會發現新的bug
,只需要直接在beta-年年月月日日
這個分支上修改。至於修改是否同步到develop
分支,要根據具體情況而定。
“內部試用版”由於採用了企業版賬號,就比較靈活,可以直接放在自己的網站上(需要支援https),讓相關人員下載試用。這個版本的伺服器獨立,各方面和真實伺服器一致,主要由運營負責。一些活動,一些推廣的方案,可以內部先試用一下,看看效果,及時調整。試用的時間長短,是否正式推向市場,這裡還有討論和調整的機會。蘋果稽核:經過內部試用,終於決定上線了。蘋果稽核與正式使用的場景還是有很大差異的。前端的程式碼是一樣的,從某個
beta-年年月月日日
轉到release-年年月月日日
就可以了。伺服器要單獨提供一個,配置和正式的一樣,不過要為稽核做一些特殊處理。比如支援IPv6
,提供測試賬號,不能出現Android
字樣等等。為了滿足蘋果稽核要求,可能會需要做一些修改,直接在release-年年月月日日
分支上操作就可以了。至於是否將修改同步到develop
分支,要根據具體情況而定。正式上線:經過等待和必要的修改,蘋果稽核通過了。(1)運營或者運維登入自己的後臺,將伺服器從蘋果稽核伺服器切換到正式伺服器。如果使用者量大,或者考慮穩定性,這裡可以引入“灰度釋出”,逐步放開使用者量。(2)登入蘋果開發者網站,手動上架產品。
將上架產品對應release-年年月月日日
,合併到master
分支。如果由"灰度釋出"機制,需要等使用者全量放開才能合併。這段時間如果發現bug需要修改,直接在這個release-年年月月日日
分支上操作。這裡的修改是否合併到develop
分支,需要根據具體情況而定。
合併到master
分支,意味著一個完整週期走完了。master
分支和穩定的正式版本保持一致。
master
分支和develop
分支是必須的,不可刪除,許可權要特殊控制。alpha/beta/release-年年月月日日
都屬於中間輔助分支,保留一段時間後,比如半年,可以刪除。當然,都留著也是好的,每個過程都有里程碑標誌,方便追溯。
一開始,要錯開步驟,需要一點啟動時間,看起來要慢一點。完整執行起來之後,各個過程是完全獨立的,並且各自負責的部門主體也不一樣,是完全可以並行的,一點也不慢。
這裡的本質是前端能夠提供一個最小可用版本,按照自己的節奏發展,不需要乾等後臺資料。(依賴後臺資料的後果:前面沒法做,後面累成狗,加班上線後還要解線上bug,還有臨時的需求變更.... )。
核心優勢1:技術和產品合作,倒逼運營養成提前規劃的習慣。反問:2周前提出,2周後就上線,這樣匆忙能作出一個好的活動嗎?風險能控制嗎?阿里的雙十一會這麼做嗎?
核心優勢2:方便領導審批。一份word文件就讓領導放成千上百的資金,壓力大嗎?如果領導能夠看到可用的產品(alpha版本),是不是審批時可以簡單點?
核心優勢3:風險提前發現。推出給終端使用者之前,先在公司內部試用一段時間(beta版),就算一週或者兩三天也比沒有強,是不是更能控制風險,對使用者更加負責?這個是不是比光靠測試把控產品質量更靠譜一點?
核心優勢4:更多試錯的機會。運營策劃一個活動之後,可以和產品和技術商量,大家覺得可行,就可以先開發出一個版本看看效果(alpha版),不需要等領導審批之後再動。有實際可用的產品,領導審批也更方便,也更容易過。(alpha版)不涉及後臺開發,就算廢掉,成本也不高。試錯機會多了,出好產品的概率會高一點。
核心優勢5:更快的迭代速度。不用等後臺實現,迭代版本速度就可以加快。前端和產品可以更緊密合作,加快產品演進速度。到使用者手裡的版本,在公司內部可能已經更新了三四個版本了。至少不會出現“最近後臺任務比較重,前端任務比較少,只能乾等著的情況。”
組織架構
技術架構和流程,需要相應的組織架構來支援。組織架構,還是採用傳統的分層模式,這個穩定,有歸屬感。而具體做事的時候,採用4~10人的小團隊模式,這個靈活,以團隊目標為主,防止個人英雄主義。
產品一開始人少,可能就1~2個,可以先掛在技術下面。並且和客戶端團隊走得近,對以後的小團隊模式有幫助。發展壯大之後,一般會獨立成一個部門。形成產品,技術,運營的三角關係。
“Node.js閘道器”和“客戶端資料服務”這兩個是客戶端和後端的介面,也是將兩者分離的交接點,是兩位負責人最需要關心的地方。一方面,統一出口,前後端隔離;另一方面,等使用者量大起來之後,要注意單點風險。所以這兩個模組,要定義需要做什麼,更要定義不做什麼。公共部分要做,具體實現儘量甩出去
CTO應該是純管理,怎麼和CEO配合好事首要問題。當然,技術方向也要把控。
客戶端負責人和後端負責人,一般是前後端的架構師兼任。屬於重要的中層。以流程管理和架構技術為主,跟緊發展潮流,同時也應該花30%左右的時間做技術實踐,保持熟練度。
測試和運維屬於公共服務,可以單獨出來
iOS
和Android
,面對的是兩種手機客戶端。可以先各找一個,當然也可以先發展一個,等穩定了再上另外一個。介面和互動,兩個端也不需要強調一致。兩種手機發展理念是不一樣的。H5
,可以是App
中的WebView
頁面,也可以是微信小程式,支付寶生活號等等。根據需要來吧。Node.js
是後臺技術,但是放在客戶端,主要為多端資料展示做資料適配等工作。也可以做一下公共邏輯,比如日誌,加解密,統計,以及其他公共業務邏輯。和具體客戶端無關的邏輯放在這裡,只要實現一遍,各種端都能受益。另外,這個主動權掌控在自己手中,不受客戶端是否升級影響,也不會受限制於蘋果稽核機制。更重要的是,客戶端一般處理單頁面單使用者邏輯,而這裡,則不受這兩點限制,發揮空間很大。另外,這裡雖然用後臺的技術,但是要有客戶端的思維,為客戶端開發閉環做好服務。現在JavaScript
發展勢頭很猛,在這裡可以很好地發揮一下。Node.js
閘道器(資料消費者)和Java
資料服務(資料生產者)之間,是純粹的資料資訊通訊,不要考慮各種端的差異。比如時間戳,只要一個long
資料就可以,不需要考慮是年月日還是時分秒等具體表現形式。這裡基本不需要“文藝青年”的參與,純粹是技術內部“鳥語”。至於是否要引入
React Native,weex
等,看需要吧。個人認為是不需要。現在蘋果的稽核已經很快了。把隨心所欲升級當做需求是耍流氓。另外,多端一致,全棧工程師,少招幾個開發之類的領導愛聽的話,純粹是損人利己的行為。
當然,產品、運營一天到晚要搞活動,熱更新,那確實需要H5,如果還要求體驗,React Native,weex
也是有一定價值的。面對流氓,也只能耍流氓了。
真正的動態性,正在的提升效率,將公共邏輯移到Node.js
閘道器才是正解。“雲 + 輕客戶端”才是讓企業掌握主動的方式。
相關文章
- 由老同事學習SAP所想到的
- 由一個小庫存軟體想到的
- [轉] 由表單中 onsubmit="return false;" 想到的MITFalse
- “堅信自己的路”——由《黑客與畫家》想到的黑客
- 由早起上班聯想到的每日任務機制
- 由C#委託回撥想到的二三事C#
- 由一次WCF專案的需求擴充套件想到的套件
- Scala由類的動態擴充套件想到型別類套件型別
- 由 KRACK 攻擊想到的確保網路安全的小貼士
- 如何自學一門新的語言:由學習C++想到的C++
- 由使用request-promise-native想到的非同步處理方法Promise非同步
- CentOS下檢視系統版本的4種方法CentOS
- 由最長SQL想到的Latch Free( Library Cache Pin/Lock)整理~~草稿SQL
- R2的版本由來薦
- 都是密碼惹的禍——由windows server 2008忘記密碼想到的密碼WindowsServer
- 由情色行業想到產品經理與產品行業
- Java 的幾種版本Java
- C#基礎知識回顧:1.由WeakReference想到物件的建立與銷燬C#物件
- rhel 4 update4 的核心版本號
- 蘋果iPhone XS哪個顏色版本好看? 蘋果iPhone Xs有幾種顏色?蘋果iPhone
- 由國產效能測試工具WEB壓力測試模擬能力對比讓我想到的Web
- 由於版本升級引發的SQL語句故障SQL
- nb的vue - vue各種版本Vue
- 由SUN公司為太平洋災難中心提供災難預警系統的技術支援想到的
- 由v$statname其指標TBS Extension: bytes extended想到一點小事指標
- 蘋果明年或將推三款iPhone 包含4寸屏版本蘋果iPhone
- 【Python初級】由判定迴文數想到的,關於深淺複製,以及字串反轉的問題Python字串
- ORACLE中的4種SCNOracle
- 由於版本升級引發的SQL語句故障(續)SQL
- 檢視mysql版本的六種方法MySql
- 程式猿的年終總結,各種版本各種殘
- 被各種巢狀判斷噁心的你,想到狀態模式了嗎?巢狀模式
- 從找不到檔案想到的
- 蘋果的「封閉」是一種原罪嗎?蘋果
- mac防止休眠的4種方法Mac
- Java 常用的 4 種加密方式Java加密
- php中if的4種寫法PHP
- Laravel 路由版本實現的一種方式Laravel路由