Skip to content

Commit 96ab89d

Browse files
author
garenwang
committed
fix:升级灯塔sdk
1 parent 7881135 commit 96ab89d

File tree

12 files changed

+263
-52
lines changed

12 files changed

+263
-52
lines changed
Binary file not shown.
Binary file not shown.

QCloudCore/Classes/BeaconFramework/BeaconAPI_Base.framework/Headers/BeaconBaseInfoModel.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//
88

99
#import <Foundation/Foundation.h>
10-
#import <QimeiSDK/QimeiSDK.h>
10+
#import "BeaconOStarContent.h"
1111
#import "BeaconReportConfig.h"
1212

1313

@@ -40,8 +40,10 @@ NS_ASSUME_NONNULL_BEGIN
4040
/// 缓存各appKet的的openId,以通道的appKey作为key进行缓存
4141
@property (copy) NSMutableDictionary<NSString *, NSString *> *openIdDict;
4242

43-
/// Qimei对象
44-
@property (nonatomic, strong, readonly) QimeiContent *qimei;
43+
44+
/// QimeiCont对象, ostar等同于QimeiContent.为了屏蔽敏感而做的替换
45+
@property (nonatomic, strong) QimeiContent *qimei;
46+
4547

4648
/// bundle相关
4749
@property (copy, readonly) NSString *bundleId;
@@ -60,9 +62,9 @@ NS_ASSUME_NONNULL_BEGIN
6062
/// openuuid 自建
6163
@property (copy, readonly) NSString *openUdid;
6264
/// idfv
63-
@property (copy, readonly) NSString *idfv;
65+
@property (copy) NSString *idfv;
6466
/// idfa
65-
@property (copy, readonly) NSString *idfa;
67+
@property (copy) NSString *idfa;
6668
/// 是否越狱
6769
@property (assign, readonly) BOOL isReet;
6870
/// 主通道的channelId
@@ -116,7 +118,7 @@ NS_ASSUME_NONNULL_BEGIN
116118
/// 启动来源
117119
@property (copy) NSString *launchSource;
118120
/// 设备名
119-
@property (copy, readonly) NSString *deviceName;
121+
@property (copy, readonly) NSString *deviceName DEPRECATED_MSG_ATTRIBUTE("安全合规建设,4.2.75以后不再采集");
120122
/// 设备型号
121123
@property (copy, readonly) NSString *deviceModel;
122124
/// 设备类型
@@ -126,9 +128,9 @@ NS_ASSUME_NONNULL_BEGIN
126128
/// aesKey
127129
@property (copy) NSString *aesKey;
128130
/// 加密 key
129-
@property (copy, readonly) NSString *aesKeyEncrypt;
130-
/// 与服务器进行时钟同步的时间差
131-
@property (nonatomic, assign) long serverTimeDelta;
131+
@property (nonatomic, copy) NSString *aesKeyEncrypt;
132+
/// 与服务器进行时钟同步的时间差(单位毫秒)
133+
@property (assign) NSTimeInterval serverTimeDelta;
132134
/// app安装时间
133135
@property (assign, readonly) long long appInstallTime;
134136

QCloudCore/Classes/BeaconFramework/BeaconAPI_Base.framework/Headers/BeaconBaseInterface.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,6 @@ Beacon_CLASS_DEPRECATED_APP(1.0.0, 3.2.0, "推荐使用BeaconReport类")
6666
//更换用户时设置userId
6767
+ (void)setUserId:(NSString *)userId;
6868

