Commit 0b3e83f1 by pierce

1、添加注册登录模块

2、添加测试模块、完善Host和DataCenter相关逻辑
parent 4a081a81
Showing with 435 additions and 242 deletions
//
// GDBaseBussinessService.swift
// GDBaseBussinessRouter.swift
// Router
//
// Created by pierce on 2023/2/18.
......@@ -8,10 +8,10 @@
import UIKit
// 不用这个
@objc public protocol GDBaseBussinessService {
@objc public protocol GDBaseBussinessRouter {
}
public protocol GDBaseBussinessSwiftService: GDBaseBussinessService {
public protocol GDBaseBussinessSwiftRouter: GDBaseBussinessRouter {
}
......@@ -15,10 +15,10 @@ public struct GDChatRoomArchieveKey {
}
// 不用这个
@objc public protocol GDChatRoomSevice {
@objc public protocol GDChatRoomRouter {
}
public protocol GDChatRoomSwiftService: GDChatRoomSevice {
public protocol GDChatRoomSwiftRouter: GDChatRoomRouter {
func changeSDKKey(appKey: String)
}
//
// GDDataManagerService.swift
// GDDataManagerRouter.swift
// Router
//
// Created by Jim Chan on 2022/12/13.
......@@ -13,10 +13,10 @@ import SwiftyJSON
import GDToolBox
// 不用这个
@objc public protocol GDDataManagerService {
@objc public protocol GDDataManagerRouter {
}
public protocol GDDataManagerSwiftService: GDDataManagerService {
public protocol GDDataManagerSwiftRouter: GDDataManagerRouter {
}
//
// HostManagerService.swift
// HostManagerRouter.swift
// Router
//
// Created by Jim Chan on 2022/12/13.
......@@ -7,6 +7,45 @@
import Foundation
public struct GDHostManagerStore {
public static let apiArray = "moya_apiArray"
// 开发环境key
public static let envKey = "EnvKey"
/// 当前使用的环信Key
public static let hyphenateKey = "hyphenateKey"
public struct Custom {
public static let apiAddress = "moya_custom_apiAddress"
public static let imageDownUrl = "moya_custom_imageDownUrl"
public static let accountsUrl = "moya_custom_accountsUrl"
public static let webUrl = "moya_custom_webUrl"
public static let redPacketUrl = "moya_custom_redPacketUrl"
public static let payUrl = "moya_custom_payUrl"
public static let h5Url = "moya_custom_h5Url"
public static let openapiUrl = "moya_custom_openapi"
}
public struct Production {
public static let apiAddress = "moya_production_apiAddress"
public static let imageDownUrl = "moya_production_imageDownUrl"
public static let accountsUrl = "moya_production_accountsUrl"
public static let webUrl = "moya_production_webUrl"
public static let redPacketUrl = "moya_production_redPacketUrl"
public static let payUrl = "moya_production_payUrl"
public static let h5Url = "moya_production_h5Url"
public static let openapiUrl = "moya_production_openapi"
}
public struct Socket {
// 自定义Socket IP
public static let customIP = "customSocketAPI"
// 自定义Socket 端口
public static let customPort = "customSocketPort"
}
}
/// 开发环境
public enum GDEnviroment: Int {
// 生产环境
......@@ -36,9 +75,9 @@ struct GDEnviromentModel {
}
// 不用这个
@objc public protocol GDHostManagerService { }
@objc public protocol GDHostManagerRouter { }
public protocol GDHostManagerSwiftService: GDHostManagerService {
public protocol GDHostManagerSwiftRouter: GDHostManagerRouter {
var apiAddress: String { get }
var imageDownUrl: String { get }
......@@ -54,4 +93,6 @@ public protocol GDHostManagerSwiftService: GDHostManagerService {
func genarateParames(_ params:[String: Any]) -> [String: Any]
func checkCurrentDNSAdress()
}
//
// GDLoginAndRegistRouter.swift
// GDRouter
//
// Created by pierce on 2024/1/6.
//
import Foundation
public struct GDLoginAndRegistPublicUDKey {
/// 隐私协议同意状态
public static let agreementState = "agreementState"
}
// 不用这个
@objc public protocol GDLoginAndRegistRouter {
}
public protocol GDLoginAndRegistSwiftRouter: GDLoginAndRegistRouter {
}
//
// GDTestRouter.swift
// GDRouter
//
// Created by pierce on 2024/1/6.
//
import Foundation
/// 开发环境
public enum GDEnv: Int {
// 生产环境
case product = 0
// 测试环境
case test
// 预生产环境
case preproduct
// 自定义
case custom
}
// 不用这个
@objc public protocol GDTestRouter {
}
public protocol GDTestSwiftRouter: GDTestRouter {
var env: GDEnv { get }
}
//
// GDUserManagerService.swift
// GDUserManagerRouter.swift
// Router
//
// Created by pierce on 2023/2/18.
......@@ -9,11 +9,11 @@ import UIKit
import GDToolBox
// 不用这个
@objc public protocol GDUserManagerService {
@objc public protocol GDUserManagerRouter {
}
public protocol GDUserManagerSwiftService: GDUserManagerService {
public protocol GDUserManagerSwiftRouter: GDUserManagerRouter {
/// UID
var uid: String? { get }
......
......@@ -28,28 +28,39 @@ public class GDRouter: NSObject {
}
/// 基础业务
public static var BaseBusinessRouter: GDBaseBussinessSwiftService? {
Bifrost.module(byService: GDBaseBussinessService.self) as? GDBaseBussinessSwiftService
public static var BaseBusinessRouter: GDBaseBussinessSwiftRouter? {
Bifrost.module(byService: GDBaseBussinessRouter.self) as? GDBaseBussinessSwiftRouter
}
/// 数据中心
public static var DataRouter: GDDataManagerSwiftService? {
Bifrost.module(byService: GDDataManagerService.self) as? GDDataManagerSwiftService
public static var DataRouter: GDDataManagerSwiftRouter? {
Bifrost.module(byService: GDDataManagerRouter.self) as? GDDataManagerSwiftRouter
}
/// API中心
public static var HostRouter: GDHostManagerSwiftService? {
Bifrost.module(byService: GDHostManagerService.self) as? GDHostManagerSwiftService
public static var HostRouter: GDHostManagerSwiftRouter? {
Bifrost.module(byService: GDHostManagerRouter.self) as? GDHostManagerSwiftRouter
}
/// 用户中心
public static var UserRouter: GDUserManagerSwiftService? {
Bifrost.module(byService: GDUserManagerService.self) as? GDUserManagerSwiftService
public static var UserRouter: GDUserManagerSwiftRouter? {
Bifrost.module(byService: GDUserManagerRouter.self) as? GDUserManagerSwiftRouter
}
/// 聊天室
public static var ChatRoom: GDChatRoomSwiftService? {
Bifrost.module(byService: GDChatRoomSevice.self) as? GDChatRoomSwiftService
public static var ChatRoom: GDChatRoomSwiftRouter? {
Bifrost.module(byService: GDChatRoomRouter.self) as? GDChatRoomSwiftRouter
}
/// 登录模块
public static var LoginRouter: GDLoginAndRegistSwiftRouter? {
Bifrost.module(byService: GDLoginAndRegistRouter.self) as? GDLoginAndRegistSwiftRouter
}
/// 登录模块
public static var Test: GDTestSwiftRouter? {
Bifrost.module(byService: GDTestRouter.self) as? GDTestSwiftRouter
}
}
......@@ -29,7 +29,7 @@ public enum NavigationBarItemType {
case left
}
public class BaseViewController: UIViewController {
open class BaseViewController: UIViewController {
// MARK: Public
// 返回按钮返回类型,默认pop
......@@ -71,7 +71,7 @@ public class BaseViewController: UIViewController {
}
// MARK: LifeCycle
public override func viewDidLoad() {
open override func viewDidLoad() {
super.viewDidLoad()
// GDlog.verbose("Release Debug: \(self.className()) 初始化")
......@@ -93,7 +93,7 @@ public class BaseViewController: UIViewController {
setupStatistic()
}
public override func viewWillAppear(_ animated: Bool) {
open override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
GDStatistics.pageBegin(pageName: self.className())
......@@ -114,19 +114,19 @@ public class BaseViewController: UIViewController {
// GDInternalPushCenter.shared.currentVC = self
}
public override func viewDidLayoutSubviews() {
open override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
}
public override func viewDidAppear(_ animated: Bool) {
open override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// TalkingData 统计
TalkingData.trackPageEnd(type(of: self).description().components(separatedBy: ".").last!)
}
public override func viewWillDisappear(_ animated: Bool) {
open override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
GDStatistics.pageEnd(pageName: self.className())
......@@ -135,7 +135,7 @@ public class BaseViewController: UIViewController {
appearing = false
}
public override func viewDidDisappear(_ animated: Bool) {
open override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// TalkingData 统计
TalkingData.trackPageEnd(type(of: self).description().components(separatedBy: ".").last ?? "unknown controller")
......@@ -143,22 +143,22 @@ public class BaseViewController: UIViewController {
// MARK: Override
/// 构建UI
public func makeUI() {
open func makeUI() {
setupNavigationBar()
}
/// 绑定 ViewModel
public func bindViewModel() {
open func bindViewModel() {
}
/// 设置统计相关
public func setupStatistic() {
open func setupStatistic() {
}
/// 初始化设置 NavigationBar
private func setupNavigationBar() {
open func setupNavigationBar() {
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.backgroundColor = .white
self.navigationController?.navigationBar.isTranslucent = false
......@@ -168,7 +168,7 @@ public class BaseViewController: UIViewController {
self.showBackBtn = true
}
public override var prefersStatusBarHidden: Bool {
open override var prefersStatusBarHidden: Bool {
return statusBarHidden
}
......
......@@ -36,12 +36,12 @@ public enum GDImagePickerType {
public class GDImagePicker: NSObject {
var imagePickerVC: UIViewController?
var videoCaptureOverlayView : GDVideoRecordOverlayView?
public var imagePickerVC: UIViewController?
public var videoCaptureOverlayView : GDVideoRecordOverlayView?
var config = GDImagePickerConfig()
public var config = GDImagePickerConfig()
func showMultiOption(on vc: UIViewController,
public func showMultiOption(on vc: UIViewController,
config: GDImagePickerConfig,
showTypes: [GDImagePickerType] = [.camera, .album]) {
......@@ -151,7 +151,7 @@ public class GDImagePicker: NSObject {
}
func dismiss() {
public func dismiss() {
imagePickerVC?.dismiss(animated: true, completion: nil)
}
......
......@@ -12,33 +12,33 @@ import Photos
public class GDImagePickerConfig: BaseModel {
/// 是否允许编辑
var editEnabel = false
public var editEnabel = false
/// 是否显示相册
var showAlbum = true
public var showAlbum = true
/// 选图数量
var limit = 1
public var limit = 1
/// 视频数量
var videoNumLimit = 1
public var videoNumLimit = 1
/// 视频时长限制,0为不限制
var videoTimeLimit: TimeInterval = 0
public var videoTimeLimit: TimeInterval = 0
/// 达到数量之后禁选
var disableWhenReachLimit: Bool = false
public var disableWhenReachLimit: Bool = false
/// 允许预览
var enablePreview = true
public var enablePreview = true
/// 允许原图
var enableOrigin = false
public var enableOrigin = false
/// 支持展示的媒体类型
var mediaTypes: [PHAssetMediaType] = [.image]
public var mediaTypes: [PHAssetMediaType] = [.image]
/// 发送按钮的内容
var sendButtonTitle = "确定"
public var sendButtonTitle = "确定"
/// 取消回调
var cancleHandler: EmptyClosure?
public var cancleHandler: EmptyClosure?
/// Asset 完成选择回调,视频只会走这个回调,返回true撤回控制器,返回false不撤回
var assetConfirmHandler: ((_ asset: [GDImagePickerAsset], _ isOrigin: Bool) -> Bool)?
public var assetConfirmHandler: ((_ asset: [GDImagePickerAsset], _ isOrigin: Bool) -> Bool)?
/// Image 完成选择回调,返回true撤回控制器,返回false不撤回
var imageConfirmHandler: ((_ asset: [UIImage], _ isOrigin: Bool) -> Bool)?
public var imageConfirmHandler: ((_ asset: [UIImage], _ isOrigin: Bool) -> Bool)?
/// 可编辑的图片、摄像头只会走这个回调
var editableImageConfirmHandler: ((UIImage?) -> Bool)?
public var editableImageConfirmHandler: ((UIImage?) -> Bool)?
deinit {
......
......@@ -186,7 +186,7 @@ public class GDFloatingWebView: BaseView {
}
extension GDFloatingWebView: GDWebViewControllerType {
func dismissSelf() {
public func dismissSelf() {
self.dismiss()
}
}
......@@ -13,7 +13,7 @@ import RxSwift
import RxCocoa
import SwiftyTimer
protocol GDWebViewControllerType: NSObject {
public protocol GDWebViewControllerType: NSObject {
func dismissSelf()
......@@ -21,55 +21,55 @@ protocol GDWebViewControllerType: NSObject {
public class GDWebView: WKWebView, WKNavigationDelegate, WKScriptMessageHandler {
let disposeBag = DisposeBag()
public let disposeBag = DisposeBag()
/// 发布网页交互动作
let actionPublisher = PublishRelay<(cid: Int, data: JSON)>()
public let actionPublisher = PublishRelay<(cid: Int, data: JSON)>()
/// 自动拼接用户信息
var includeUserInfo = true
public var includeUserInfo = true
// 点击事件是否自动跳转到下一个网页(系统是默认在接收到js点击事件的时候,自动请求点击事件的链接)
var isSkipToNextPage = true
public var isSkipToNextPage = true
// 标题通知者
let titlePublished = PublishSubject<String>()
public let titlePublished = PublishSubject<String>()
// 内容开始返回时
let didCommitNavigationPublished = PublishSubject<WKNavigation>()
public let didCommitNavigationPublished = PublishSubject<WKNavigation>()
// 加载结束
let didFinishNavigationPublished = PublishSubject<WKNavigation>()
public let didFinishNavigationPublished = PublishSubject<WKNavigation>()
// 加载失败
let didFailProvisionalNavigationPublished = PublishSubject<Error>()
public let didFailProvisionalNavigationPublished = PublishSubject<Error>()
// javascript点击事件
let decidePolicyForNavigationActionPublished = PublishSubject<String>()
public let decidePolicyForNavigationActionPublished = PublishSubject<String>()
/// 加载失败按钮
let failBtn = GDGradientButton(type: .custom)
public let failBtn = GDGradientButton(type: .custom)
/// 失败 View
let failView = GDEmptyView(frame: .zero)
public let failView = GDEmptyView(frame: .zero)
/// 是否展示失败 View
var enableFailView = true
public var enableFailView = true
/// 是否允许调起直播间功能模块,半屏任务中心打开
var showLiveFunctionEnable = false
public var showLiveFunctionEnable = false
// 持有当前request
var currentRequest: URLRequest?
public var currentRequest: URLRequest?
// 显示直播间充值
var showLiveRecharge = false
var willShowLiveRechargeHandler: EmptyClosure?
var didDismissLiveRechargeHandler: EmptyClosure?
var decidePolicyHandler: ((String) -> Void)?
public var showLiveRecharge = false
public var willShowLiveRechargeHandler: EmptyClosure?
public var didDismissLiveRechargeHandler: EmptyClosure?
public var decidePolicyHandler: ((String) -> Void)?
/// 注入网页的json
var injectString: String?
public var injectString: String?
var getPresentViewController: (() -> UIViewController?)?
public var getPresentViewController: (() -> UIViewController?)?
// MARK: Init
convenience init(_ delegateVC: GDWebViewControllerType, cacheEnable: Bool) {
public convenience init(_ delegateVC: GDWebViewControllerType, cacheEnable: Bool) {
let _userContentController = WKUserContentController()
let webConfiguration = WKWebViewConfiguration()
webConfiguration.userContentController = _userContentController
......@@ -82,7 +82,7 @@ public class GDWebView: WKWebView, WKNavigationDelegate, WKScriptMessageHandler
// MARK: Private
// 依托的ViewController
weak var delegateVC : GDWebViewControllerType? {
public weak var delegateVC : GDWebViewControllerType? {
didSet {
let _userContentController = WKUserContentController()
let webConfiguration = WKWebViewConfiguration()
......
......@@ -270,7 +270,7 @@ public class GDHalfScreenWebView: BaseView {
extension GDHalfScreenWebView: GDWebViewControllerType {
func dismissSelf() {
public func dismissSelf() {
dismiss()
}
......
......@@ -60,7 +60,7 @@ public class GDWebViewController: BaseViewController, GDWebViewControllerType {
// 进度监听
private var progressKVOhandle: NSKeyValueObservation?
convenience init(url: String) {
public convenience init(url: String) {
self.init(nibName: nil, bundle: nil)
currentWebUrl = url
}
......@@ -300,7 +300,7 @@ public class GDWebViewController: BaseViewController, GDWebViewControllerType {
}
}
func dismissSelf() {
public func dismissSelf() {
if isBeingDismissed {
self.dismiss(animated: true, completion: nil)
} else {
......
......@@ -89,25 +89,19 @@ public class GDSocketCenter: BaseViewModel {
// 存储当前 Socket 数据
self.ip = response.json["ip"].stringValue
self.port = response.json["port"].stringValue
// TODO: 缺失
// 可编辑环境下
// if GDToolBoxSetup.shared.enableEditableAPI {
// // 自定义环境
// if let envValue = UserDefaults.standard.value(forKey: GDHostUserDefault.envKey) as? Int {
// let env = GDEnv(rawValue: envValue) ?? .product
// if env == .custom {
// let customIp = (UserDefaults.standard.value(forKey: GDUserDefault.Socket.customIP) as? String) ?? ""
// let customPort = (UserDefaults.standard.value(forKey: GDUserDefault.Socket.customPort) as? String) ?? ""
// if isValidString(customIp) {
// self.ip = customIp
// }
// if isValidString(customPort) {
// self.port = customPort
// }
// }
// }
// }
if DevConfig.enableEditableAPI {
if GDToolBoxPlugins.shared.apiPlugin.customIpHostEnable {
let customIp = GDToolBoxPlugins.shared.apiPlugin.customSocketIp
let customPort = GDToolBoxPlugins.shared.apiPlugin.customSocketPort
if isValidString(customIp) {
self.ip = customIp
}
if isValidString(customPort) {
self.port = customPort
}
}
}
if let ip = self.ip, let port = self.port {
self.socketConnect(with: ip, port: port) { (success) in
......
......@@ -23,4 +23,8 @@ open class GDToolBoxAPIPlugin: NSObject {
/// - Parameter params: 请求参数
/// - Returns: 添加完固定参数的完整请求参数
open func Params(_ params : [String : Any]) -> [String : Any] { return params }
open var customIpHostEnable: Bool { false }
open var customSocketIp: String { "" }
open var customSocketPort: String { "" }
}
......@@ -67,13 +67,13 @@ public enum GDGender {
}
}
public class GDToolBoxUserCenterPlugin: NSObject {
open class GDToolBoxUserCenterPlugin: NSObject {
public var isVisitor:Bool { false }
public var isUserLogin:Bool { false }
public var uid:String? { "" }
public var nickname:String? { "" }
public var token:String? { "" }
open var isVisitor:Bool { false }
open var isUserLogin:Bool { false }
open var uid:String? { "" }
open var nickname:String? { "" }
open var token:String? { "" }
func gd_userHadBeenKickOffline() {}
open func gd_userHadBeenKickOffline() {}
}
......@@ -10,7 +10,7 @@ import UIKit
import RxSwift
import RxCocoa
@objc protocol GDTextFieldDelegate {
@objc public protocol GDTextFieldDelegate {
@objc optional func tl_textFieldShouldBeginEditing(_ textField: GDTextField) -> Bool // return NO to disallow editing.
......@@ -35,33 +35,33 @@ import RxCocoa
public class GDTextField: UITextField {
// MARK: Init
override init(frame: CGRect) {
public override init(frame: CGRect) {
super.init(frame: frame)
self.delegate = self
}
required init?(coder: NSCoder) {
public required init?(coder: NSCoder) {
super.init(coder: coder)
self.delegate = self
}
// MARK: Public
weak var tl_delegate: GDTextFieldDelegate?
public weak var tl_delegate: GDTextFieldDelegate?
/// 是否只是用于显示(禁用粘贴、选择和全选功能)
var displayOnly = false
public var displayOnly = false
/// 禁用粘贴
var disablePaste = false
public var disablePaste = false
/// 禁用选择
var disableSelect = false
public var disableSelect = false
/// 禁用全选
var disableSelectAll = false
public var disableSelectAll = false
/// 是否正在编辑中
let tl_isEditing = BehaviorRelay<Bool>(value: false)
public let tl_isEditing = BehaviorRelay<Bool>(value: false)
/// 输入回调
var inputHandler: ((String) -> Void)?
public var inputHandler: ((String) -> Void)?
/// 最长输入限制,0为不限制
var textMaxLength: Int = 0 {
public var textMaxLength: Int = 0 {
didSet {
if textMaxLength == 0 {
lengthDectectDisposable?.dispose()
......@@ -98,7 +98,7 @@ public class GDTextField: UITextField {
}
}
}
var commonTextMaxLength: Int = 0 {
public var commonTextMaxLength: Int = 0 {
didSet {
if commonTextMaxLength == 0 {
lengthDectectDisposable?.dispose()
......@@ -133,7 +133,7 @@ public class GDTextField: UITextField {
}
}
/// 文本长度
var textLength: Int {
public var textLength: Int {
let encodeValue = CFStringConvertEncodingToNSStringEncoding(UInt32(CFStringEncodings.GB_18030_2000.rawValue))
let encode = String.Encoding.init(rawValue: encodeValue)
return self.text?.lengthOfBytes(using: encode) ?? 0
......@@ -156,7 +156,7 @@ public class GDTextField: UITextField {
return super.canPerformAction(action, withSender: sender)
}
func filterCharacter(with regaxStr: String) -> String {
public func filterCharacter(with regaxStr: String) -> String {
let searchText = self.text ?? ""
if let regax = try? NSRegularExpression(pattern: regaxStr, options: .caseInsensitive) {
let result = regax.stringByReplacingMatches(in: searchText, options: .reportCompletion, range: .init(location: 0, length: searchText.utf16.count), withTemplate: "")
......
......@@ -14,23 +14,27 @@ class GDDataManagerPlugin: GDToolBoxDataCenterPlugin {
/// - Parameters:
/// - priority: 优先级
/// - url: URL
override func updatePriority(priority: Int, for url: String) {}
override func updatePriority(priority: Int, for url: String) {
GDResourceDownloader.shared.updatePriority(priority: priority, for: url)
}
/// 校验资源是否已经下载失败
/// - Parameter resUrl: 下载地址
/// - Returns:
override func checkFailureFor(_ resUrl: String) -> Bool { return false }
override func checkFailureFor(_ resUrl: String) -> Bool { return GDResourceDownloader.shared.checkFailureFor(resUrl) }
/// 添加任务
/// - Parameter tasks: 任务数组
override func addTasks(_ tasks: [GDDownloadTask]) {}
override func addTasks(_ tasks: [GDDownloadTask]) {
GDResourceDownloader.shared.addTasks(tasks)
}
/// 获取进度
/// - Parameter tasks: 任务数组
override func progressDict(_ resUrl: String) -> Double { return 0 }
override func progressDict(_ resUrl: String) -> Double { return GDResourceDownloader.shared.progressDict[resUrl] ?? 0 }
/// 获取进度发布器
override func downloadPublisher() -> PublishRelay<(resUrl: String, progress:Double, finish: Bool)>? {
return nil
return GDResourceDownloader.shared.downloadPublisher
}
}
......@@ -55,7 +55,7 @@ final class GDSettingConfigModel: BaseModel, NetworkModelType {
// 写入本地
// if let roomTipsDict = json["cue"].dictionaryObject {
// GDUserDefault.write(roomTipsDict, key: GDUserDefault.Data.liveRoomTips)
// UserDefaults.standard.set(roomTipsDict, forKey: GDUserDefault.Data.liveRoomTips)
// }
//
// model.barrageArr = json["barrage"].arrayValue.map { GDBarrageModel(json: $0) }
......
......@@ -10,7 +10,7 @@ import GDRouter
import GDToolBox
import Bifrost
@objc public class GDDataManagerModule: NSObject, GDDataManagerSwiftService {
@objc public class GDDataManagerModule: NSObject, GDDataManagerSwiftRouter {
let disposeBag = DisposeBag()
......@@ -52,11 +52,11 @@ extension GDDataManagerModule: BifrostModuleProtocol {
}
public func setup() {
GDToolBoxPlugins.shared.dataPlugin = GDDataManagerPlugin()
}
@objc public static func swiftLoad() {
Bifrost.registerService(GDDataManagerService.self, withModule: self)
Bifrost.registerService(GDDataManagerRouter.self, withModule: self)
}
public static func setupModuleSynchronously() -> Bool {
......
//
// GDLoginWebUrl.swift
// GDLoginAndRegistModule
//
// Created by pierce on 2024/1/6.
//
import Foundation
struct GDLoginWebUrl {
/// 隐私政策
static let userPrivacyAggrement = "https://yabolive.com/other/text/guodongTips.html"
// 用户使用协议
static let userAgreement = "http://zhibo.yazhai.co/agreement/comm.html"
}
//
// GDLoginAndRegistModule.h
// GDLoginAndRegistModule
//
// Created by pierce on 2024/1/6.
//
#import <Foundation/Foundation.h>
//! Project version number for GDLoginAndRegistModule.
FOUNDATION_EXPORT double GDLoginAndRegistModuleVersionNumber;
//! Project version string for GDLoginAndRegistModule.
FOUNDATION_EXPORT const unsigned char GDLoginAndRegistModuleVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <GDLoginAndRegistModule/PublicHeader.h>
//
// GDTest.h
// GDTest
//
// Created by pierce on 2024/1/6.
//
#import <Foundation/Foundation.h>
//! Project version number for GDTest.
FOUNDATION_EXPORT double GDTestVersionNumber;
//! Project version string for GDTest.
FOUNDATION_EXPORT const unsigned char GDTestVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <GDTest/PublicHeader.h>
......@@ -7,13 +7,25 @@
import Foundation
import GDRouter
import GDToolBox
import Bifrost
@objc public class GDUserInfoManagerModule: NSObject, GDUserManagerSwiftService {
public var uid: String?
@objc public class GDUserInfoManagerModule: GDToolBoxUserCenterPlugin, GDUserManagerSwiftRouter {
public override var uid: String? {
GDUserCenter.shared.uid
}
public override var token: String? {
GDUserCenter.shared.user.value.token
}
public var token: String?
open override var isVisitor : Bool { GDUserCenter.shared.isVisitor.value }
open override var isUserLogin : Bool { GDUserCenter.shared.isLogin.value }
open override var nickname:String? { GDUserCenter.shared.user.value.nickname }
open override func gd_userHadBeenKickOffline() {
GDUserCenter.shared.hadBeenKickOffline()
}
}
extension GDUserInfoManagerModule: GDRouterProtocol {
......@@ -40,7 +52,7 @@ extension GDUserInfoManagerModule: BifrostModuleProtocol {
}
@objc public static func swiftLoad() {
Bifrost.registerService(GDUserManagerService.self, withModule: self)
Bifrost.registerService(GDUserManagerRouter.self, withModule: self)
}
public static func setupModuleSynchronously() -> Bool {
......
......@@ -12,7 +12,6 @@
38E95B5C2948AD7300DE03BC /* GDHostManagerAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E95B5A2948AD7300DE03BC /* GDHostManagerAPI.swift */; };
38E95B5D2948AD7300DE03BC /* GDHostManagerProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E95B5B2948AD7300DE03BC /* GDHostManagerProvider.swift */; };
73C12D6E4F2698F5A2B8C4E3 /* Pods_HostManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F66D9B2847F41AFAA303E455 /* Pods_HostManager.framework */; };
BE4AC90D2B456AAA0062EF42 /* GDHostUserDefault.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE4AC90C2B456AAA0062EF42 /* GDHostUserDefault.swift */; };
BE595D34299E154400F40C46 /* GDHostManagerModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE595D33299E154400F40C46 /* GDHostManagerModule.swift */; };
BEABC713299F7D6E0043716F /* GDHostManagerModuleSwiftLoadFile.m in Sources */ = {isa = PBXBuildFile; fileRef = BEABC712299F7D6E0043716F /* GDHostManagerModuleSwiftLoadFile.m */; };
/* End PBXBuildFile section */
......@@ -27,7 +26,6 @@
38E95B5E2948AF5300DE03BC /* GDToolBox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GDToolBox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
56295AC70DF6EC920E40ACA8 /* Pods-HostManager.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HostManager.release.xcconfig"; path = "Target Support Files/Pods-HostManager/Pods-HostManager.release.xcconfig"; sourceTree = "<group>"; };
91155270A39AE89D506193AD /* Pods-HostManager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HostManager.debug.xcconfig"; path = "Target Support Files/Pods-HostManager/Pods-HostManager.debug.xcconfig"; sourceTree = "<group>"; };
BE4AC90C2B456AAA0062EF42 /* GDHostUserDefault.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GDHostUserDefault.swift; sourceTree = "<group>"; };
BE595D33299E154400F40C46 /* GDHostManagerModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GDHostManagerModule.swift; sourceTree = "<group>"; };
BEABC712299F7D6E0043716F /* GDHostManagerModuleSwiftLoadFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GDHostManagerModuleSwiftLoadFile.m; sourceTree = "<group>"; };
F66D9B2847F41AFAA303E455 /* Pods_HostManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HostManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
......@@ -70,7 +68,6 @@
38E95B522948AAE800DE03BC /* GDHostManager.swift */,
38E95B592948AD4500DE03BC /* Network */,
38E95B4B2948A10900DE03BC /* HostManager.h */,
BE4AC90C2B456AAA0062EF42 /* GDHostUserDefault.swift */,
);
path = HostManager;
sourceTree = "<group>";
......@@ -238,7 +235,6 @@
buildActionMask = 2147483647;
files = (
38E95B532948AAE800DE03BC /* GDHostManager.swift in Sources */,
BE4AC90D2B456AAA0062EF42 /* GDHostUserDefault.swift in Sources */,
38E95B5C2948AD7300DE03BC /* GDHostManagerAPI.swift in Sources */,
BE595D34299E154400F40C46 /* GDHostManagerModule.swift in Sources */,
38E95B5D2948AD7300DE03BC /* GDHostManagerProvider.swift in Sources */,
......
......@@ -14,37 +14,6 @@ import Moya
import GDRouter
import GDToolBox
public struct GDHostManagerStore {
static let apiArray = "moya_apiArray"
// 开发环境key
static let envKey = "EnvKey"
/// 当前使用的环信Key
static let hyphenateKey = "hyphenateKey"
struct Custom {
static let apiAddress = "moya_custom_apiAddress"
static let imageDownUrl = "moya_custom_imageDownUrl"
static let accountsUrl = "moya_custom_accountsUrl"
static let webUrl = "moya_custom_webUrl"
static let redPacketUrl = "moya_custom_redPacketUrl"
static let payUrl = "moya_custom_payUrl"
static let h5Url = "moya_custom_h5Url"
static let openapiUrl = "moya_custom_openapi"
}
struct Production {
static let apiAddress = "moya_production_apiAddress"
static let imageDownUrl = "moya_production_imageDownUrl"
static let accountsUrl = "moya_production_accountsUrl"
static let webUrl = "moya_production_webUrl"
static let redPacketUrl = "moya_production_redPacketUrl"
static let payUrl = "moya_production_payUrl"
static let h5Url = "moya_production_h5Url"
static let openapiUrl = "moya_production_openapi"
}
}
public class GDHostManager {
// 单例
......@@ -82,27 +51,27 @@ public class GDHostManager {
GDHostManager.apiAddress = userDefaults.string(forKey: GDHostManagerStore.Custom.apiAddress) ?? "https://zhibo.ishuaji.cn"
GDHostManager.imageDownUrl = userDefaults.string(forKey: GDHostManagerStore.Custom.imageDownUrl) ?? "https://zhibocdn.ishuaji.cn/comm"
GDHostManager.accountsUrl = userDefaults.string(forKey: GDHostManagerStore.Custom.accountsUrl) ?? "https://accounts.ishuaji.cn"
GDHostManager.webUrl = userDefaults.string(forKey: GDHostUserDefault.Custom.webUrl) ?? "https://zhiboweb.lvdou66.com"
// GDHostManager.redPacketUrl = userDefaults.string(forKey: GDHostUserDefault.Custom.redPacketUrl) ?? "http://money.lvdou66.com"
GDHostManager.payUrl = userDefaults.string(forKey: GDHostUserDefault.Custom.payUrl) ?? "https://pay.ishuaji.cn"
GDHostManager.h5Url = userDefaults.string(forKey: GDHostUserDefault.Custom.h5Url) ?? "https://activity.ishuaji.cn"
GDHostManager.openapi = userDefaults.string(forKey: GDHostUserDefault.Custom.openapiUrl) ?? "https://openapi.lvdou66.com"
GDHostManager.webUrl = userDefaults.string(forKey: GDHostManagerStore.Custom.webUrl) ?? "https://zhiboweb.lvdou66.com"
// GDHostManager.redPacketUrl = userDefaults.string(forKey: GDHostManagerStore.Custom.redPacketUrl) ?? "http://money.lvdou66.com"
GDHostManager.payUrl = userDefaults.string(forKey: GDHostManagerStore.Custom.payUrl) ?? "https://pay.ishuaji.cn"
GDHostManager.h5Url = userDefaults.string(forKey: GDHostManagerStore.Custom.h5Url) ?? "https://activity.ishuaji.cn"
GDHostManager.openapi = userDefaults.string(forKey: GDHostManagerStore.Custom.openapiUrl) ?? "https://openapi.lvdou66.com"
// 如果有自定义API,那么返回
if let apiAddress : String = userDefaults.string(forKey: GDHostUserDefault.Custom.apiAddress) {
if let apiAddress : String = userDefaults.string(forKey: GDHostManagerStore.Custom.apiAddress) {
if apiAddress != "" {
provider.request(.updateServer).mapToRequestResponse().subscribe(onSuccess: { result in
// 业务
let serversArray = result.json["servers"].arrayObject ?? []
if serversArray.count > 0 {
userDefaults.set(serversArray, forKey: GDHostUserDefault.apiArray)
userDefaults.set(serversArray, forKey: GDHostManagerStore.apiArray)
GDHostManager.apiArray = serversArray
if let currentApiDic : [String:Any] = GDHostManager.apiArray[GDHostManager.apiArrayIndex] as? [String:Any]
{
if let api : String = currentApiDic["api"] as? String {
if let envValue = UserDefaults.standard.value(forKey: GDHostUserDefault.envKey) as? Int {
if let envValue = UserDefaults.standard.value(forKey: GDHostManagerStore.envKey) as? Int {
let env = GDEnviroment(rawValue: envValue)
if env != .custom {
// 非自定义
......@@ -175,7 +144,7 @@ public class GDHostManager {
GDHostManager.apiArrayIndex = 0
let apiArray : [Any] = userDefaults.array(forKey: GDHostUserDefault.apiArray) ?? []
let apiArray : [Any] = userDefaults.array(forKey: GDHostManagerStore.apiArray) ?? []
if apiArray.count == 0 {
// 如果有API数据,那么加载数据
var basicServer1 = Dictionary<String, Any>()
......@@ -206,14 +175,14 @@ public class GDHostManager {
}
let historyapiAddress = userDefaults.string(forKey: GDHostUserDefault.Production.apiAddress) ?? ""
let historyimageDownUrl = userDefaults.string(forKey: GDHostUserDefault.Production.imageDownUrl) ?? ""
let historyaccountsUrl = userDefaults.string(forKey: GDHostUserDefault.Production.accountsUrl) ?? ""
let historywebUrl = userDefaults.string(forKey: GDHostUserDefault.Production.webUrl) ?? ""
let historyredPacketUrl = userDefaults.string(forKey: GDHostUserDefault.Production.redPacketUrl) ?? ""
let historypayUrl = userDefaults.string(forKey: GDHostUserDefault.Production.payUrl) ?? ""
let historyh5Url = userDefaults.string(forKey: GDHostUserDefault.Production.h5Url) ?? ""
let historyOpenapiUrl = userDefaults.string(forKey: GDHostUserDefault.Production.openapiUrl) ?? ""
let historyapiAddress = userDefaults.string(forKey: GDHostManagerStore.Production.apiAddress) ?? ""
let historyimageDownUrl = userDefaults.string(forKey: GDHostManagerStore.Production.imageDownUrl) ?? ""
let historyaccountsUrl = userDefaults.string(forKey: GDHostManagerStore.Production.accountsUrl) ?? ""
let historywebUrl = userDefaults.string(forKey: GDHostManagerStore.Production.webUrl) ?? ""
let historyredPacketUrl = userDefaults.string(forKey: GDHostManagerStore.Production.redPacketUrl) ?? ""
let historypayUrl = userDefaults.string(forKey: GDHostManagerStore.Production.payUrl) ?? ""
let historyh5Url = userDefaults.string(forKey: GDHostManagerStore.Production.h5Url) ?? ""
let historyOpenapiUrl = userDefaults.string(forKey: GDHostManagerStore.Production.openapiUrl) ?? ""
var currentapiAddress = ""
var currentimageDownUrl = ""
......@@ -284,14 +253,14 @@ public class GDHostManager {
currentOpenapiUrl = historyOpenapiUrl
}
userDefaults.set(currentapiAddress, forKey: GDHostUserDefault.Production.apiAddress)
userDefaults.set(currentimageDownUrl, forKey: GDHostUserDefault.Production.imageDownUrl)
userDefaults.set(currentaccountsUrl, forKey: GDHostUserDefault.Production.accountsUrl)
userDefaults.set(currentwebUrl, forKey: GDHostUserDefault.Production.webUrl)
userDefaults.set(currentredPacketUrl, forKey: GDHostUserDefault.Production.redPacketUrl)
userDefaults.set(currentpayUrl, forKey: GDHostUserDefault.Production.payUrl)
userDefaults.set(currenth5Url, forKey: GDHostUserDefault.Production.h5Url)
userDefaults.set(currentOpenapiUrl, forKey: GDHostUserDefault.Production.openapiUrl)
userDefaults.set(currentapiAddress, forKey: GDHostManagerStore.Production.apiAddress)
userDefaults.set(currentimageDownUrl, forKey: GDHostManagerStore.Production.imageDownUrl)
userDefaults.set(currentaccountsUrl, forKey: GDHostManagerStore.Production.accountsUrl)
userDefaults.set(currentwebUrl, forKey: GDHostManagerStore.Production.webUrl)
userDefaults.set(currentredPacketUrl, forKey: GDHostManagerStore.Production.redPacketUrl)
userDefaults.set(currentpayUrl, forKey: GDHostManagerStore.Production.payUrl)
userDefaults.set(currenth5Url, forKey: GDHostManagerStore.Production.h5Url)
userDefaults.set(currentOpenapiUrl, forKey: GDHostManagerStore.Production.openapiUrl)
GDHostManager.apiAddress = currentapiAddress
GDHostManager.imageDownUrl = currentimageDownUrl
......@@ -306,7 +275,7 @@ public class GDHostManager {
// 业务
let serversArray = result.json["servers"].arrayObject ?? []
if serversArray.count > 0 {
userDefaults.set(serversArray, forKey: GDHostUserDefault.apiArray)
userDefaults.set(serversArray, forKey: GDHostManagerStore.apiArray)
GDHostManager.apiArray = serversArray
if let currentApiDic : [String:Any] = GDHostManager.apiArray[GDHostManager.apiArrayIndex] as? [String:Any]
......
//
// GDHostUserDefault.swift
// HostManager
//
// Created by pierce on 2024/1/3.
//
import Foundation
struct GDHostUserDefault {
static let apiArray = "moya_apiArray"
// 开发环境key
static let envKey = "EnvKey"
/// 当前使用的环信Key
static let hyphenateKey = "hyphenateKey"
struct Custom {
static let apiAddress = "moya_custom_apiAddress"
static let imageDownUrl = "moya_custom_imageDownUrl"
static let accountsUrl = "moya_custom_accountsUrl"
static let webUrl = "moya_custom_webUrl"
static let redPacketUrl = "moya_custom_redPacketUrl"
static let payUrl = "moya_custom_payUrl"
static let h5Url = "moya_custom_h5Url"
static let openapiUrl = "moya_custom_openapi"
}
struct Production {
static let apiAddress = "moya_production_apiAddress"
static let imageDownUrl = "moya_production_imageDownUrl"
static let accountsUrl = "moya_production_accountsUrl"
static let webUrl = "moya_production_webUrl"
static let redPacketUrl = "moya_production_redPacketUrl"
static let payUrl = "moya_production_payUrl"
static let h5Url = "moya_production_h5Url"
static let openapiUrl = "moya_production_openapi"
}
}
......@@ -10,7 +10,11 @@ import GDToolBox
import GDRouter
import Bifrost
@objc public class GDHostManagerModule: NSObject, GDHostManagerSwiftService {
@objc public class GDHostManagerModule: NSObject, GDHostManagerSwiftRouter {
public func checkCurrentDNSAdress() {
GDHostManager.shared.checkCurrentDNSAdress()
}
public var apiAddress: String { GDHostManager.apiAddress }
......@@ -46,7 +50,7 @@ extension GDHostManagerModule: BifrostModuleProtocol {
}
@objc public static func swiftLoad() {
Bifrost.registerService(GDHostManagerService.self, withModule: self)
Bifrost.registerService(GDHostManagerRouter.self, withModule: self)
}
public static func setupModuleSynchronously() -> Bool {
......@@ -70,4 +74,15 @@ class GDHostPlugin: GDToolBoxAPIPlugin {
/// - Parameter params: 请求参数
/// - Returns: 添加完固定参数的完整请求参数
override func Params(_ params : [String : Any]) -> [String : Any] { GDHostManager.genarateParames(params) }
override var customIpHostEnable: Bool {
GDRouter.Test?.env == .custom
}
override var customSocketIp: String {
(UserDefaults.standard.value(forKey: GDHostManagerStore.Socket.customIP) as? String) ?? ""
}
override var customSocketPort: String {
(UserDefaults.standard.value(forKey: GDHostManagerStore.Socket.customPort) as? String) ?? ""
}
}
......@@ -60,8 +60,6 @@ use_frameworks!
# pod 'HyphenateChat', '3.8.3.1'
# pod "TSVoiceConverter", '0.1.6'
#
# # 一键登录
# pod 'mob_secverify'
# # Crashlytics Firebase 的崩溃统计
# pod 'Firebase/Crashlytics'
#
......@@ -119,6 +117,34 @@ target 'HostManager' do
end
target 'GDLoginAndRegistModule' do
use_frameworks!
inhibit_all_warnings!
project 'Module/GDLoginAndRegistModule/GDLoginAndRegistModule.xcodeproj'
pod 'GDToolBox', :path => './LocalPodSpec/GDToolBox'
pod 'GDRouter', :path => './LocalPodSpec/GDRouter'
# Lottie 动画
pod 'lottie-ios', '2.5.2'
# 一键登录
pod 'mob_secverify'
end
target 'GDTest' do
use_frameworks!
inhibit_all_warnings!
project 'Module/GDTest/GDTest.xcodeproj'
pod 'GDToolBox', :path => './LocalPodSpec/GDToolBox'
pod 'GDRouter', :path => './LocalPodSpec/GDRouter'
end
plugin 'cocoapods-pod-sign'
skip_pod_bundle_sign # 用来跳过Xcode对bundle资源的签名
......
......@@ -44,7 +44,11 @@ PODS:
- JXPageControl/Common
- JXSegmentedView (1.3.0)
- Kingfisher (7.10.1)
- lottie-ios (2.5.2)
- MJRefresh (3.7.6)
- mob_secverify (3.5.0):
- MOBFoundation
- MOBFoundation (3.2.60)
- Moya/Core (15.0.0):
- Alamofire (~> 5.0)
- Moya/RxSwift (15.0.0):
......@@ -87,6 +91,8 @@ DEPENDENCIES:
- AliyunOSSiOS
- GDRouter (from `./LocalPodSpec/GDRouter`)
- GDToolBox (from `./LocalPodSpec/GDToolBox`)
- lottie-ios (= 2.5.2)
- mob_secverify
SPEC REPOS:
https://github.com/CocoaPods/Specs.git:
......@@ -99,7 +105,10 @@ SPEC REPOS:
- JXPageControl
- JXSegmentedView
- Kingfisher
- lottie-ios
- MJRefresh
- mob_secverify
- MOBFoundation
- Moya
- ObjcExceptionBridging
- ReachabilitySwift
......@@ -136,7 +145,10 @@ SPEC CHECKSUMS:
JXPageControl: e9487b39e2e58fc17790833214f3b8e935bef98b
JXSegmentedView: fec0d335355b6e019c494fe2e030bde8a36d2df6
Kingfisher: bc5abe80a8e0144537ef1dd5a0b2621b04f7f439
lottie-ios: 3fef45d3fabe63e3c7c2eb603dd64ddfffc73062
MJRefresh: 2fe7fb43a5167ceda20bb7e63f130c04fd1814a5
mob_secverify: f3c6fb24e7213075f84a550001041250fb90c2fb
MOBFoundation: d1ffddeaac634bb13f21a5a5e3445baee8d405d8
Moya: 138f0573e53411fb3dc17016add0b748dfbd78ee
ObjcExceptionBridging: c30e00eb3700467e695faeea30e26e18bd445001
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
......@@ -155,6 +167,6 @@ SPEC CHECKSUMS:
XCGLogger: 1943831ef907df55108b0b18657953f868de973b
YYKit: 7cda43304a8dc3696c449041e2cb3107b4e236e7
PODFILE CHECKSUM: 1b9657e911d16b2322c8413d3a6be150c803b102
PODFILE CHECKSUM: 3ab4bf85f8b60bc5283727a990f31cc20da9c13a
COCOAPODS: 1.11.3
......@@ -44,7 +44,11 @@ PODS:
- JXPageControl/Common
- JXSegmentedView (1.3.0)
- Kingfisher (7.10.1)
- lottie-ios (2.5.2)
- MJRefresh (3.7.6)
- mob_secverify (3.5.0):
- MOBFoundation
- MOBFoundation (3.2.60)
- Moya/Core (15.0.0):
- Alamofire (~> 5.0)
- Moya/RxSwift (15.0.0):
......@@ -87,6 +91,8 @@ DEPENDENCIES:
- AliyunOSSiOS
- GDRouter (from `./LocalPodSpec/GDRouter`)
- GDToolBox (from `./LocalPodSpec/GDToolBox`)
- lottie-ios (= 2.5.2)
- mob_secverify
SPEC REPOS:
https://github.com/CocoaPods/Specs.git:
......@@ -99,7 +105,10 @@ SPEC REPOS:
- JXPageControl
- JXSegmentedView
- Kingfisher
- lottie-ios
- MJRefresh
- mob_secverify
- MOBFoundation
- Moya
- ObjcExceptionBridging
- ReachabilitySwift
......@@ -136,7 +145,10 @@ SPEC CHECKSUMS:
JXPageControl: e9487b39e2e58fc17790833214f3b8e935bef98b
JXSegmentedView: fec0d335355b6e019c494fe2e030bde8a36d2df6
Kingfisher: bc5abe80a8e0144537ef1dd5a0b2621b04f7f439
lottie-ios: 3fef45d3fabe63e3c7c2eb603dd64ddfffc73062
MJRefresh: 2fe7fb43a5167ceda20bb7e63f130c04fd1814a5
mob_secverify: f3c6fb24e7213075f84a550001041250fb90c2fb
MOBFoundation: d1ffddeaac634bb13f21a5a5e3445baee8d405d8
Moya: 138f0573e53411fb3dc17016add0b748dfbd78ee
ObjcExceptionBridging: c30e00eb3700467e695faeea30e26e18bd445001
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
......@@ -155,6 +167,6 @@ SPEC CHECKSUMS:
XCGLogger: 1943831ef907df55108b0b18657953f868de973b
YYKit: 7cda43304a8dc3696c449041e2cb3107b4e236e7
PODFILE CHECKSUM: 1b9657e911d16b2322c8413d3a6be150c803b102
PODFILE CHECKSUM: 3ab4bf85f8b60bc5283727a990f31cc20da9c13a
COCOAPODS: 1.11.3
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -8,6 +8,12 @@
location = "group:Module"
name = "Module">
<FileRef
location = "group:GDTest/GDTest.xcodeproj">
</FileRef>
<FileRef
location = "group:GDLoginAndRegistModule/GDLoginAndRegistModule.xcodeproj">
</FileRef>
<FileRef
location = "group:GDUserInfoManager/GDUserInfoManager.xcodeproj">
</FileRef>
<FileRef
......
......@@ -20,10 +20,26 @@
BE595D2A299E107300F40C46 /* TencentOpenAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE595D29299E107300F40C46 /* TencentOpenAPI.framework */; };
BE6F41F62B47AD990058C826 /* GDDataManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE6F41F52B47AD990058C826 /* GDDataManager.framework */; };
BE7B3C612B45736B0068FDDE /* GDUserInfoManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE7B3C602B45736B0068FDDE /* GDUserInfoManager.framework */; };
BEB7BC0C2B4941D900B3D9B1 /* GDTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BEB7BC0A2B4941D900B3D9B1 /* GDTest.framework */; };
BEB7BC0E2B4941D900B3D9B1 /* GDTestBundle.bundle in Embed PlugIns */ = {isa = PBXBuildFile; fileRef = BEB7BC0B2B4941D900B3D9B1 /* GDTestBundle.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
BEFDEDDA2B4028C40056254C /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BEFDEDD92B4028C40056254C /* SystemConfiguration.framework */; };
BEFDEDE02B4417BC0056254C /* HostManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BEFDEDDF2B4417BC0056254C /* HostManager.framework */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
BEB7BC102B4941D900B3D9B1 /* Embed PlugIns */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 7;
files = (
BEB7BC0E2B4941D900B3D9B1 /* GDTestBundle.bundle in Embed PlugIns */,
);
name = "Embed PlugIns";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
0D55969CC2888C20039DBB6D /* Pods_TealiveModule.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TealiveModule.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3888D62329407F5E00807031 /* TealiveModule.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TealiveModule.app; sourceTree = BUILT_PRODUCTS_DIR; };
......@@ -55,7 +71,11 @@
BE595D39299E19CB00F40C46 /* GDDataManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GDDataManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BE595D3C299E19D900F40C46 /* HostManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = HostManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BE6F41F52B47AD990058C826 /* GDDataManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GDDataManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BE6F42B82B4901280058C826 /* GDLoginAndRegistModule.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GDLoginAndRegistModule.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BE6F42B92B4901280058C826 /* GDLoginAndRegistModuleBundle.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = GDLoginAndRegistModuleBundle.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
BE7B3C602B45736B0068FDDE /* GDUserInfoManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GDUserInfoManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BEB7BC0A2B4941D900B3D9B1 /* GDTest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GDTest.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BEB7BC0B2B4941D900B3D9B1 /* GDTestBundle.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = GDTestBundle.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
BEFDEDD92B4028C40056254C /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
BEFDEDDB2B4416490056254C /* GDDataManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GDDataManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BEFDEDDF2B4417BC0056254C /* HostManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = HostManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
......@@ -76,6 +96,7 @@
BE352D15299CE2D700FE07AB /* TencentOpenAPI.framework in Frameworks */,
BE352D0C299CE1D800FE07AB /* CoreMotion.framework in Frameworks */,
BE7B3C612B45736B0068FDDE /* GDUserInfoManager.framework in Frameworks */,
BEB7BC0C2B4941D900B3D9B1 /* GDTest.framework in Frameworks */,
1E7D81FAF6A4CFE803CA4C3B /* Pods_TealiveModule.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
......@@ -118,6 +139,10 @@
8C945B4FCAACDD2D17AF8C17 /* Frameworks */ = {
isa = PBXGroup;
children = (
BEB7BC0A2B4941D900B3D9B1 /* GDTest.framework */,
BEB7BC0B2B4941D900B3D9B1 /* GDTestBundle.bundle */,
BE6F42B82B4901280058C826 /* GDLoginAndRegistModule.framework */,
BE6F42B92B4901280058C826 /* GDLoginAndRegistModuleBundle.bundle */,
BE6F41F52B47AD990058C826 /* GDDataManager.framework */,
BE7B3C602B45736B0068FDDE /* GDUserInfoManager.framework */,
BE4AC9072B45681C0062EF42 /* GDUserInfoManager.framework */,
......@@ -178,6 +203,7 @@
3888D62129407F5E00807031 /* Resources */,
B0716C8B90805F351BDD6020 /* [CP] Embed Pods Frameworks */,
3D669BE08025764EB79439FC /* [CP] Copy Pods Resources */,
BEB7BC102B4941D900B3D9B1 /* Embed PlugIns */,
);
buildRules = (
);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment