Skip to content

Commit

Permalink
fix:升级灯塔sdk
Browse files Browse the repository at this point in the history
  • Loading branch information
garenwang committed Mar 22, 2023
1 parent 7881135 commit 96ab89d
Show file tree
Hide file tree
Showing 12 changed files with 263 additions and 52 deletions.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
//

#import <Foundation/Foundation.h>
#import <QimeiSDK/QimeiSDK.h>
#import "BeaconOStarContent.h"
#import "BeaconReportConfig.h"


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

/// Qimei对象
@property (nonatomic, strong, readonly) QimeiContent *qimei;

/// QimeiCont对象, ostar等同于QimeiContent.为了屏蔽敏感而做的替换
@property (nonatomic, strong) QimeiContent *qimei;


/// bundle相关
@property (copy, readonly) NSString *bundleId;
Expand All @@ -60,9 +62,9 @@ NS_ASSUME_NONNULL_BEGIN
/// openuuid 自建
@property (copy, readonly) NSString *openUdid;
/// idfv
@property (copy, readonly) NSString *idfv;
@property (copy) NSString *idfv;
/// idfa
@property (copy, readonly) NSString *idfa;
@property (copy) NSString *idfa;
/// 是否越狱
@property (assign, readonly) BOOL isReet;
/// 主通道的channelId
Expand Down Expand Up @@ -116,7 +118,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 启动来源
@property (copy) NSString *launchSource;
/// 设备名
@property (copy, readonly) NSString *deviceName;
@property (copy, readonly) NSString *deviceName DEPRECATED_MSG_ATTRIBUTE("安全合规建设,4.2.75以后不再采集");
/// 设备型号
@property (copy, readonly) NSString *deviceModel;
/// 设备类型
Expand All @@ -126,9 +128,9 @@ NS_ASSUME_NONNULL_BEGIN
/// aesKey
@property (copy) NSString *aesKey;
/// 加密 key
@property (copy, readonly) NSString *aesKeyEncrypt;
/// 与服务器进行时钟同步的时间差
@property (nonatomic, assign) long serverTimeDelta;
@property (nonatomic, copy) NSString *aesKeyEncrypt;
/// 与服务器进行时钟同步的时间差(单位毫秒)
@property (assign) NSTimeInterval serverTimeDelta;
/// app安装时间
@property (assign, readonly) long long appInstallTime;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,18 +66,6 @@ Beacon_CLASS_DEPRECATED_APP(1.0.0, 3.2.0, "推荐使用BeaconReport类")
//更换用户时设置userId
+ (void)setUserId:(NSString *)userId;

//当第一次安装 ,第一次启动时有可能获取不到,返回A3
+ (NSString *)getQIMEI;

//当第一次安装 ,第一次启动时有可能获取不到,返回A153
+ (NSString *)getQimeiNew;

//当第一次安装 ,第一次启动时有可能获取不到, 按key返回(可能为空)
+ (NSString *)getQimeiWithKey:(NSString *)key;

//如果本地没有缓存, 则请求网络获取,同getQIMEI,由于接口设计问题请不要重复调用,回调时间取决于网络请求时间
+ (void)getQIMEIwithBlock:(void (^)(NSString * qimei)) block;

//打开海外版本,需要在初始化之前设置,默认关闭
+ (void)enableAbroad:(BOOL)enalbe;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
//
// BeaconCallBackManager.h
// BeaconAPI_Base
//
// Created by 吴小二哥 on 2021/9/17.
// Copyright © 2021 tencent.com. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BeaconResult.h"

NS_ASSUME_NONNULL_BEGIN

typedef void (^BeaconMsfSendCallback)(BeaconMsfSendResult *beaconResult);

/**
* 长连接Msf回调Manger,Msf是通过代理方式回调手Q端,为了简化手Q接入逻辑,多线程代理回调由灯塔内部处理.
*/
@interface BeaconCallBackManager : NSObject

+ (instancetype)sharedInstance;

/**
* 获取callback记录个数
*/
- (NSInteger)getCallbackMapCount;

/**
* 灯塔内部存储callback并关联sequenceId
*/
- (void)addCallBack:(BeaconMsfSendCallback )beaconCallBack withSequenceId:(NSInteger )sequenceId;

/**
* msf 回调接入层回调灯塔
*/
- (void)callBackSendResult:(BeaconMsfSendResult *)result;

@end

NS_ASSUME_NONNULL_END
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ typedef NS_ENUM(NSInteger, BeaconEventType) {
BeaconEventTypeRealTime, // 实时事件
BeaconEventTypeDTNormal, // 普通的大同事件,大同SDK业务专用
BeaconEventTypeDTRealTime, // 实时的大同事件,大同SDK业务专用
BeaconEventTypeImmediate, // 立即上报的事件,相对于实时事件有更高的上报及时性
};

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

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