69-
//当第一次安装 ,第一次启动时有可能获取不到,返回A3
70-
+ (NSString *)getQIMEI;
71-
72-
//当第一次安装 ,第一次启动时有可能获取不到,返回A153
73-
+ (NSString *)getQimeiNew;
74-
75-
//当第一次安装 ,第一次启动时有可能获取不到, 按key返回(可能为空)
76-
+ (NSString *)getQimeiWithKey:(NSString *)key;
77-
78-
//如果本地没有缓存, 则请求网络获取,同getQIMEI,由于接口设计问题请不要重复调用,回调时间取决于网络请求时间
79-
+ (void)getQIMEIwithBlock:(void (^)(NSString * qimei)) block;
80-
8169
//打开海外版本,需要在初始化之前设置,默认关闭
8270
+ (void)enableAbroad:(BOOL)enalbe;
8371

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//
2+
// BeaconCallBackManager.h
3+
// BeaconAPI_Base
4+
//
5+
// Created by 吴小二哥 on 2021/9/17.
6+
// Copyright © 2021 tencent.com. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
#import "BeaconResult.h"
11+
12+
NS_ASSUME_NONNULL_BEGIN
13+
14+
typedef void (^BeaconMsfSendCallback)(BeaconMsfSendResult *beaconResult);
15+
16+
/**
17+
* 长连接Msf回调Manger,Msf是通过代理方式回调手Q端,为了简化手Q接入逻辑,多线程代理回调由灯塔内部处理.
18+
*/
19+
@interface BeaconCallBackManager : NSObject
20+
21+
+ (instancetype)sharedInstance;
22+
23+
/**
24+
* 获取callback记录个数
25+
*/
26+
- (NSInteger)getCallbackMapCount;
27+
28+
/**
29+
* 灯塔内部存储callback并关联sequenceId
30+
*/
31+
- (void)addCallBack:(BeaconMsfSendCallback )beaconCallBack withSequenceId:(NSInteger )sequenceId;
32+
33+
/**
34+
* msf 回调接入层回调灯塔
35+
*/
36+
- (void)callBackSendResult:(BeaconMsfSendResult *)result;
37+
38+
@end
39+
40+
NS_ASSUME_NONNULL_END

QCloudCore/Classes/BeaconFramework/BeaconAPI_Base.framework/Headers/BeaconEvent.h

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ typedef NS_ENUM(NSInteger, BeaconEventType) {
1616
BeaconEventTypeRealTime, // 实时事件
1717
BeaconEventTypeDTNormal, // 普通的大同事件,大同SDK业务专用
1818
BeaconEventTypeDTRealTime, // 实时的大同事件,大同SDK业务专用
19+
BeaconEventTypeImmediate, // 立即上报的事件,相对于实时事件有更高的上报及时性
1920
};
2021

