DataManagerRxSwift 1.0.1

DataManagerRxSwift 1.0.1

Harsh 维护。



  • 作者
  • Harsh

DataManagerRxSwift 是一个轻量级的服务管理工具。以下是亮点之一:

  • 封装与网络调用相关的样板代码。
  • 确保网络调用始终在后台线程中执行。

要求 iOS 10.0,Swift 4.0,RxSwift 4.0

安装 DataManager 通过 CocoaPods 提供。要安装它,请将以下行添加到您的 Podfile 中

pod 'DataManagerRxSwift'

用法

设置

当您的控制器加载时,全局初始化 DataManager 和 DisposeBag。

  import DataManagerRxSwift
  import RxSwift
  var dataManager = DataManager()
  var disposeBag = DisposeBag()

要生成服务调用,您需要设置请求模型。

let requestModel = RequestModel(url: serviceRequestModel.baseURL, path: serviceRequestModel.path.rawValue, method: serviceRequestModel.method.rawValue, header: serviceRequestModel.header, bodyParameters: serviceRequestModel.bodyParameters, getRequestParameters: serviceRequestModel.getRequestParameters)

DataManager 使用泛型,所以您不必每次执行服务调用时都担心将响应转换为服务类。您只需要定义从管理器获取的模型类型即可,并在成功中定义该模型应为 Decodable 或 Codable 类型。例如

这是一个来自 itunes 服务器的收据验证服务模型,用于 In App 订阅验证检查

class VerifyReceipt : NSObject, Codable {
    
    var environment : String?
    var latest_receipt : String?
    var latest_receipt_info : [LatestReceiptInfo]?
    var pending_renewal_info : [PendingRenewalInfo]?
    var receipt : Receipt?
    var status : Int?
}

class Receipt : NSObject, Codable {
    
    var adam_id : Int?
    var app_item_id : Int?
    var application_version : String?
    var bundle_id : String?
    var download_id : Int?
    var in_app : [InApp]?
    var original_application_version : String?
    var original_purchase_date : String?
    var original_purchase_date_ms : String?
    var original_purchase_date_pst : String?
    var receipt_creation_date : String?
    var receipt_creation_date_ms : String?
    var receipt_creation_date_pst : String?
    var receipt_type : String?
    var request_date : String?
    var request_date_ms : String?
    var request_date_pst : String?
    var version_external_identifier : Int?
    
}

class InApp : NSObject, Codable {
    
    var expires_date : String?
    var expires_date_ms : String?
    var expires_date_pst : String?
    var is_in_intro_offer_period : String?
    var is_trial_period : String?
    var original_purchase_date : String?
    var original_purchase_date_ms : String?
    var original_purchase_date_pst : String?
    var original_transaction_id : String?
    var product_id : String?
    var purchase_date : String?
    var purchase_date_ms : String?
    var purchase_date_pst : String?
    var quantity : String?
    var transaction_id : String?
    var web_order_line_item_id : String?
    
}

class PendingRenewalInfo : NSObject, Codable {
    
    var auto_renew_product_id : String?
    var auto_renew_status : String?
    var original_transaction_id : String?
    var product_id : String?
    
}

class LatestReceiptInfo : NSObject, Codable {
    
    var expires_date : String?
    var expires_date_ms : String?
    var expires_date_pst : String?
    var is_in_intro_offer_period : String?
    var is_trial_period : String?
    var original_purchase_date : String?
    var original_purchase_date_ms : String?
    var original_purchase_date_pst : String?
    var original_transaction_id : String?
    var product_id : String?
    var purchase_date : String?
    var purchase_date_ms : String?
    var purchase_date_pst : String?
    var quantity : String?
    var subscription_group_identifier : String?
    var transaction_id : String?
    var web_order_line_item_id : String?
}
dataManager.serviceCall(apiRequest: requestModel).subscribe(onSuccess: { [weak self] (model: VerifyReceipt) in
                guard let strongSelf = self else { return }
                if let date = strongSelf.getExpirationDate(model: model) {
                    print(date)
                }
            }) { (error: Error) in
                print(error.localizedDescription)
                }.disposed(by: self.disposeBag)