iOS定制應用開發(fā)及Apple Business Manager分發(fā)

應用開發(fā)

定制應用

為某個組織設計和開發(fā)的,你應用的自定義版本

舉個栗子,以下場景均屬于定制應用

  • 定制的UI,例如logo,品牌化等內容
  • 為其他組織特制的某些功能
  • 為合作伙伴、客戶、經(jīng)銷商定制的特性
  • 為企業(yè)員工特制的特性

當你自己的應用做大做強,某些客戶、組織可能希望你為他們做一個定制應用;比如中國移動讓騰訊為他們定制一個帶移動logo的微信App,騰訊的員工就使用定制的微信,大部分功能是和微信一樣的只是logo、某些界面不一樣;

要開發(fā)這樣的定制應用,將原有的項目復制一份然后再將不同的地方改改,這樣是極低級、極不合適的;
因為大部分代碼都是一樣的,為了方便開發(fā)、維護、擴展,最合適的方案是為每個定制應用創(chuàng)建不同的target

平常我們打包應用,其實就是打包了target對應的代碼、配置;即相當于一個target就是一個App;所有target都能共用workspace里的代碼,每個target的info.plist,源碼引用,Build Settings...所有參數(shù)又都可以單獨修改;這就很方便實現(xiàn)”求同存異“的定制需求;
關于project、target的關系,這里引用霜神的比喻:

Xcode Workspace就如同工廠,Xcode Project如同車間,每個車間可以獨立于工廠來生產(chǎn)產(chǎn)品(project可獨立于workspace存在),但是各個車間組合起來就需要工廠來組織(如果用了cocopods,就需要用workspace)。Xcode Target是一條條的流水線,一條流水線上面只生產(chǎn)一種產(chǎn)品。Build Settings是生產(chǎn)產(chǎn)品的秘方,如果是生產(chǎn)汽水,Build Settings就是其中各個原料的配方。Xcode Scheme是生產(chǎn)方案,包含了流水線生產(chǎn),秘方,還包含生產(chǎn)完成之后的質檢(test)。

創(chuàng)建Target

兩種方式

  • 新建一個新的target
  • copy一個已有的target

因為每個target的info,Build Settings,Build Phases都差不多,使用第二種方式是最簡單方便的;

target配置

由于每個target的info,Build Settings,Build Phases都是獨立的,所有可以為每個不同的target配置不同的設置;

  • 應用名稱(Display Name),Bundle Identifier,App Icon,App Launch Screen:
  • info.plist
    通過copy的target會在項目中自動生成對應的xxx copy-info.plist文件;
    為了方便管理,將這些文件以文件夾的方式分類并重命名;
    info.plist文件重命名及在項目的路徑更改后,需同步設置Build Settings的info file設置
  • icon
    為每個target新建.xcassets文件,并分類好;在改文件添加target不同的icon;
    所有這些配置文件、資源文件、icon、類都使用同樣的命名,這樣在編碼時就可以保持一致,在編譯時就算是同名但是都能找到每個target引用的配置文件、資源文件、icon
  • Color
    為每個target新建一個color類,類名、color名均統(tǒng)一,顏色值設置不一樣即可:
//
//  AppColors.swift
//  AppA
//
extension UIColor {
    static var mainColor: UIColor {
        return UIColor.blue
    }
    
    static var buttonColor: UIColor {
        return UIColor.lightGray
    }
    
    // ... other colors
}
//
//  AppColors.swift
//  AppB
//
extension UIColor {
    static var mainColor: UIColor {
        return UIColor.red
    }
    
    static var buttonColor: UIColor {
        return UIColor.yellow
    }
    
    // ... other colors
}

通過以上設置后,同一句代碼就能實現(xiàn)不同的target顯示不同的顏色和圖片:

imageView.backgroundColor = .mainColor
imageView.image = UIImage(named: "logo")

區(qū)分target

當某個定制應用需要自己特有的功能,而其他應用是沒有的時,同一份代碼編碼時就需要區(qū)分不同的target了;
區(qū)分target的一個方式是在每個target的Build Settings中設置特有的preprocessor MacrosActive Compilation Conditions(Swift);代碼中就能通過預編譯宏判斷;

oc
swift

代碼:

#if APPA
    print("只有AppA才有的功能")
#endif

應用分發(fā)

應用開發(fā)、測試完,怎么分發(fā)給定制的客戶呢?
目前iOS應用分發(fā)渠道不外乎:App Store、TestFlight、企業(yè)級應用、超級簽名、蘋果商務(Apple Business Manager 簡稱ABM);它們特點鮮明:

對于這種大體功能一致,只是部分界面不一樣的應用肯定是提交不到App Store的,
對于買不起企業(yè)證書的公司來說,Apple Business是最適合這種定制應用分發(fā)的;

Apple Business Manager

官方文檔:https://support.apple.com/zh-cn/guide/apple-business-manager/welcome/web

從19年10月起,在中國大陸也開始支持通過ABM分發(fā)應用,特別適合發(fā)布企業(yè)內部應用、定制應用

申請ABM賬號

官網(wǎng):https://business.apple.com/#enrollment

申請者身份必須是組織,不接受獨立個人身份申請。
申請者需要具有:鄧白氏編碼、AppleID、和公司相關的網(wǎng)站域名、和網(wǎng)站域名相同后綴的郵箱;
賬號申請和使用均免費

創(chuàng)建管理式 AppleID

蘋果商務應用上架

蘋果商務應用批量購買

關于ABM,
iOS應用發(fā)布方式盤點+蘋果商務詳解這篇文章有詳細教程;

商務應用批量購買后可以下載一個excel文件,該文件包括了申請的所有(最多25000個)兌換碼,兌換碼鏈接類似如下(前面都是固定的,就是code不一樣):
https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/freeProductCodeWizard?code=4F3CFEN69R897R
我們將這個鏈接發(fā)給客戶,客戶使用Safari打開會自動跳轉至iTunes Store兌換應用并安裝:

當客戶很多時,不可能這樣一個一個發(fā)送鏈接,其實可以自己搭建一個類似蒲公英的分發(fā)平臺:平臺根據(jù)不同的兌換碼的鏈接生成二維碼交由客戶掃碼兌換、安裝;

關于兌換碼:一個兌換碼只能使用一次(不和設備、賬號綁定),所以當客戶卸載應用后,再使用同一個兌換碼也是兌換不了的;但只要是兌換過應用,是可以通過App Store的已購項目進行重新下載更新

參考:
http://www.lxweimin.com/p/83b6e781eb51
http://www.lxweimin.com/p/c8361a83a338

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容