BBANetworkDiagnoseExecutor.h
4.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//
// BBANetworkDiagnoseExecutor.h
// BBAAPIRequestExt
//
// Created by chenjia09 on 2018/12/18.
//
// Copyright © 2018 Baidu. All rights reserved.
#import <Foundation/Foundation.h>
/// 状态
typedef NS_ENUM(NSUInteger, BBANetworkDiagnoseStatus) {
BBANetworkDiagnoseStatusDefault, // 默认,即待检测状态
BBANetworkDiagnoseStatusInProgress, // 检测中
BBANetworkDiagnoseStatusQuickDiagnoseCompleted, // 浅度检测已完成
BBANetworkDiagnoseStatusAllDiagnoseCompleted, // 所有检测已完成
};
/// 入口
typedef NS_ENUM(NSUInteger, BBANetworkDiagnoseFrom) {
BBANetworkDiagnoseFromDefault, // 默认,如设置,全面检测
BBANetworkDiagnoseFromSearch, // 搜索,主要检测搜索相关的域名和 url
BBANetworkDiagnoseFromFeed, // Feed,主要检测 Feed 相关的域名和 url
BBANetworkDiagnoseFromMNP // MNP,主要检查 MNP 相关的域名和 url
};
/// 等级
typedef NS_OPTIONS(NSUInteger, BBANetworkDiagnoseLevel) {
BBANetworkDiagnoseLevelFast = 1 << 0, // 快速检测,即浅度检测
BBANetworkDiagnoseLevelDeep = 1 << 1, // 深度检测
};
typedef NS_ENUM(NSUInteger, DiagnoseResultCode) {
DiagnoseResultNormal,
DiagnoseResultFlightModeOn,
DiagnoseResultWifiDisabled,
DiagnoseResultWifiRestricted,
DiagnoseResultCellularRestricted,
DiagnoseResultPingError,
DiagnoseResultDnsError,
DiagnoseResultGlobalProxy,
DiagnoseResultHttpError,
DiagnoseResultCellularDiabled,
DiagnoseResultServerError,
DiagnoseResultVPN,
DiagnoseResultSSLInvalidDate,
DiagnoseResultBadNet,
DiagnoseResultOffline,
DiagnoseResultDiagnoseTimeout
};
// 全面检测 = 快速检测 + 深度检测
const static BBANetworkDiagnoseLevel BBANetworkDiagnoseLevelTotal = BBANetworkDiagnoseLevelFast | BBANetworkDiagnoseLevelDeep;
NS_ASSUME_NONNULL_BEGIN
/// 检测结果
@interface BBANetworkDiagnoseResult : NSObject
/// 结果日志
@property (nonatomic, copy) NSString *outputLog;
/// 结果详情(成功或失败等)
@property (nonatomic, copy) NSArray <NSNumber *>* resultList;
@end
/// 网络检检测执行的核心类
@interface BBANetworkDiagnoseExecutor : NSObject
/// 更新进度的回调
@property (nonatomic, nullable, copy) void (^progressBlock)(NSUInteger percent);
/// 分阶段检测回调
@property (nonatomic, nullable, copy) void (^phaseBlock)(NSString *phase, NSString *estimateTimeString);
/// 检测完成回调
@property (nonatomic, nullable, copy) void (^completionBlock)(BBANetworkDiagnoseResult *result);
/// 当前检测状态
@property (nonatomic, assign) BBANetworkDiagnoseStatus status;
/// 当前检测结果
@property (nonatomic, strong) BBANetworkDiagnoseResult * result;
/// 当前检测结果
@property (nonatomic, assign) NSUInteger progress;
/// 检测入口
@property (nonatomic, assign) BBANetworkDiagnoseFrom from;
/// 检测等级
@property (nonatomic, assign) BBANetworkDiagnoseLevel level;
/// 单例
+ (BBANetworkDiagnoseExecutor *)sharedInstance;
/// 执行检测操作
/// @param completionBlock 完成回调
/// @param progressBlock 进度回调
/// @param phaseBlock 阶段回调
/// @param from 入口来源
/// @param level 检测类型级别
- (void)executeDiagnoseWithCompletionBlock:(void(^)(BBANetworkDiagnoseResult *result))completionBlock
progressBlock:(void(^)(NSUInteger percent))progressBlock
phaseBlock:(void(^)(NSString *phase, NSString *estimateTimeString))phaseBlock
from:(BBANetworkDiagnoseFrom)from
level:(BBANetworkDiagnoseLevel)level;
/// 上报检测日志
- (void)reportLog;
/// 取消当前检测任务
- (void)cancelCurrentDiagnoseTask;
/// 唤醒(恢复)当前检测任务
- (void)wakeUpDiagnoseExcutor;
/// 重置检测状态
- (void)reset;
/// 已弃用的方法
+ (BBANetworkDiagnoseExecutor *)executorForSource:(NSNumber *)source __attribute__((deprecated));
- (void) executeDiagnoseWithCompletionBlock:(void(^)(BBANetworkDiagnoseResult *result))completionBlock
progressBlock:(void(^)(NSUInteger percent))progressBlock
phaseBlock:(void(^)(NSString *phase, NSString *estimateTimeString))phaseBlock __attribute__((deprecated));
@end
NS_ASSUME_NONNULL_END