2122
/**
@@ -38,22 +39,36 @@ typedef NS_ENUM(NSInteger, BeaconEventType) {
3839
@property (nonatomic, assign) BOOL success DEPRECATED_MSG_ATTRIBUTE("在4.0+版本已废弃,可不设置");
3940

4041
/// 事件的自定义参数,key和value类型要求是NSString或者NSNumber类型,使用其他类型的事件不会上报
41-
/// 单个value的长度最大为10k,超出10k部分会被截断后上报,所有value长度之和最大为45k,超过45k不会上报此条事件
42+
/// 单个value的长度最大为20K,超出20K部分会被截断后上报,所有value长度之和最大为45k,超过45k不会上报此条事件
4243
@property (nonatomic, strong, nullable) NSDictionary *params;
4344

44-
/// 标记事件是否是qimei为空的补报事件
45+
46+
47+
/// 标记事件是否是Q16和Q36都为空的补报事件
4548
@property (nonatomic, assign) BOOL reportAgainAfterQimeiNotNull;
4649

50+
/// 实时事件的构造函数
51+
/// @param code 事件标识code
52+
/// @param params 事件的自定义参数
53+
+ (instancetype)realTimeEventWithCode:(NSString *)code params:(nullable NSDictionary *)params DEPRECATED_MSG_ATTRIBUTE("在4.2.73+版本已废弃,请使用realTimeEventWithCode:appKey:params:");
4754

4855
/// 实时事件的构造函数
4956
/// @param code 事件标识code
5057
/// @param params 事件的自定义参数
51-
+ (instancetype)realTimeEventWithCode:(NSString *)code params:(nullable NSDictionary *)params;
58+
/// @param appKey 事件所上报的appkey
59+
+ (instancetype)realTimeEventWithCode:(NSString *)code appKey:(NSString *)appKey params:(nullable NSDictionary *)params;
60+
61+
62+
/// 普通事件的构造函数
63+
/// @param code 事件标识code
64+
/// @param params 事件的自定义参数
65+
+ (instancetype)normalEventWithCode:(NSString *)code params:(nullable NSDictionary *)params DEPRECATED_MSG_ATTRIBUTE("在4.2.73+版本已废弃,请使用normalEventWithCode:appKey:params:");
5266

5367
/// 普通事件的构造函数
5468
/// @param code 事件标识code
5569
/// @param params 事件的自定义参数
56-
+ (instancetype)normalEventWithCode:(NSString *)code params:(nullable NSDictionary *)params;
70+
/// @param appKey 事件所上报的appkey
71+
+ (instancetype)normalEventWithCode:(NSString *)code appKey:(NSString *)appKey params:(nullable NSDictionary *)params;
5772

5873
/// 构造函数,兼容老版本的事件初始化
5974
/// @param appKey 各业务在灯塔平台申请的业务唯一标识
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//
2+
// BeaconMsfSendArgs.h
3+
// BeaconAPI_Base
4+
//
5+
// Created by 吴小二哥 on 2021/4/27.
6+
// Copyright © 2021 tencent.com. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
11+
NS_ASSUME_NONNULL_BEGIN
12+
13+
/**
14+
* 转发Msf携带的参数对象
15+
*/
16+
@interface BeaconMsfSendArgs : NSObject
17+
/// 业务上报的事件的二进制内容
18+
@property (nonatomic, strong) NSData *data;
19+
/// 请求命令字
20+
@property (nonatomic, copy) NSString *command;
21+
22+
@end
23+
24+
NS_ASSUME_NONNULL_END
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//
2+
// BeaconOStarContent.h
3+
// BeaconAPI_Base
4+
//
5+
// Created by 吴小二哥 on 2021/7/8.
6+
// Copyright © 2021 tencent.com. All rights reserved.
7+
//
8+
/**
9+
* BEACON_DEPEND_QIMEI:是否依赖Qimei.
10+
* 由于在外网集成直连版QimeiSDK,存在风险问题.进而开发了 OStar 非直连版本 SDK. 灯塔SDK为了支持外网也需要做同步修改,
11+
* 具体的修改逻辑是通过 BEACON_DEPEND_QIMEI 预编译条件编译方式,如果需要依赖 QIMEI,则和原有逻辑不变; 如果不依赖 和Qimei相关方法屏蔽掉.
12+
* 通用内网版本存在一个 QimeiContent 的类,是属于Qimei具体内容载体. 这里BeaconOStarContent类作用是替代QimeiContent.
13+
* 替代后只需在BeaconOStarContent内进行条件判断, 减少在其他使用地方预条件的设置.
14+
* 因为QIMEI是敏感字段,外网版打包时会将所有头文件中 BEACON_DEPEND_QIMEI=1 范围内的代码删掉,包括(#if BEACON_DEPEND_QIMEI)
15+
*/
16+
17+
#import <Foundation/Foundation.h>
18+
#import <QimeiSDK/QimeiSDK.h>
19+
20+
NS_ASSUME_NONNULL_BEGIN
21+
@interface BeaconOStarContent : QimeiContent
22+
23+
@end
24+
25+
NS_ASSUME_NONNULL_END

QCloudCore/Classes/BeaconFramework/BeaconAPI_Base.framework/Headers/BeaconReport.h

Lines changed: 63 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,38 @@
1010
#import "BeaconResult.h"
1111
#import "BeaconEvent.h"
1212
#import "BeaconBaseInfoModel.h"
13-
#import <QimeiSDK/QimeiSDK.h>
13+
#import <QimeiSDK/QimeiSDK.h>
1414
#import "BeaconReportConfig.h"
15-
15+
#import "BeaconWnsTransferArgs.h"
16+
#import "BeaconMsfSendArgs.h"
17+
#import "BeaconCallBackManager.h"
1618
NS_ASSUME_NONNULL_BEGIN
19+
20+
21+
typedef void (^BeaconWnsTransferCallback)(BeaconWnsTransferArgs *beaconArgs, BeaconWnsTransferResult *beaconResult);
22+
typedef void (^BeaconMsfSendCallback)(BeaconMsfSendResult *beaconResult);
23+
/**
24+
长连接网络数据传输的适配协议(可选):当业务对灯塔上报数据实时性有要求时,可开启长连接上报功能.
25+
开启此功能需要业务集成维纳斯SDK. 初始化维纳斯SDK并实现维纳斯SDK数据传输的代理接口.
26+
*/
27+
@protocol BeaconTransferProtocal <NSObject>
28+
@optional
29+
/// 维纳斯SDK数据传输的代理接口
30+
- (void)transferArgs:(BeaconWnsTransferArgs *)beaconArgs
31+
delegate:(BeaconWnsTransferCallback)beaconCallBack;
32+
33+
/**
34+
* MSFSDK数据传输的代理接口
35+
* callbackManager: 回调管理类. 收到msf回调后,接入层可以通过BeaconCallBackManager单例对象,直接调用callBackSendResult回传结果.4.1.36版本msfSDK 是通过代理回调结果,为了简化接入层逻辑,所以这里构建了BeaconCallBackManager中间层.
36+
* return: sequenceId. 接入层需要保证sequenceId合法,非法id(如:0,nil,NULL)灯塔会拦截走原通道, 非法情况下继续调 MSF,有可能造成数据重复.
37+
*/
38+
- (NSInteger)sendArgs:(BeaconMsfSendArgs *)beaconArgs callback:(BeaconCallBackManager *)callbackManager;
39+
40+
41+
@end
42+
1743
/// BeaconMttProtocal穿上甲日志协议
1844
@protocol BeaconMttProtocal <NSObject>
19-
/// 适配穿山甲日志
2045
- (void)mttLog:(NSString *)message
2146
file:(const char *)file
2247
function:(const char *)function
@@ -48,24 +73,36 @@ extern BOOL BeaconHasStarted;
4873
@property (nonatomic, assign) int logLevel;
4974

