
新增.gitignore、Podfile和Podfile.lock文件以管理项目依赖,添加README.md文件提供项目简介和安装步骤,创建NIMSessionManager、ClientConfig、LogManager和NetworkManager等管理类以支持网络请求和日志记录功能,更新AppDelegate和ContentView以集成NIM SDK和实现用户登录功能。
60 lines
1.8 KiB
Swift
60 lines
1.8 KiB
Swift
import Foundation
|
|
import Alamofire
|
|
|
|
enum HttpRequestMethod: String {
|
|
case get = "GET"
|
|
case post = "POST"
|
|
// 可扩展其他方法
|
|
}
|
|
|
|
typealias HttpRequestCompletion = (Result<Data, Error>) -> Void
|
|
|
|
class API {
|
|
// 通用请求方法
|
|
static func makeRequest(
|
|
route: String,
|
|
method: HttpRequestMethod,
|
|
params: [String: Any],
|
|
completion: @escaping HttpRequestCompletion
|
|
) {
|
|
let httpMethod: HTTPMethod = {
|
|
switch method {
|
|
case .get: return .get
|
|
case .post: return .post
|
|
}
|
|
}()
|
|
|
|
NetworkManager.shared.request(route, method: httpMethod, parameters: params) { (result: Result<Data, NetworkError>) in
|
|
switch result {
|
|
case .success(let data):
|
|
completion(.success(data))
|
|
case .failure(let error):
|
|
completion(.failure(error))
|
|
}
|
|
}
|
|
}
|
|
|
|
// 具体接口方法示例
|
|
static func getUserInfo(uid: String, completion: @escaping HttpRequestCompletion) {
|
|
let route = "user/get"
|
|
let params = ["uid": uid]
|
|
makeRequest(route: route, method: .get, params: params, completion: completion)
|
|
}
|
|
|
|
static func phoneSmsCode(mobile: String, type: String, phoneAreaCode: String, completion: @escaping HttpRequestCompletion) {
|
|
let route = "sms/getCode"
|
|
let params = ["mobile": mobile, "type": type, "phoneAreaCode": phoneAreaCode]
|
|
makeRequest(route: route, method: .post, params: params, completion: completion)
|
|
}
|
|
}
|
|
|
|
extension API //ClientConfig
|
|
{
|
|
static func clientInit(completion: @escaping HttpRequestCompletion) {
|
|
makeRequest(route: "client/init",
|
|
method: .get,
|
|
params: [:],
|
|
completion: completion)
|
|
}
|
|
}
|