/// 标记事件是否是qimei为空的补报事件


/// 标记事件是否是Q16和Q36都为空的补报事件
@property (nonatomic, assign) BOOL reportAgainAfterQimeiNotNull;

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

/// 实时事件的构造函数
/// @param code 事件标识code
/// @param params 事件的自定义参数
+ (instancetype)realTimeEventWithCode:(NSString *)code params:(nullable NSDictionary *)params;
/// @param appKey 事件所上报的appkey
+ (instancetype)realTimeEventWithCode:(NSString *)code appKey:(NSString *)appKey params:(nullable NSDictionary *)params;


/// 普通事件的构造函数
/// @param code 事件标识code
/// @param params 事件的自定义参数
+ (instancetype)normalEventWithCode:(NSString *)code params:(nullable NSDictionary *)params DEPRECATED_MSG_ATTRIBUTE("在4.2.73+版本已废弃,请使用normalEventWithCode:appKey:params:");

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

/// 构造函数,兼容老版本的事件初始化
/// @param appKey 各业务在灯塔平台申请的业务唯一标识
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// BeaconMsfSendArgs.h
// BeaconAPI_Base
//
// Created by 吴小二哥 on 2021/4/27.
// Copyright © 2021 tencent.com. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
* 转发Msf携带的参数对象
*/
@interface BeaconMsfSendArgs : NSObject
/// 业务上报的事件的二进制内容
@property (nonatomic, strong) NSData *data;
/// 请求命令字
@property (nonatomic, copy) NSString *command;

@end

NS_ASSUME_NONNULL_END
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//
// BeaconOStarContent.h
// BeaconAPI_Base
//
// Created by 吴小二哥 on 2021/7/8.
// Copyright © 2021 tencent.com. All rights reserved.
//
/**
* BEACON_DEPEND_QIMEI:是否依赖Qimei.
* 由于在外网集成直连版QimeiSDK,存在风险问题.进而开发了 OStar 非直连版本 SDK. 灯塔SDK为了支持外网也需要做同步修改,
* 具体的修改逻辑是通过 BEACON_DEPEND_QIMEI 预编译条件编译方式,如果需要依赖 QIMEI,则和原有逻辑不变; 如果不依赖 和Qimei相关方法屏蔽掉.
* 通用内网版本存在一个 QimeiContent 的类,是属于Qimei具体内容载体. 这里BeaconOStarContent类作用是替代QimeiContent.
* 替代后只需在BeaconOStarContent内进行条件判断, 减少在其他使用地方预条件的设置.
* 因为QIMEI是敏感字段,外网版打包时会将所有头文件中 BEACON_DEPEND_QIMEI=1 范围内的代码删掉,包括(#if BEACON_DEPEND_QIMEI)
*/

#import <Foundation/Foundation.h>
#import <QimeiSDK/QimeiSDK.h>

NS_ASSUME_NONNULL_BEGIN
@interface BeaconOStarContent : QimeiContent

@end

NS_ASSUME_NONNULL_END
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,38 @@
#import "BeaconResult.h"
#import "BeaconEvent.h"
#import "BeaconBaseInfoModel.h"
#import <QimeiSDK/QimeiSDK.h>
#import <QimeiSDK/QimeiSDK.h>
#import "BeaconReportConfig.h"

#import "BeaconWnsTransferArgs.h"
#import "BeaconMsfSendArgs.h"
#import "BeaconCallBackManager.h"
NS_ASSUME_NONNULL_BEGIN


typedef void (^BeaconWnsTransferCallback)(BeaconWnsTransferArgs *beaconArgs, BeaconWnsTransferResult *beaconResult);
typedef void (^BeaconMsfSendCallback)(BeaconMsfSendResult *beaconResult);
/**
长连接网络数据传输的适配协议(可选):当业务对灯塔上报数据实时性有要求时,可开启长连接上报功能.
开启此功能需要业务集成维纳斯SDK. 初始化维纳斯SDK并实现维纳斯SDK数据传输的代理接口.
*/
@protocol BeaconTransferProtocal <NSObject>
@optional
/// 维纳斯SDK数据传输的代理接口
- (void)transferArgs:(BeaconWnsTransferArgs *)beaconArgs
delegate:(BeaconWnsTransferCallback)beaconCallBack;