5075
/// 是否采集WiFiMac地址,参数为NO时不采集,默认采集,如果需要关闭则需要在初始化前设置为NO
51-
@property (assign) BOOL collectMacEnable;
76+
@property (assign) BOOL collectMacEnable DEPRECATED_MSG_ATTRIBUTE("4.2.74以后不再采集,如需使用请自行采集后通过[BeaconReport.sharedInstance setWifiName:/setWifiMac:]填充");
5277

5378
/// 是否采集idfa,参数为NO时不采集,默认采集,如果需要关闭则需要在初始化前设置为NO
54-
@property (assign) BOOL collectIdfaEnable;
79+
@property (assign) BOOL collectIdfaEnable DEPRECATED_MSG_ATTRIBUTE("4.2.74以后不再采集,如需使用请自行采集后通过[BeaconReport.sharedInstance setIDFA:]填充");
80+
81+
82+
/// 是否采集idfv,默认采集。无特殊情况不要关闭 ! 若关闭后务必在授权后填充IDFV(setIDFV:)
83+
@property (assign) BOOL collectIdfvEnable;
5584

56-
/// 是否采集idfv,默认采集
57-
@property (nonatomic, assign) BOOL collectIdfvEnable;
85+
/// 网络数据传输通道代理
86+
@property (nonatomic, weak) id<BeaconTransferProtocal> transferDelegate;
5887

5988
/// 穿山甲日志代理
6089
@property (nonatomic, weak) id<BeaconMttProtocal> mttDelegate;
6190

6291

6392
+ (BeaconReport *)sharedInstance;
6493

65-
/// 初始化接口,开启灯塔服务,会向服务器查询策略,初始化各个模块的默认数据上传器等
66-
/// 此接口一般在主APP(主通道)初始化时调用,多次调用的话,只有首次的调用才有效
67-
/// @param appKey 各业务在灯塔平台申请的业务唯一标识
68-
/// @param config 全局配置,可配置一些开关和策略等
94+
/**
95+
* 初始化接口,开启灯塔服务,会向服务器查询策略,初始化各个模块的默认数据上传器等
96+
* 1.宿主(应用)集成灯塔时:
97+
* a:建议在didFinishLaunchingWithOptions中最早位置调用灯塔,避免其他组件SDK提前初始化灯塔而引起数据错误问题.
98+
* b:应用中多份组件SDK同时使用灯塔,强烈建议配置BeaconInfo.plist文件记录beacon_main_appkey,
99+
* 配置后灯塔初始化以配置文件为准,所以务必确保配置文件appkey正确!! 非必要情况不要修改配置文件!!
100+
* 2.二方(中台,组件)SDK集成灯塔:
101+
* a:使用公版灯塔(和宿主共用)情况下, 禁止调用此方法!!!
102+
* b:使用前缀版本灯塔情况下,需要调用此方法. 通常一个二方SDK业务对应一份前缀版本灯塔,彼此是相互隔离.
103+
* @param appKey 各业务在灯塔平台申请的业务唯一标识
104+
* @param config 全局配置,可配置一些开关和策略等
105+
*/
69106
- (void)startWithAppkey:(NSString *)appKey config:(nullable BeaconReportConfig *)config;
70107

71108
/// 上报事件
@@ -91,24 +128,26 @@ extern BOOL BeaconHasStarted;
91128
- (void)setOpenId:(NSString *)openId forAppKey:(NSString *)appKey;
92129

