公司有app项目添加了接口错误监控上报到企业微信,有很多" 请求超时。" "网络连接已中断。" "似乎已断开与互联网的连接。 " "无法解析响应 ,"这种报错出现,而且公司内部测试基本没有出现过测试环境的错误上报(正式环境也没有),只有好几个地区的店会有,偶发性的断网,但实际上手机是有网络的(安卓未出现此问题),公司后台查询接口记录,没有查询到说iOS未提交到后端,
问题简述:iOS使用时会偶发性的断网接口全部请求超时(实际是有网络情况),后端查不到接口提交记录
网络请求框架 Alamofire 版本 4.5.1
Alamofire 封装请求Tools
class SDNetworkTool: NSObject {
var netStatus = NetworkStatus()
@objc static let shareNetworkTool = SDNetworkTool()
}
extension SDNetworkTool
{
func HttpClient(urlString:String,requstMethod:HTTPMethod,params:[String:Any],showHud:Bool,successBack:@escaping (_ json:JSON)->(),failBlock:@escaping (()->()),progress:(_ progess:Float)->())
{
... 参数 header 处理
Alamofire.request(urlEnd, method:requstMethod, parameters: paraDic, encoding: URLEncoding.default, headers: header).responseJSON { response in
switch response.result {
case .success(let value):
... 成功
case .failure(let error):
if !self.netStatus.isReachable {//网络不可达
CSTProgressView.showErrorHUD("当前没有网络,请检查您的网络设置")
failBlock();
return
}
debugPrint("-----------------------报错的接口是:"+urlEnd+"报错信息:"+error.localizedDescription)
failBlock();
let errorMD=CSTError()
errorMD.url=baseUrl+urlString
errorMD.para=getJSONStringFromDictionary(dictionary: params as NSDictionary)
errorMD.localizedDescription=error.localizedDescription
CSTNetWorkErrorTool.SendSystemRobot(model:errorMD) {
print("成功上报")
} fail: {
print("失败上报")
}
}
}.downloadProgress { progress in
debugPrint(progress);
}
}
//判断是否有网络
class NetworkStatus {
let networkManager = NetworkReachabilityManager(host: "www.baidu.com")
init() {
startMonitor()
}
func startMonitor() {
self.networkManager?.startListening()
}
var isReachable:Bool{
get{
return (self.networkManager?.isReachable)!
}
}
}
报错内容 alamofire error.localizedDescription (并不是某个接口,而是都有可能出现)
我的解答思路和尝试过的方法
因另外好几个项目都是用的同一个网络库(Alamofire) 版本也是一样,封装请求Tools类也是一个均未出现此问题,客户发过来的视频是一直在loding,app是有网络的不然会直接提示"当前没有网络,请检查您的网络设置",只有这个项目出现了这种情况,网上找了一大圈,也问了很多ios开发的朋友,均未得到有效的解决方案,只能来发帖,看是否人解答了,在线等待专家的出现