/**
* MSFSDK数据传输的代理接口
* callbackManager: 回调管理类. 收到msf回调后,接入层可以通过BeaconCallBackManager单例对象,直接调用callBackSendResult回传结果.4.1.36版本msfSDK 是通过代理回调结果,为了简化接入层逻辑,所以这里构建了BeaconCallBackManager中间层.
* return: sequenceId. 接入层需要保证sequenceId合法,非法id(如:0,nil,NULL)灯塔会拦截走原通道, 非法情况下继续调 MSF,有可能造成数据重复.
*/
- (NSInteger)sendArgs:(BeaconMsfSendArgs *)beaconArgs callback:(BeaconCallBackManager *)callbackManager;


@end

/// BeaconMttProtocal穿上甲日志协议
@protocol BeaconMttProtocal <NSObject>
/// 适配穿山甲日志
- (void)mttLog:(NSString *)message
file:(const char *)file
function:(const char *)function
Expand Down Expand Up @@ -48,24 +73,36 @@ extern BOOL BeaconHasStarted;
@property (nonatomic, assign) int logLevel;

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

/// 是否采集idfa,参数为NO时不采集,默认采集,如果需要关闭则需要在初始化前设置为NO
@property (assign) BOOL collectIdfaEnable;
@property (assign) BOOL collectIdfaEnable DEPRECATED_MSG_ATTRIBUTE("4.2.74以后不再采集,如需使用请自行采集后通过[BeaconReport.sharedInstance setIDFA:]填充");


/// 是否采集idfv,默认采集。无特殊情况不要关闭 ! 若关闭后务必在授权后填充IDFV(setIDFV:)
@property (assign) BOOL collectIdfvEnable;

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

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


+ (BeaconReport *)sharedInstance;

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

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



/// 同步获取qimei,只查询本地存储的qimei,不会触发网络请求
/// 未初始化灯塔前获取的qimei为空
/// @return 如果设备第一次安装集成了灯塔SDK的APP,第一次启动时有可能获取不到,返回空
- (nullable QimeiContent *)getQimei DEPRECATED_MSG_ATTRIBUTE("在4.2+版本已废弃,请使用getQimeiForAppKey:");

/// 同步获取对应appkey的qimei,可以在未初始化灯塔前调用
- (nullable QimeiContent *)getQimeiForAppKey:(NSString *)appKey;

/// 异步获取qimei,如果本地没有, 则等待网络请求的回调,针对的是APP首次安装本地没有qimei的场景。
/// !!!建议在APP启动阶段调用一次本异步接口,其余阶段使用同步接口获取qimei
/// 未初始化灯塔前获取的qimei为空
/// @param block 异步回调的block
- (void)getQimeiWithBlock:(void (^)(QimeiContent * _Nullable qimei))block DEPRECATED_MSG_ATTRIBUTE("在4.2+版本已废弃,请使用getQimeigetQimeiWithBlock:ForAppKey:");

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


/// 默认不采集idfa,由需采集idfa的应用宿主填充.
- (void)setIDFA:(NSString *)idfa;

/// 默认采集IDFV,业务如有关闭IDFV,用户同意隐私采集后,需填充给灯塔
- (void)setIDFV:(NSString *)idfv;

/// 设置wifiName. 用户授权隐私数据采集后,可统一采集后填充到灯塔
- (void)setWifiName:(NSString *)wifiName;

/// 设置wifiMac. 用户授权隐私数据采集后,可统一采集后填充到灯塔
- (void)setWifiMac:(NSString *)wifiMac;


/// 获取所有灯塔已默认采集的公参
- (BeaconBaseInfoModel *)getCommonParams;

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

NS_ASSUME_NONNULL_END


#define BEACON_SDK_VERSION @"4.2.64"
#define BEACON_SDK_VERSION @"4.2.76.20"
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,18 @@ NS_ASSUME_NONNULL_BEGIN
*/
@interface BeaconReportConfig : NSObject

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

/// 开启或关闭内置事件上报, 默认为YES开启。 如果需要关闭, 可设置为NO, 关闭后拦截内置事件:[rqd_applaunched, rqd_appresumed, rqd_appexited, rqd_heartbeat]
@property (nonatomic, assign) BOOL internalEventEnabled;

/// 开启或者关闭策略请求功能,默认为YES进行策略请求,如果需要关闭,可设置为NO
@property (nonatomic, assign) BOOL configQueryEnabled;

/// 事件轮询上传开关,默认打开. 关闭后业务生成的事件会入库,但不上传到服务端,达到DB上限后丢弃剩余事件.
@property (nonatomic, assign) BOOL eventUploadEnabled;

/// 本地数据库的最大容量(超过限额不予存储),默认10000条,保护区间是100~100000条,云端优先级高于本地设置
@property (nonatomic, assign) NSInteger maxDBCount;

Expand Down
Loading

0 comments on commit 96ab89d

Please sign in to comment.