如果我們直接將對應的平台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 也在去年...