Commit 17256e0ff5d643dda9de2f74a49c433c14f2f5ba
1 parent
97eab73a
提交添加网家家请求库
Showing
8 changed files
with
172 additions
and
113 deletions
Podfile
| 1 | 1 | # Uncomment the next line to define a global platform for your project |
| 2 | 2 | # platform :ios, '9.0' |
| 3 | +source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' | |
| 4 | +#source 'https://github.com/CocoaPods/Specs.git' | |
| 5 | +#source 'https://cdn.cocoapods.org' | |
| 6 | + | |
| 7 | +source 'http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git' | |
| 8 | +source 'http://bj.gitlab.cnlive.com/DSIOSTeam/DSSpecRepos.git' | |
| 3 | 9 | |
| 4 | 10 | target 'metaCode' do |
| 5 | 11 | # Comment the next line if you don't want to use dynamic frameworks |
| 6 | 12 | use_frameworks! |
| 7 | 13 | |
| 8 | - pod 'Alamofire' | |
| 9 | - pod 'Moya' | |
| 10 | - pod 'SwiftyJSON' | |
| 11 | - pod 'YYCategories' | |
| 14 | +# pod 'Alamofire' | |
| 15 | +# pod 'Moya' | |
| 16 | +# pod 'SwiftyJSON' | |
| 17 | +# pod 'YYCategories' | |
| 18 | +# pod 'CryptoSwift' | |
| 12 | 19 | # Pods for metaCode |
| 20 | + | |
| 21 | + pod 'AFNetworking' | |
| 22 | + #基础请求组件库 | |
| 23 | + pod 'CNLiveRequestBastKit' | |
| 13 | 24 | |
| 14 | 25 | target 'metaCodeTests' do |
| 15 | 26 | inherit! :search_paths | ... | ... |
metaCode.xcodeproj/project.pbxproj
| ... | ... | @@ -12,8 +12,7 @@ |
| 12 | 12 | 796398932A260C0100D045EB /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963988C2A260C0100D045EB /* ViewController.swift */; }; |
| 13 | 13 | 796398942A260C0100D045EB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963988D2A260C0100D045EB /* AppDelegate.swift */; }; |
| 14 | 14 | 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */; }; |
| 15 | - 79A68C4A2A26E6CE00DC3B43 /* Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79A68C492A26E6CE00DC3B43 /* Network.swift */; }; | |
| 16 | - 79A68C4C2A26EA6000DC3B43 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79A68C4B2A26EA6000DC3B43 /* API.swift */; }; | |
| 15 | + 79A68C542A27307900DC3B43 /* CNLiveConfigMacro.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79A68C532A27307900DC3B43 /* CNLiveConfigMacro.swift */; }; | |
| 17 | 16 | 818163C32A25CFCC00579C86 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 818163C12A25CFCC00579C86 /* Main.storyboard */; }; |
| 18 | 17 | 818163C52A25CFCF00579C86 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 818163C42A25CFCF00579C86 /* Assets.xcassets */; }; |
| 19 | 18 | 818163C82A25CFCF00579C86 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 818163C62A25CFCF00579C86 /* LaunchScreen.storyboard */; }; |
| ... | ... | @@ -50,9 +49,8 @@ |
| 50 | 49 | 7963988C2A260C0100D045EB /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; }; |
| 51 | 50 | 7963988D2A260C0100D045EB /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; |
| 52 | 51 | 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CNLiveBaseViewController.swift; sourceTree = "<group>"; }; |
| 53 | - 79A68C492A26E6CE00DC3B43 /* Network.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = "<group>"; }; | |
| 54 | - 79A68C4B2A26EA6000DC3B43 /* API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = "<group>"; }; | |
| 55 | 52 | 79A68C512A26F59C00DC3B43 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = metaCode/Info.plist; sourceTree = "<group>"; }; |
| 53 | + 79A68C532A27307900DC3B43 /* CNLiveConfigMacro.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveConfigMacro.swift; sourceTree = "<group>"; }; | |
| 56 | 54 | 818163B82A25CFCC00579C86 /* metaCode.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = metaCode.app; sourceTree = BUILT_PRODUCTS_DIR; }; |
| 57 | 55 | 818163C22A25CFCC00579C86 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; |
| 58 | 56 | 818163C42A25CFCF00579C86 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; |
| ... | ... | @@ -154,7 +152,6 @@ |
| 154 | 152 | 796398912A260C0100D045EB /* Common */ = { |
| 155 | 153 | isa = PBXGroup; |
| 156 | 154 | children = ( |
| 157 | - 7963989E2A260E7600D045EB /* Network */, | |
| 158 | 155 | 7963989B2A260E6200D045EB /* Base */, |
| 159 | 156 | ); |
| 160 | 157 | path = Common; |
| ... | ... | @@ -163,6 +160,7 @@ |
| 163 | 160 | 796398922A260C0100D045EB /* Config */ = { |
| 164 | 161 | isa = PBXGroup; |
| 165 | 162 | children = ( |
| 163 | + 79A68C532A27307900DC3B43 /* CNLiveConfigMacro.swift */, | |
| 166 | 164 | ); |
| 167 | 165 | path = Config; |
| 168 | 166 | sourceTree = "<group>"; |
| ... | ... | @@ -185,15 +183,6 @@ |
| 185 | 183 | path = Base; |
| 186 | 184 | sourceTree = "<group>"; |
| 187 | 185 | }; |
| 188 | - 7963989E2A260E7600D045EB /* Network */ = { | |
| 189 | - isa = PBXGroup; | |
| 190 | - children = ( | |
| 191 | - 79A68C492A26E6CE00DC3B43 /* Network.swift */, | |
| 192 | - 79A68C4B2A26EA6000DC3B43 /* API.swift */, | |
| 193 | - ); | |
| 194 | - path = Network; | |
| 195 | - sourceTree = "<group>"; | |
| 196 | - }; | |
| 197 | 186 | 818163AF2A25CFCC00579C86 = { |
| 198 | 187 | isa = PBXGroup; |
| 199 | 188 | children = ( |
| ... | ... | @@ -456,6 +445,7 @@ |
| 456 | 445 | ); |
| 457 | 446 | name = "[CP] Embed Pods Frameworks"; |
| 458 | 447 | outputFileListPaths = ( |
| 448 | + "${PODS_ROOT}/Target Support Files/Pods-metaCode/Pods-metaCode-frameworks-${CONFIGURATION}-output-files.xcfilelist", | |
| 459 | 449 | ); |
| 460 | 450 | runOnlyForDeploymentPostprocessing = 0; |
| 461 | 451 | shellPath = /bin/sh; |
| ... | ... | @@ -493,9 +483,8 @@ |
| 493 | 483 | files = ( |
| 494 | 484 | 796398942A260C0100D045EB /* AppDelegate.swift in Sources */, |
| 495 | 485 | 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */, |
| 496 | - 79A68C4A2A26E6CE00DC3B43 /* Network.swift in Sources */, | |
| 486 | + 79A68C542A27307900DC3B43 /* CNLiveConfigMacro.swift in Sources */, | |
| 497 | 487 | 796398932A260C0100D045EB /* ViewController.swift in Sources */, |
| 498 | - 79A68C4C2A26EA6000DC3B43 /* API.swift in Sources */, | |
| 499 | 488 | ); |
| 500 | 489 | runOnlyForDeploymentPostprocessing = 0; |
| 501 | 490 | }; |
| ... | ... | @@ -672,10 +661,11 @@ |
| 672 | 661 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
| 673 | 662 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; |
| 674 | 663 | CODE_SIGN_STYLE = Automatic; |
| 675 | - CURRENT_PROJECT_VERSION = 1; | |
| 664 | + CURRENT_PROJECT_VERSION = 1.0; | |
| 676 | 665 | DEVELOPMENT_TEAM = 94X49GG3ZW; |
| 677 | 666 | GENERATE_INFOPLIST_FILE = YES; |
| 678 | 667 | INFOPLIST_FILE = metaCode/Info.plist; |
| 668 | + INFOPLIST_KEY_CFBundleDisplayName = "元码"; | |
| 679 | 669 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; |
| 680 | 670 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard; |
| 681 | 671 | INFOPLIST_KEY_UIMainStoryboardFile = Main; |
| ... | ... | @@ -687,7 +677,7 @@ |
| 687 | 677 | "@executable_path/Frameworks", |
| 688 | 678 | ); |
| 689 | 679 | MARKETING_VERSION = 1.0; |
| 690 | - PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode; | |
| 680 | + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode.debug; | |
| 691 | 681 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| 692 | 682 | SWIFT_EMIT_LOC_STRINGS = YES; |
| 693 | 683 | SWIFT_VERSION = 5.0; |
| ... | ... | @@ -702,10 +692,11 @@ |
| 702 | 692 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
| 703 | 693 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; |
| 704 | 694 | CODE_SIGN_STYLE = Automatic; |
| 705 | - CURRENT_PROJECT_VERSION = 1; | |
| 695 | + CURRENT_PROJECT_VERSION = 1.0; | |
| 706 | 696 | DEVELOPMENT_TEAM = 94X49GG3ZW; |
| 707 | 697 | GENERATE_INFOPLIST_FILE = YES; |
| 708 | 698 | INFOPLIST_FILE = metaCode/Info.plist; |
| 699 | + INFOPLIST_KEY_CFBundleDisplayName = "元码"; | |
| 709 | 700 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; |
| 710 | 701 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard; |
| 711 | 702 | INFOPLIST_KEY_UIMainStoryboardFile = Main; |
| ... | ... | @@ -717,7 +708,7 @@ |
| 717 | 708 | "@executable_path/Frameworks", |
| 718 | 709 | ); |
| 719 | 710 | MARKETING_VERSION = 1.0; |
| 720 | - PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode; | |
| 711 | + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode.debug; | |
| 721 | 712 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| 722 | 713 | SWIFT_EMIT_LOC_STRINGS = YES; |
| 723 | 714 | SWIFT_VERSION = 5.0; | ... | ... |
metaCode/Classes/Common/Base/CNLiveBaseViewController.swift
| ... | ... | @@ -8,5 +8,46 @@ |
| 8 | 8 | import UIKit |
| 9 | 9 | import Foundation |
| 10 | 10 | |
| 11 | - | |
| 11 | +class CNLiveBaseViewController: UIViewController { | |
| 12 | + | |
| 13 | + deinit { | |
| 14 | + log("主界面已销毁") | |
| 15 | + } | |
| 16 | + | |
| 17 | + override func viewDidLoad() { | |
| 18 | + self.view.backgroundColor = .white | |
| 19 | + | |
| 20 | + configIOS11() | |
| 21 | + configIOS15() | |
| 22 | + } | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + // MARK: - iOS 适配 | |
| 27 | + | |
| 28 | + func configIOS11() { | |
| 29 | + /// 适配 iOS 11.0 ,iOS11以后,控制器的automaticallyAdjustsScrollViewInsets已经废弃,所以默认就会是YES | |
| 30 | + /// iOS 11新增:adjustContentInset 和 contentInsetAdjustmentBehavior 来处理滚动区域 | |
| 31 | + if #available(iOS 11.0, *) { | |
| 32 | + UITableView.appearance().estimatedRowHeight = 0 | |
| 33 | + UITableView.appearance().estimatedSectionHeaderHeight = 0 | |
| 34 | + UITableView.appearance().estimatedSectionFooterHeight = 0 | |
| 35 | + // 防止列表/页面偏移 | |
| 36 | + UIScrollView.appearance().contentInsetAdjustmentBehavior = .never | |
| 37 | + UITableView.appearance().contentInsetAdjustmentBehavior = .never | |
| 38 | + UICollectionView.appearance().contentInsetAdjustmentBehavior = .never | |
| 39 | + } else { | |
| 40 | + self.automaticallyAdjustsScrollViewInsets = false | |
| 41 | + } | |
| 42 | + } | |
| 43 | + | |
| 44 | + func configIOS15() { | |
| 45 | + // 适配iOS15,tableView的section设置 | |
| 46 | + // iOS15中,tableView会给每一个section的顶部(header以上)再加上一个22像素的高度,形成一个section和section之间的间距 | |
| 47 | + // 新增的sectionHeaderTopPadding会使表头新增一段间隙,默认为UITableViewAutomaticDimension | |
| 48 | + if #available(iOS 15.0, *) { | |
| 49 | + UITableView.appearance().sectionHeaderTopPadding = 0 | |
| 50 | + } | |
| 51 | + } | |
| 52 | +} | |
| 12 | 53 | ... | ... |
metaCode/Classes/Common/Network/API.swift deleted
100644 → 0
| 1 | -// | |
| 2 | -// API.swift | |
| 3 | -// metaCode | |
| 4 | -// | |
| 5 | -// Created by open on 2023/5/31. | |
| 6 | -// | |
| 7 | - | |
| 8 | -import Foundation | |
| 9 | -import Moya | |
| 10 | - | |
| 11 | -let base_URL = "https://api.cnlive.com/open/api2/" | |
| 12 | - | |
| 13 | -enum API{ | |
| 14 | - //登陆api | |
| 15 | - case requestLoginApi | |
| 16 | - //获取验证码api | |
| 17 | - case requestAuthCodeApi | |
| 18 | -} | |
| 19 | - | |
| 20 | -extension API : TargetType { | |
| 21 | - | |
| 22 | - //此处是为了区分不同根请求 | |
| 23 | - var baseURL: URL { | |
| 24 | - switch self { | |
| 25 | - case .requestLoginApi: | |
| 26 | - return URL.init(string: base_URL)! | |
| 27 | - default: | |
| 28 | - return URL.init(string: base_URL)! | |
| 29 | - } | |
| 30 | - } | |
| 31 | - | |
| 32 | - var path: String { | |
| 33 | - switch self{ | |
| 34 | - case .requestLoginApi: | |
| 35 | - return "user/loginInMetaCode" | |
| 36 | - case .requestAuthCodeApi: | |
| 37 | - return "user/sendVerifyCode4server" | |
| 38 | - } | |
| 39 | - } | |
| 40 | - | |
| 41 | - var method: Moya.Method { | |
| 42 | - switch self{ | |
| 43 | - default: | |
| 44 | - return.post | |
| 45 | - } | |
| 46 | - } | |
| 47 | - | |
| 48 | - var task: Moya.Task { | |
| 49 | - switch self{ | |
| 50 | - default: | |
| 51 | - return .requestPlain | |
| 52 | - } | |
| 53 | - } | |
| 54 | - | |
| 55 | - var headers: [String : String]? { | |
| 56 | - return ["Content-Type":"application/x-www-form-urlencoded"] | |
| 57 | - } | |
| 58 | - | |
| 59 | - | |
| 60 | - | |
| 61 | - | |
| 62 | -} |
metaCode/Classes/Common/Network/Network.swift deleted
100644 → 0
| 1 | -// | |
| 2 | -// Network.swift | |
| 3 | -// metaCode | |
| 4 | -// | |
| 5 | -// Created by open on 2023/5/31. | |
| 6 | -// | |
| 7 | - | |
| 8 | -import Foundation | |
| 9 | -import UIKit | |
| 10 | -import Alamofire | |
| 11 | -import Moya | |
| 12 | -import SwiftyJSON | |
| 13 | - | |
| 14 | - | |
| 15 | -class Network: NSObject { | |
| 16 | - //请求成功 | |
| 17 | - typealias successCallBack = ((Int,JSON) -> (Void)) | |
| 18 | - //请求失败 | |
| 19 | - typealias failedCallBack = ((Int,String) -> (Void)) | |
| 20 | - //网络错误 | |
| 21 | - typealias errorCallBack = (() -> (Void)) | |
| 22 | - | |
| 23 | - | |
| 24 | - | |
| 25 | -} | |
| 26 | - |
metaCode/Classes/Config/CNLiveConfigMacro.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveConfigMacro.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/5/31. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | +import UIKit | |
| 10 | + | |
| 11 | +/// App 显示名称 | |
| 12 | +let kAppDisplayName = Bundle.main.infoDictionary?["CFBundleDisplayName"] ?? "" | |
| 13 | +/// App BundleName | |
| 14 | +let kAppName = Bundle.main.infoDictionary![kCFBundleNameKey as String] ?? "" | |
| 15 | +/// App BundleID | |
| 16 | +let kAppBundleID = Bundle.main.bundleIdentifier ?? "" | |
| 17 | +/// App 版本号 | |
| 18 | +let kAppVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] ?? "" | |
| 19 | +/// App BuildNumber | |
| 20 | +let kAppBuildNumber = Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) ?? "" | |
| 21 | + | |
| 22 | +/// App Language en | |
| 23 | +let kAPPLanguage = NSLocale.preferredLanguages[0] | |
| 24 | + | |
| 25 | + | |
| 26 | +let kApplication = UIApplication.shared | |
| 27 | +let keyWindow = UIApplication.shared.keyWindow | |
| 28 | +let appDelegate = UIApplication.shared.delegate | |
| 29 | +let userDefaults = UserDefaults.standard | |
| 30 | +let notificationCenter = NotificationCenter.default | |
| 31 | + | |
| 32 | + | |
| 33 | +// MARK: - 打印输出 | |
| 34 | + | |
| 35 | +/// 默认打印 | |
| 36 | +public func log<T>(_ message: T) { | |
| 37 | +#if DEBUG | |
| 38 | + print("\(message)") | |
| 39 | +#endif | |
| 40 | +} | |
| 41 | + | |
| 42 | +/// 全部打印 | |
| 43 | +public func aLog<T>(_ message: T, file: String = #file, funcName: String = #function, lineNum: Int = #line) { | |
| 44 | +#if DEBUG | |
| 45 | + let fileName = (file as NSString).lastPathComponent | |
| 46 | + print("\n********** JhAllLog-satrt ***********\n\n文件名称:\(fileName)\n方法名称:\(funcName)\n行数:\(lineNum)\n信息:\n\n\(message)\n\n********** JhAllLog-end ***********\n") | |
| 47 | +#endif | |
| 48 | +} | ... | ... |
metaCode/Classes/Other/AppDelegate.swift
| ... | ... | @@ -6,6 +6,8 @@ |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | import UIKit |
| 9 | +import CNLiveRequestBastKit | |
| 10 | + | |
| 9 | 11 | |
| 10 | 12 | @main |
| 11 | 13 | class AppDelegate: UIResponder, UIApplicationDelegate { |
| ... | ... | @@ -20,6 +22,18 @@ class AppDelegate: UIResponder, UIApplicationDelegate { |
| 20 | 22 | window?.rootViewController = ViewController.init() |
| 21 | 23 | window?.makeKeyAndVisible() |
| 22 | 24 | |
| 25 | + | |
| 26 | + let kAppBundleID = Bundle.main.bundleIdentifier ?? "" | |
| 27 | + let uuid : String = UIDevice.current.identifierForVendor?.uuidString.replacingOccurrences(of: "-", with: "") ?? "" | |
| 28 | + let ver : String = Bundle.main.infoDictionary?["CFBundleVersion"] as! String | |
| 29 | + let p : Dictionary = ["platform_id":kAppBundleID,"uuid":uuid,"plat":"i","ver":ver,"appId":"802_li40qhp922","timestamp":String(NSNumber(floatLiteral: Date().timeIntervalSince1970).intValue),"clientPlat":"i","frmId":"ios"] | |
| 30 | + CNLiveNetworking.setupDefaultParam(p) | |
| 31 | + CNLiveNetworking.setupShowDataResult(false) | |
| 32 | + CNLiveNetworking.setupSignKey("ae3a7ad3e4b9beb7cfe2078db648ebb89aa249ca2e82ac") | |
| 33 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | |
| 34 | + CNLiveNetworking.setResponseSerializerType(.JSON) | |
| 35 | + | |
| 36 | + | |
| 23 | 37 | return true |
| 24 | 38 | } |
| 25 | 39 | ... | ... |
metaCode/Classes/Other/ViewController.swift
| ... | ... | @@ -6,6 +6,7 @@ |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | import UIKit |
| 9 | +import CNLiveRequestBastKit | |
| 9 | 10 | |
| 10 | 11 | class ViewController: UIViewController { |
| 11 | 12 | |
| ... | ... | @@ -13,6 +14,47 @@ class ViewController: UIViewController { |
| 13 | 14 | super.viewDidLoad() |
| 14 | 15 | // Do any additional setup after loading the view. |
| 15 | 16 | self.view.backgroundColor = .gray |
| 17 | + | |
| 18 | + | |
| 19 | + let button = UIButton() | |
| 20 | + button.frame = CGRect(x: 100, y: 100, width: 100, height: 40) | |
| 21 | + button.setTitle("请求吧", for: .normal) | |
| 22 | + button.setTitle("请求吧", for: .highlighted) | |
| 23 | + button.backgroundColor = UIColor.red | |
| 24 | + button.setTitleColor(UIColor.gray, for: .normal) | |
| 25 | + button.addTarget(self, action: #selector(touchButton), for: .touchUpInside) | |
| 26 | + button.sizeToFit() | |
| 27 | + self.view.addSubview(button) | |
| 28 | + | |
| 29 | + let button_sha = UIButton() | |
| 30 | + button_sha.frame = CGRect(x: 100, y: 200, width: 100, height: 40) | |
| 31 | + button_sha.setTitle("验证码", for: .normal) | |
| 32 | + button_sha.setTitle("验证码", for: .highlighted) | |
| 33 | + button_sha.backgroundColor = UIColor.red | |
| 34 | + button_sha.setTitleColor(UIColor.gray, for: .normal) | |
| 35 | + button_sha.addTarget(self, action: #selector(shaButton), for: .touchUpInside) | |
| 36 | + button_sha.sizeToFit() | |
| 37 | + self.view.addSubview(button_sha) | |
| 38 | + } | |
| 39 | + | |
| 40 | + @objc func shaButton() -> Void { | |
| 41 | + let param = ["mobile":"18519714533","countryCode":"86"] | |
| 42 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | |
| 43 | + CNLiveNetworking.setupShowDataResult(true) | |
| 44 | + CNLiveNetworking.requestNetwork(with: .POST, urlString: "https://api.cnlive.com/open/api2/user/sendVerifyCode4server", param: param, cacheType: .networkOnly) { task, result, error in | |
| 45 | + print("\(String(describing: result))") | |
| 46 | + } | |
| 47 | + } | |
| 48 | + | |
| 49 | + @objc func touchButton() { | |
| 50 | + let param = ["userName":"18519714533","countryCode":"86","verificationCode":"599011","inviterId":"","ver":"1"] | |
| 51 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | |
| 52 | + CNLiveNetworking.setupShowDataResult(true) | |
| 53 | + CNLiveNetworking.requestNetwork(with: .POST, urlString: "https://api.cnlive.com/open/api2/user/loginInMetaCode", param: param, cacheType: .networkOnly) { task, result, error in | |
| 54 | + print("\(String(describing: result))") | |
| 55 | + } | |
| 56 | + | |
| 57 | + | |
| 16 | 58 | } |
| 17 | 59 | |
| 18 | 60 | ... | ... |