1.通过编写package文件为自己添加依赖库
其实现阶段,如果是纯Swift开发的项目,用Swift package manager来制作三方库可能是比用cocoapods更省心的,至少Google,Facebook的三方库都已经给出了这种继承方式,使用起来比cocoapods简单很多,在利用这种方式制作第三方库的时候,可以用最简单的方式来对需要依赖的第三方库进行引用.
defaultLocalization: "en",
platforms: [.iOS("10.0"), .macOS("10.10"), .tvOS("9.0"), .watchOS("6.2")],
products: [
.library(
name: "项目名称",
targets: ["项目名称"])
],
dependencies: [
// name: "Alamofire",
.package(url: "https://github.com/Alamofire/Alamofire.git",.exact("5.4.3")),
// name: "SwiftyJSON",
.package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git",.exact("5.0.1")),
// name: "SwiftyStoreKit",
.package(url: "https://github.com/bizz84/SwiftyStoreKit.git",.exact("0.16.3")),
// name: "SnapKit",
.package(url: "https://github.com/SnapKit/SnapKit.git",.exact("5.0.1")),
// name: "MBProgressHUD",
.package(url: "https://github.com/jdg/MBProgressHUD.git",.exact("1.2.0")),
// name: "adjust",
.package(url: "https://github.com/adjust/ios_sdk",.exact("4.29.7")),
// name: "facebook"
.package(url: "https://github.com/facebook/facebook-ios-sdk",.exact("11.2.1")),
// name: "firebase"
.package(url: "https://github.com/firebase/firebase-ios-sdk",.exact("7.11.0")),//7.4.0
// name: "IQKeyboardManager"
.package(url: "https://github.com/hackiftekhar/IQKeyboardManager.git",.exact("6.5.0")),
],
他并不会占用SDK项目本身的大小,而是在别人集成你的时候,直接安装到他的项目里
2.使用更Swift的方式设计对外接口(局限性高)
///业务功能
public protocol BusinessProtocol {
//支付
func sdkPaySuccess(cpOrderSn: String)
func sdkPayFaild(failString: String)
}
extension BusinessProtocol{
/// 苹果支付
/// - Parameter orderInfo: 订单信息
public func ApplePay(controller:UIViewController,orderInfo: [String:String]){
if LocalCacheDataInfo.token == ""{
// Mediator.default.showMessage(msg: pleaseLoginString)
NSLog("SDK阻拦----------------\(pleaseLoginString)")
return
}
Mediator.default.showLoading()
ApplePayManager.purchaseProduct(withController: controller, orderInfo: orderInfo) { cpOrderSn in
Mediator.default.hideHUD()
sdkPaySuccess(cpOrderSn: cpOrderSn)
} failure: { failureString in
Mediator.default.hideHUD()
sdkPayFaild(failString: failureString)
}
}
}
这完全是在使用最适合Swift的方式来设计对外接口,但可惜的是这种方法其实并不适合现在使用,因为大部分的老OC项目无法直接通过协议的方式来调用方法.如果真的这么写了,在OC项目当中调用的时候需要专门单独创建一个Swift文件,先把这些对外的接口转一遍,OC项目才能继续混编使用,毕竟extension这个东西在OC当中是没有的,你也无法直接在OC文件中去调用协议方法,当然你会说我可以在协议前加一个Objc不就好了,那如果是这样,我更建议你再写对外接口时直接使用NSObject类的方式去写,这样不管使用你的项目是OC项目也好,Swift项目也好都不会受影响了.
public class NormalSPM: NSObject {}