BBAUpdateCoreDispatcher.h
4.12 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
//
// BBAUpdateCoreDispatcher.h
// BBAComs-BBAUpdate
//
// Created by 樊帅飞 on 2017/11/1.
//
#import <Foundation/Foundation.h>
#import "BBAUpdateConstants.h"
@protocol BBAUpdateInterfaceClassProtocol;
@protocol BBAUpdateInterfaceClassProviderProtocol;
/**
updatek核心分发器;
负责收集上行参收集及下行参数分发;
*/
@interface BBAUpdateCoreDispatcher : NSObject
+ (instancetype)shareInstance;
/**
注册接入方,建议放在Pyramid moduleRegister:中注册;
@param interfaceClass 接入方实现BBAUpdateInterfaceClassProtocol的类
@return 是否注册成功;
*/
+ (BOOL)registerInterfaceClass:(Class<BBAUpdateInterfaceClassProtocol>)interfaceClass;
/**
设置接入方批量提供者类,建议放在Pyramid moduleRegister:中注册;
@param provider 遵循BBAUpdateInterfaceClassProviderProtocol的类,该协议的实现者可以实现方法返回多个接入方;
@return 是否注册成功;
*/
+ (BOOL)registerInterfaceClassesProvider:(Class<BBAUpdateInterfaceClassProviderProtocol>)provider;
/**
获取update接口参数
返回数据格式为 @[@{bbaUpdateIdentifierKey:@"feed/feed_tab",
bbaUpdateVersionKey: @"0",
bbaUpdateDataKey :@{$customData}
},
@{bbaUpdateIdentifierKey:@"video/video_case",
bbaUpdateVersionKey: @"0",
bbaUpdateDataKey :@{$customData}
}];
@see bbaUpdateIdentifierKey 必传,对应值为节点id;
@see bbaUpdateVersionKey 必传,值为节点在本地的最新版本号,默认为“0”,之后取上次update接口返回的该节点数据中的版本号;
@see bbaUpdateDataKey 非必填,拓展数据字段,update只透传对应数据,对呀值为字典类型;
@return post data
*/
- (NSArray *)updateRequestPostHeaderData;
/**
获取update接口参数
@param filterBlock 节点过滤回调,会遍历每个节点多次调用该block,如果block返回YES表示当前节点需要丢弃;如果该block为nil或返回值为NO,这表示当前节点不需要丢弃。
@return update接口参数
*/
- (NSArray *)updateRequestPostHeaderDataWithFilter:(BOOL(^)(NSString *identifier))filterBlock;
/**
* @brief 分发update数据 http://wiki.baidu.com/pages/viewpage.action?pageId=496896221
*
*
* @param data update数据
* @param optionsDict 服务配置数据(serviceConfig)处理选项
1.如果serviceConfigOptions不能够解析到 version_asc == 1 (例如serviceConfigOptions为空,不是字典等),则serviceConfig配置无需做多余处理,可以直接使用,存储等(如果服务或者业务认为数据格式正确);
2.如果能够解析到 version_asc == 1,则对于serviceConfig的node节点的版本号"v"需要与上次分发的相同node的版本号"v"做比较,如果版本号大于上次下发的node的版本号,则node节点生效,否则按照废弃处理
目前格式定义如下
"options": {//
"version_asc": "1"// 服务配置节点版本号控制比较 version_asc == 1,版本号需要做递增比较,参考上面 2 解释,否则无需比较,参考 1 解释
}
* @param ubcExtInfoBlock nil ubc统计数据回调;
ubcExtInfo中含有 : timestamp (配置文件接收时间戳(毫秒))
detail (格式为jsonarray 里面的jsonobject定义如下: product:业务名 string version:配置版本 string valid:是否有效 int(1为有效,0为无效) 示例: [ {"product":"search", "version":"201802271744", "valid" : 1 }, {"product":"flash", "version": "201802271744", "valid": 0} ])
totalCount 总节点个数
successCount 成功分发节点的个数
versionFilterCount 因版本号问题被过滤掉节点的个数
*/
- (void)distributionUpdateData:(NSDictionary *)data
options:(NSDictionary *)optionsDict
ubcExtInfo:(void(^)(NSDictionary *ubcExtInfo))ubcExtInfoBlock;
@end