iOS之通用SDK管理平台框架

2021-10-05 05:42:26 字數 2894 閱讀 6451

如果我們直接將對應的平台sdk拉進公司a專案裡,開發完畢後,下半年公司另起鍋灶開啟新專案,同樣的工作還是要在做一次,對於公司而言,缺少的是技術積累,對我們開發而言,同樣的事情再做幾次,缺少的是對工作和技術的總結。於是對於在維護著公司自家幾個專案的人來說,實在痛苦,每次更新sdk時,都需要反覆。於是便設計了乙個企業下的通用sdk管理盒子,通過cocoapods整合版本管理,釋放開發的成本,縮短相應的開發時間。

sdk(登陸 - 分享 - 支付)統一管理平台,what is needed by imp-protocol

設計乙個由配置協議統一通用api的盒子,方法暴露如下:

1)註冊到某乙個平台的入口api

2)獲取某乙個的平台某一種特性下的執行單例,遵守統一協議,比如

最基本的註冊協議

該平台可以分享則遵守分享協議

該平台可以支付則遵守支付協議

qq : 	註冊協議 、 登陸協議、分享協議

微博: 註冊協議 、 登陸協議、分享協議

支付寶: 註冊協議 、 支付協議

4)關係流程圖

(遵守需要實現的協議)|	|

|- - - - - - qq

- - - - - - 阿里支付

- - - - - - 微博

5)通過podspec檔案靈活配置每個工程下需要的第三方sdk平台podfile

// core 是盒子的基本**,實現了乙個盒子和協議內容。

// with*** 是對應平台的基本邏輯實現

// 通過編寫podspec完成靈活配置平台和依賴關係

# 盒子

# pod 'sdkkit/core'

,:git =>

'git@std.***.cn:lib/sdkkit.git'

# pod 'sdkkit/withwechat'

,:git =>

'git@std.***.cn:lib/sdkkit.git'

# pod 'sdkkit/withweibo'

,:git =>

'git@std.***.cn:lib/sdkkit.git'

# pod 'sdkkit/withqq'

,:git =>

'git@std.***.cn:lib/sdkkit.git'

# pod 'sdkkit/withalipay'

,:git =>

'git@std.***.cn:lib/sdkkit.git'

盒子的實現.h

#import

#import

"registerserver.h"

/** 各個平台外掛程式宣告 */

@class

qqserverimp

, wxserverimp, alserverimp, wbserverimp;

@inte***ce

frameworkmanager

: nsobject

/*** 獲取對應平台的服務單例物件,根據對應平台的服務單例物件的具體實現,滿足或部分滿足以下一些需求行為

* 可執行:註冊行為、登陸行為、分享行為、支付行為等..*/+

(id)frameworkserviceimp:

(managertype)platformtype;

@end

盒子的實現.m

/**

* 根據type獲取對應的平台註冊管理單例

*/+(id

)frameworkimpplatformtype:

(managertype)platformtype

}break

;case managertypewechat:

}break

;case managertypealipay:

}break

;case mmframeworkmanagertypeweibo:

}break

;case managertypenone:

default

:break;}

if(platformname &&

[nsclassfromstring

(platformname) conformstoprotocol:@protocol

(registerserver)])

return nil;

}@end

舉例子

1.註冊協議

@protocol registerserver 

@required

/** * 每個註冊sdk自行管理其服務單例

*/+(instancetype)sharedservice;

@optional

/** * 檢測api

*/-(bool

/** * 註冊api

* registerobject 是通用註冊資訊儲存模型

*/-(bool

)registerservertoregisterplatform:

(registerobject *

)registerobject;

@end

到這裡基本乙個由protocol-imp實現的盒子的設計基本思路已經完成,其他的需求行為還可以通過更多的協議來支援。

關於第三方的框架,如果是常用的框架,也建議多使用盒子封裝多一層,後期的維護和公升級方便很多,包括替換sdk的成本也降低了不少,日常開發裡有如下但不侷限於:網路請求庫、提示資訊庫,異常資訊上報庫等等。

Winform開發框架之通用定時服務管理

做專案的時候,或多或少需要和其他外部系統或者介面進行資料互動,有些是單向的獲取,有些可能是修改狀態後再寫回去,不管如何,這個都可以稱之為資料同步操作,如人員資訊同步 業務資料同步 第三方介面資料同步等等。資料同步涉及到乙個同步時間的問題,一般不敏感的資料,一天或者一周左右同步一次就可以了,有些可能需...

yii框架封裝拼多多開放平台sdk

因為公司專案需求,需要接入拼多多的開放平台,呼叫拼多多的部分介面。但拼多多沒有php的sdk,所以自己封裝了乙個適用於yii框架的簡單的類,來完成拼多多開放平台的對接。關於拼多多開放平台的配置,就不介紹了,拼多多的文件裡都有,下面直接展示一下我封裝的類 生成簽名 param params retur...

ios開發之iOS 11 SDK 的新特性

作為 ios 開發者,和往年一樣,我整理了一下在可能需要關注的地方。新加入 sdk 的大的框架有兩個,分別是負責簡化和整合機器學習的 core ml 和用來建立增強現實 ar 應用的 arkit。core ml 自從 alphago 出現以來,深度學習毫無疑問成了行業熱點。而 google 也在去年...