93130

94-
95-
/// 同步获取qimei,只查询本地存储的qimei,不会触发网络请求
96-
/// 未初始化灯塔前获取的qimei为空
97-
/// @return 如果设备第一次安装集成了灯塔SDK的APP,第一次启动时有可能获取不到,返回空
98-
- (nullable QimeiContent *)getQimei DEPRECATED_MSG_ATTRIBUTE("在4.2+版本已废弃,请使用getQimeiForAppKey:");
99-
100131
/// 同步获取对应appkey的qimei,可以在未初始化灯塔前调用
101132
- (nullable QimeiContent *)getQimeiForAppKey:(NSString *)appKey;
102-
103-
/// 异步获取qimei,如果本地没有, 则等待网络请求的回调,针对的是APP首次安装本地没有qimei的场景。
104-
/// !!!建议在APP启动阶段调用一次本异步接口,其余阶段使用同步接口获取qimei
105-
/// 未初始化灯塔前获取的qimei为空
106-
/// @param block 异步回调的block
107-
- (void)getQimeiWithBlock:(void (^)(QimeiContent * _Nullable qimei))block DEPRECATED_MSG_ATTRIBUTE("在4.2+版本已废弃,请使用getQimeigetQimeiWithBlock:ForAppKey:");
108133

109134
/// 异步获取对应appkey的qimei,可以在未初始化灯塔前调用
110135
- (void)getQimeiWithBlock:(void (^)(QimeiContent * _Nullable qimei))block forAppKey:(NSString *)appkey;
111136

137+
138+
/// 默认不采集idfa,由需采集idfa的应用宿主填充.
139+
- (void)setIDFA:(NSString *)idfa;
140+
141+
/// 默认采集IDFV,业务如有关闭IDFV,用户同意隐私采集后,需填充给灯塔
142+
- (void)setIDFV:(NSString *)idfv;
143+
144+
/// 设置wifiName. 用户授权隐私数据采集后,可统一采集后填充到灯塔
145+
- (void)setWifiName:(NSString *)wifiName;
146+
147+
/// 设置wifiMac. 用户授权隐私数据采集后,可统一采集后填充到灯塔
148+
- (void)setWifiMac:(NSString *)wifiMac;
149+
150+
112151
/// 获取所有灯塔已默认采集的公参
113152
- (BeaconBaseInfoModel *)getCommonParams;
114153

@@ -119,5 +158,4 @@ extern BOOL BeaconHasStarted;
119158

120159
NS_ASSUME_NONNULL_END
121160

122-
123-
#define BEACON_SDK_VERSION @"4.2.64"
161+
#define BEACON_SDK_VERSION @"4.2.76.20"

QCloudCore/Classes/BeaconFramework/BeaconAPI_Base.framework/Headers/BeaconReportConfig.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,18 @@ NS_ASSUME_NONNULL_BEGIN
1414
*/
1515
@interface BeaconReportConfig : NSObject
1616

17-
/// 开启或者关闭事件上报功能,默认为YES可进行上报,如果有给用户提供关闭事件上报的接口等情况,可设置为NO
17+
/// 开启或者关闭事件上报功能,默认为YES可进行上报,如果有给用户提供关闭事件上报的接口等情况,可设置为NO. 关闭后事件不作任何处理
1818
@property (nonatomic, assign) BOOL eventReportEnabled;
1919

20+
/// 开启或关闭内置事件上报, 默认为YES开启。 如果需要关闭, 可设置为NO, 关闭后拦截内置事件:[rqd_applaunched, rqd_appresumed, rqd_appexited, rqd_heartbeat]
21+
@property (nonatomic, assign) BOOL internalEventEnabled;
22+
2023
/// 开启或者关闭策略请求功能,默认为YES进行策略请求,如果需要关闭,可设置为NO
2124
@property (nonatomic, assign) BOOL configQueryEnabled;
2225

26+
/// 事件轮询上传开关,默认打开. 关闭后业务生成的事件会入库,但不上传到服务端,达到DB上限后丢弃剩余事件.
27+
@property (nonatomic, assign) BOOL eventUploadEnabled;
28+
2329
/// 本地数据库的最大容量(超过限额不予存储),默认10000条,保护区间是100~100000条,云端优先级高于本地设置
2430
@property (nonatomic, assign) NSInteger maxDBCount;
2531

0 commit comments

Comments
 (0)