finder 海外
This commit is contained in:
parent
5dfc6c5692
commit
3ddb119348
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 682e47faf0ce541438fcbc953bedfab9
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,375 +0,0 @@
|
|||
//
|
||||
// BDAutoTrack+Game.h
|
||||
// Applog
|
||||
//
|
||||
// Created by bob on 2019/4/10.
|
||||
//
|
||||
|
||||
#import "BDAutoTrack.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
FOUNDATION_EXTERN NSString * const kBDAGameLevel;
|
||||
|
||||
/*!
|
||||
BDAutoTrack 内置游戏上报API
|
||||
*/
|
||||
@interface BDAutoTrack (Game)
|
||||
|
||||
/*! @abstract 初始化注册
|
||||
@param method 注册方式,@"wechat"、@"qq",强制添加
|
||||
@param isSuccess 状态,强制添加
|
||||
@discussion 上报参数:@{@"method":method,@"is_success":@(isSuccess)}
|
||||
*/
|
||||
- (void)registerEventByMethod:(NSString *)method
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 初始化登录
|
||||
@param method 登录方式,@"wechat"、@"qq"
|
||||
@param isSuccess 状态
|
||||
@discussion 上报参数:@{@"method":method,@"is_success":@(isSuccess)}
|
||||
*/
|
||||
- (void)loginEventByMethod:(NSString *)method
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 绑定社交账号
|
||||
@param type 账号类型
|
||||
@param isSuccess 状态
|
||||
@discussion 上报参数:@{@"account_type":type,@"is_success":@(isSuccess)}
|
||||
*/
|
||||
- (void)accessAccountEventByType:(NSString *)type
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 进行任务
|
||||
@param questID 任务id
|
||||
@param type 任务类型
|
||||
@param name 教学/任务/副本名
|
||||
@param number 第几个任务
|
||||
@param desc 其他描述
|
||||
@param isSuccess 状态
|
||||
@discussion 上报参数:@{@"quest_id":questID,
|
||||
@"quest_type":type,
|
||||
@"quest_name":name,
|
||||
@"quest_no":@(number),
|
||||
@"description":desc,
|
||||
@"is_success":@(isSuccess)}
|
||||
*/
|
||||
- (void)questEventWithQuestID:(NSString *)questID
|
||||
questType:(NSString *)type
|
||||
questName:(NSString *)name
|
||||
questNumer:(NSUInteger)number
|
||||
description:(NSString *)desc
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 升级
|
||||
@param level 当前等级
|
||||
@discussion 上报参数:@{@"level":@(level)}
|
||||
*/
|
||||
- (void)updateLevelEventWithLevel:(NSUInteger)level;
|
||||
|
||||
/*! @abstract 创建角色
|
||||
@param roleID 角色id
|
||||
@discussion 上报参数:@{@"gamerole_id":roleID}
|
||||
*/
|
||||
- (void)createGameRoleEventByID:(NSString *)roleID;
|
||||
|
||||
/*! @abstract 查看内容/商品详情
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID}
|
||||
*/
|
||||
- (void)viewContentEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID;
|
||||
|
||||
/*! @abstract 加入购买/购物车
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@param number 内容数量
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID,
|
||||
@"content_num":number,
|
||||
@"is_success":@(isSuccess)}
|
||||
*/
|
||||
- (void)addCartEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID
|
||||
contentNumber:(NSUInteger)number
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 提交购买/下单
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@param number 内容数量
|
||||
@param isVirtualCurrency 是否使用的是虚拟货币
|
||||
@param virtualCurrency 虚拟币币种
|
||||
@param currency 真实货币类型
|
||||
@param amount 货币金额
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID,
|
||||
@"content_num":number,
|
||||
@"is_virtual_currency":@(isVirtualCurrency),
|
||||
@"virtual_currency":virtualCurrency,
|
||||
@"currency":currency,
|
||||
@"is_success":@(isSuccess),
|
||||
@"currency_amount":@(amount)}
|
||||
*/
|
||||
- (void)checkoutEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID
|
||||
contentNumber:(NSUInteger)number
|
||||
isVirtualCurrency:(BOOL)isVirtualCurrency
|
||||
virtualCurrency:(NSString *)virtualCurrency
|
||||
currency:(NSString *)currency
|
||||
currency_amount:(unsigned long long)amount
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 支付
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@param number 内容数量
|
||||
@param channel 支付渠道
|
||||
@param currency 币种
|
||||
@param amount 货币金额,不能为0
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID,
|
||||
@"content_num":@(number),
|
||||
@"payment_channel":channel,
|
||||
@"currency":currency,
|
||||
@"is_success":@(isSuccess),
|
||||
@"currency_amount":@(amount)}
|
||||
*/
|
||||
- (void)purchaseEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID
|
||||
contentNumber:(NSUInteger)number
|
||||
paymentChannel:(NSString *)channel
|
||||
currency:(NSString *)currency
|
||||
currency_amount:(unsigned long long)amount
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 添加支付渠道
|
||||
@param channel 支付渠道
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"payment_channel":channel,
|
||||
@"is_success":@(isSuccess)}
|
||||
*/
|
||||
- (void)accessPaymentChannelEventByChannel:(NSString *)channel
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 添加至收藏
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@param number 内容数量
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID,
|
||||
@"content_num":@(number),
|
||||
@"is_success":@(isSuccess)}
|
||||
*/
|
||||
- (void)addToFavouriteEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID
|
||||
contentNumber:(NSUInteger)number
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/*!
|
||||
特别说明:
|
||||
先调用[BDAutoTrack startTrackWithConfig:config];
|
||||
之后调用BDAutoTrack的游戏埋点接口
|
||||
*/
|
||||
|
||||
@interface BDAutoTrack (SharedGame)
|
||||
|
||||
/*! @abstract 初始化注册
|
||||
@param method 注册方式,@"wechat"、@"qq",强制添加
|
||||
@param isSuccess 状态,强制添加
|
||||
@discussion 上报参数:@{@"method":method,@"is_success":@(isSuccess)}
|
||||
*/
|
||||
+ (void)registerEventByMethod:(NSString *)method
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 初始化登录
|
||||
@param method 登录方式,@"wechat"、@"qq"
|
||||
@param isSuccess 状态
|
||||
@discussion 上报参数:@{@"method":method,@"is_success":@(isSuccess)}
|
||||
*/
|
||||
+ (void)loginEventByMethod:(NSString *)method
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 绑定社交账号
|
||||
@param type 账号类型
|
||||
@param isSuccess 状态
|
||||
@discussion 上报参数:@{@"account_type":type,@"is_success":@(isSuccess)}
|
||||
*/
|
||||
+ (void)accessAccountEventByType:(NSString *)type
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 进行任务
|
||||
@param questID 任务id
|
||||
@param type 任务类型
|
||||
@param name 教学/任务/副本名
|
||||
@param number 第几个任务
|
||||
@param desc 其他描述
|
||||
@param isSuccess 状态
|
||||
@discussion 上报参数:@{@"quest_id":questID,
|
||||
@"quest_type":type,
|
||||
@"quest_name":name,
|
||||
@"quest_no":@(number),
|
||||
@"description":desc,
|
||||
@"is_success":@(isSuccess)}
|
||||
*/
|
||||
+ (void)questEventWithQuestID:(NSString *)questID
|
||||
questType:(NSString *)type
|
||||
questName:(NSString *)name
|
||||
questNumer:(NSUInteger)number
|
||||
description:(NSString *)desc
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 升级
|
||||
@param level 当前等级
|
||||
@discussion 上报参数:@{@"level":@(level)}
|
||||
*/
|
||||
+ (void)updateLevelEventWithLevel:(NSUInteger)level;
|
||||
|
||||
/*! @abstract 创建角色
|
||||
@param roleID 角色id
|
||||
@discussion 上报参数:@{@"gamerole_id":roleID}
|
||||
*/
|
||||
+ (void)createGameRoleEventByID:(NSString *)roleID;
|
||||
|
||||
/*! @abstract 查看内容/商品详情
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID}
|
||||
*/
|
||||
+ (void)viewContentEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID;
|
||||
|
||||
/*! @abstract 加入购买/购物车
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@param number 内容数量
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID,
|
||||
@"content_num":number,
|
||||
@"is_success":@(isSuccess)}
|
||||
*/
|
||||
+ (void)addCartEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID
|
||||
contentNumber:(NSUInteger)number
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 提交购买/下单
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@param number 内容数量
|
||||
@param isVirtualCurrency 是否使用的是虚拟货币
|
||||
@param virtualCurrency 虚拟币币种
|
||||
@param currency 真实货币类型
|
||||
@param amount 货币金额
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID,
|
||||
@"content_num":number,
|
||||
@"is_virtual_currency":@(isVirtualCurrency),
|
||||
@"virtual_currency":virtualCurrency,
|
||||
@"currency":currency,
|
||||
@"is_success":@(isSuccess),
|
||||
@"currency_amount":@(amount)}
|
||||
*/
|
||||
+ (void)checkoutEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID
|
||||
contentNumber:(NSUInteger)number
|
||||
isVirtualCurrency:(BOOL)isVirtualCurrency
|
||||
virtualCurrency:(NSString *)virtualCurrency
|
||||
currency:(NSString *)currency
|
||||
currency_amount:(unsigned long long)amount
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 支付
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@param number 内容数量
|
||||
@param channel 支付渠道
|
||||
@param currency 币种
|
||||
@param amount 货币金额,不能为0
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID,
|
||||
@"content_num":@(number),
|
||||
@"payment_channel":channel,
|
||||
@"currency":currency,
|
||||
@"is_success":@(isSuccess),
|
||||
@"currency_amount":@(amount)}
|
||||
*/
|
||||
+ (void)purchaseEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID
|
||||
contentNumber:(NSUInteger)number
|
||||
paymentChannel:(NSString *)channel
|
||||
currency:(NSString *)currency
|
||||
currency_amount:(unsigned long long)amount
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 添加支付渠道
|
||||
@param channel 支付渠道
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"payment_channel":channel,
|
||||
@"is_success":@(isSuccess)}
|
||||
*/
|
||||
+ (void)accessPaymentChannelEventByChannel:(NSString *)channel
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
/*! @abstract 添加至收藏
|
||||
@param type 内容类型
|
||||
@param name 内容名
|
||||
@param contentID 内容id
|
||||
@param number 内容数量
|
||||
@param isSuccess 是否成功
|
||||
@discussion 上报参数:@{@"content_type":type,
|
||||
@"content_name":name,
|
||||
@"content_id":contentID,
|
||||
@"content_num":@(number),
|
||||
@"is_success":@(isSuccess)}
|
||||
*/
|
||||
+ (void)addToFavouriteEventWithContentType:(NSString *)type
|
||||
contentName:(NSString *)name
|
||||
contentID:(NSString *)contentID
|
||||
contentNumber:(NSUInteger)number
|
||||
isSuccess:(BOOL)isSuccess;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,320 +0,0 @@
|
|||
//
|
||||
// BDAutoTrack- GameTrack.h
|
||||
// Applog
|
||||
//
|
||||
// Created by bob on 2019/7/17.
|
||||
//
|
||||
|
||||
#import "BDAutoTrack.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
FOUNDATION_EXTERN NSString * const kGTGameParameterLevel;
|
||||
|
||||
/*!
|
||||
BDAutoTrack 内置联运游戏上报API
|
||||
事件名称都有 gt 前缀
|
||||
具体参数参照接口人发送的文档
|
||||
*/
|
||||
@interface BDAutoTrack (GameTrack)
|
||||
|
||||
#pragma mark - AD
|
||||
/**
|
||||
广告按钮点击:gt_ad_button_click
|
||||
ad_type string 广告类型:激励视频、插屏、banner等,直接使用汉字或者英文进行标识
|
||||
ad_position_type string 广告点位类型:按照提供分类接入
|
||||
ad_position string 广告点位:复活、翻倍、试用、buff、奖励道具、新道具、减CD等,直接使用文字或者英文进行标识
|
||||
触发条件:用户点击app内各广告位button时。
|
||||
*/
|
||||
- (void)adButtonClickEventWithADType:(NSString *)adType
|
||||
positionType:(NSString *)positionType
|
||||
position:(NSString *)position
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
/**
|
||||
广告开始展示:gt_ad_show
|
||||
ad_type string 广告类型:激励视频、插屏、banner等,直接使用汉字或者英文进行标识
|
||||
ad_position_type string 广告点位类型:按照提供分类接入
|
||||
ad_position string 广告点位:复活、翻倍、试用、buff、奖励道具、新道具、减CD等,直接使用文字或者英文进行标识
|
||||
触发条件:用户点击并观看广告时。穿山甲广告有回调,可以直接获取。
|
||||
*/
|
||||
- (void)adShowEventWithADType:(NSString *)adType
|
||||
positionType:(NSString *)positionType
|
||||
position:(NSString *)position
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
|
||||
/**
|
||||
广告结束展示:gt_ad_show_end
|
||||
ad_type string 广告类型:激励视频、插屏、banner等,直接使用汉字或者英文进行标识
|
||||
ad_position_type string 广告点位类型:按照提供分类接入
|
||||
ad_position string 广告点位:复活、翻倍、试用、buff、奖励道具、新道具、减CD等,直接使用文字或者英文进行标识
|
||||
result string 广告观看结果:跳过、成功、失败等,使用英文进行标识. 跳过标记为skip, 成功标记为success,失败为fail
|
||||
触发条件:用户观看广告结束时。
|
||||
*/
|
||||
- (void)adShowEndEventWithADType:(NSString *)adType
|
||||
positionType:(NSString *)positionType
|
||||
position:(NSString *)position
|
||||
result:(NSString *)result
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - Level
|
||||
/**
|
||||
(总等级)升级和经验:gt_levelup
|
||||
lev int 当前玩家等级
|
||||
get_exp int 获得经验
|
||||
method string 获得经验途径:闯关成功、引导完成、领取奖励等,使用汉字或者英文进行标识
|
||||
aflev int 用户获得经验后等级,如获得经验未导致升级,则lev=aflev,如导致升级,则lev<aflev
|
||||
触发条件:用户获得经验或者等级发生变化时。
|
||||
*/
|
||||
- (void)levelUpEventWithLevel:(NSInteger)level
|
||||
exp:(NSInteger)exp
|
||||
method:(NSString *)method
|
||||
afterLevel:(NSInteger)afterLevel
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - play
|
||||
|
||||
/**
|
||||
开始玩法:gt_start_play
|
||||
ectype_name string 针对闯关性质玩法,标注关卡名称
|
||||
触发条件:用户开始玩法时。
|
||||
*/
|
||||
- (void)startPlayEventWithName:(NSString *)ecTypeName
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
/**
|
||||
结束玩法:gt_end_play
|
||||
ectype_name string 针对闯关性质玩法,标注关卡名称
|
||||
result string 玩法的结果:未完成、成功、失败等,使用英文进行标识. 未完成标记为uncompleted, 成功标记为success,失败为fail
|
||||
duration int 消耗时间,单位秒
|
||||
触发条件:用户结束玩法时,涵盖中途退出、完成但失败和完成且成功。
|
||||
*/
|
||||
- (void)endPlayEventWithName:(NSString *)ecTypeName
|
||||
result:(NSString *)result
|
||||
duration:(NSInteger)duration
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - coins
|
||||
|
||||
/**
|
||||
获得游戏币:gt_get_coins
|
||||
coin_type string 货币类型:元宝、绑元、金币、银币等,使用文字或者英文进行标识
|
||||
method string 获得途径:观看激励视频、闯关成功、活动奖励等,使用文字或者英文进行标识
|
||||
coin_num int 获得数量
|
||||
触发条件:用户获得游戏币,导致游戏币增加时
|
||||
*/
|
||||
- (void)getCoinsEventWitType:(NSString *)coinType
|
||||
method:(NSString *)method
|
||||
coinNumber:(NSInteger)number
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
/**
|
||||
消耗游戏币:gt_cost_coins
|
||||
coin_type string 货币类型:元宝、绑元、金币、银币等,使用文字或者英文进行标识
|
||||
method string 消耗途径:复活、购买道具、解锁关卡等,使用文字或者英文进行标识
|
||||
coin_num int 消耗数量
|
||||
触发条件:用户消耗游戏币,导致游戏币减少时。
|
||||
*/
|
||||
- (void)costCoinsEventWitType:(NSString *)coinType
|
||||
method:(NSString *)method
|
||||
coinNumber:(NSInteger)number
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - Purchase
|
||||
|
||||
/**
|
||||
内购充值相关:purchase
|
||||
content_type string 内购充值内容类型
|
||||
content_name string 内购充值内容名称
|
||||
content_id string 内购充值内容id
|
||||
content_num int 内购充值内容的数量
|
||||
payment_channel string 支付渠道:例如 支付宝,微信等
|
||||
currency string 支付货币类型
|
||||
is_success string 支付是否成功
|
||||
currency_amount int 支付的金额,单位元
|
||||
触发条件:用户完成内购充值并获得对应的游戏内货币和道具时
|
||||
*/
|
||||
- (void)purchaseEventWithContentType:(NSString *)contentType
|
||||
contentName:(NSString *)contentName
|
||||
contentID:(NSString *)contentID
|
||||
contentNum:(NSInteger)contentNum
|
||||
channel:(NSString *)channel
|
||||
currency:(NSString *)currency
|
||||
isSuccess:(NSString *)isSuccess
|
||||
currencyAmount:(NSInteger)currencyAmount
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - InitInfo
|
||||
/**
|
||||
初始化信息:gt_init_info
|
||||
lev int 玩家等级
|
||||
coin_type string 获得货币的类型
|
||||
coin_left int 用户身上剩余的货币数量
|
||||
role_id string 玩家角色id-cp侧
|
||||
触发条件:用户启动游戏,初始化完成时上报
|
||||
*/
|
||||
- (void)gameInitInfoEventWithLevel:(NSInteger)level
|
||||
coinType:(NSString *)coinType
|
||||
coinLeft:(NSInteger)coinLeft
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/*!
|
||||
BDAutoTrack 内置联运游戏上报API
|
||||
事件名称都有 gt 前缀
|
||||
具体参数参照接口人发送的文档
|
||||
*/
|
||||
|
||||
/*!
|
||||
特别说明:
|
||||
先调用[BDAutoTrack startTrackWithConfig:config];
|
||||
之后调用BDAutoTrack的游戏埋点接口
|
||||
*/
|
||||
@interface BDAutoTrack (SharedGameTrack)
|
||||
|
||||
#pragma mark - AD
|
||||
/**
|
||||
广告按钮点击:gt_ad_button_click
|
||||
ad_type string 广告类型:激励视频、插屏、banner等,直接使用汉字或者英文进行标识
|
||||
ad_position_type string 广告点位类型:按照提供分类接入
|
||||
ad_position string 广告点位:复活、翻倍、试用、buff、奖励道具、新道具、减CD等,直接使用文字或者英文进行标识
|
||||
触发条件:用户点击app内各广告位button时。
|
||||
*/
|
||||
+ (void)adButtonClickEventWithADType:(NSString *)adType
|
||||
positionType:(NSString *)positionType
|
||||
position:(NSString *)position
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
/**
|
||||
广告开始展示:gt_ad_show
|
||||
ad_type string 广告类型:激励视频、插屏、banner等,直接使用汉字或者英文进行标识
|
||||
ad_position_type string 广告点位类型:按照提供分类接入
|
||||
ad_position string 广告点位:复活、翻倍、试用、buff、奖励道具、新道具、减CD等,直接使用文字或者英文进行标识
|
||||
触发条件:用户点击并观看广告时。穿山甲广告有回调,可以直接获取。
|
||||
*/
|
||||
+ (void)adShowEventWithADType:(NSString *)adType
|
||||
positionType:(NSString *)positionType
|
||||
position:(NSString *)position
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
|
||||
/**
|
||||
广告结束展示:gt_ad_show_end
|
||||
ad_type string 广告类型:激励视频、插屏、banner等,直接使用汉字或者英文进行标识
|
||||
ad_position_type string 广告点位类型:按照提供分类接入
|
||||
ad_position string 广告点位:复活、翻倍、试用、buff、奖励道具、新道具、减CD等,直接使用文字或者英文进行标识
|
||||
result string 广告观看结果:跳过、成功、失败等,使用英文进行标识. 跳过标记为skip, 成功标记为success,失败为fail
|
||||
触发条件:用户观看广告结束时。
|
||||
*/
|
||||
+ (void)adShowEndEventWithADType:(NSString *)adType
|
||||
positionType:(NSString *)positionType
|
||||
position:(NSString *)position
|
||||
result:(NSString *)result
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - Level
|
||||
/**
|
||||
(总等级)升级和经验:gt_levelup
|
||||
lev int 当前玩家等级
|
||||
get_exp int 获得经验
|
||||
method string 获得经验途径:闯关成功、引导完成、领取奖励等,使用汉字或者英文进行标识
|
||||
aflev int 用户获得经验后等级,如获得经验未导致升级,则lev=aflev,如导致升级,则lev<aflev
|
||||
触发条件:用户获得经验或者等级发生变化时。
|
||||
*/
|
||||
+ (void)levelUpEventWithLevel:(NSInteger)level
|
||||
exp:(NSInteger)exp
|
||||
method:(NSString *)method
|
||||
afterLevel:(NSInteger)afterLevel
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - play
|
||||
|
||||
/**
|
||||
开始玩法:gt_start_play
|
||||
ectype_name string 针对闯关性质玩法,标注关卡名称
|
||||
触发条件:用户开始玩法时。
|
||||
*/
|
||||
+ (void)startPlayEventWithName:(NSString *)ecTypeName
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
/**
|
||||
结束玩法:gt_end_play
|
||||
ectype_name string 针对闯关性质玩法,标注关卡名称
|
||||
result string 玩法的结果:未完成、成功、失败等,使用英文进行标识. 未完成标记为uncompleted, 成功标记为success,失败为fail
|
||||
duration int 消耗时间,单位秒
|
||||
触发条件:用户结束玩法时,涵盖中途退出、完成但失败和完成且成功。
|
||||
*/
|
||||
+ (void)endPlayEventWithName:(NSString *)ecTypeName
|
||||
result:(NSString *)result
|
||||
duration:(NSInteger)duration
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - coins
|
||||
|
||||
/**
|
||||
获得游戏币:gt_get_coins
|
||||
coin_type string 货币类型:元宝、绑元、金币、银币等,使用文字或者英文进行标识
|
||||
method string 获得途径:观看激励视频、闯关成功、活动奖励等,使用文字或者英文进行标识
|
||||
coin_num int 获得数量
|
||||
触发条件:用户获得游戏币,导致游戏币增加时
|
||||
*/
|
||||
+ (void)getCoinsEventWitType:(NSString *)coinType
|
||||
method:(NSString *)method
|
||||
coinNumber:(NSInteger)number
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
/**
|
||||
消耗游戏币:gt_cost_coins
|
||||
coin_type string 货币类型:元宝、绑元、金币、银币等,使用文字或者英文进行标识
|
||||
method string 消耗途径:复活、购买道具、解锁关卡等,使用文字或者英文进行标识
|
||||
coin_num int 消耗数量
|
||||
触发条件:用户消耗游戏币,导致游戏币减少时。
|
||||
*/
|
||||
+ (void)costCoinsEventWitType:(NSString *)coinType
|
||||
method:(NSString *)method
|
||||
coinNumber:(NSInteger)number
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - Purchase
|
||||
|
||||
/**
|
||||
内购充值相关:purchase
|
||||
content_type string 内购充值内容类型
|
||||
content_name string 内购充值内容名称
|
||||
content_id string 内购充值内容id
|
||||
content_num int 内购充值内容的数量
|
||||
payment_channel string 支付渠道:例如 支付宝,微信等
|
||||
currency string 支付货币类型
|
||||
is_success string 支付是否成功
|
||||
currency_amount int 支付的金额,单位元
|
||||
触发条件:用户完成内购充值并获得对应的游戏内货币和道具时
|
||||
*/
|
||||
+ (void)purchaseEventWithContentType:(NSString *)contentType
|
||||
contentName:(NSString *)contentName
|
||||
contentID:(NSString *)contentID
|
||||
contentNum:(NSInteger)contentNum
|
||||
channel:(NSString *)channel
|
||||
currency:(NSString *)currency
|
||||
isSuccess:(NSString *)isSuccess
|
||||
currencyAmount:(NSInteger)currencyAmount
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
#pragma mark - InitInfo
|
||||
/**
|
||||
初始化信息:gt_init_info
|
||||
lev int 玩家等级
|
||||
coin_type string 获得货币的类型
|
||||
coin_left int 用户身上剩余的货币数量
|
||||
role_id string 玩家角色id-cp侧
|
||||
触发条件:用户启动游戏,初始化完成时上报
|
||||
*/
|
||||
+ (void)gameInitInfoEventWithLevel:(NSInteger)level
|
||||
coinType:(NSString *)coinType
|
||||
coinLeft:(NSInteger)coinLeft
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
//
|
||||
// BDAutoTrack+LaunchFrom.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by bob on 2020/6/3.
|
||||
//
|
||||
|
||||
#import "BDAutoTrack.h"
|
||||
#import "BDCommonDefine.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface BDAutoTrack (LaunchFrom)
|
||||
|
||||
/*
|
||||
@abstract 初始化之后,支持设置APP的启动方式,会体现的上报的数据中,参考<RangersAppLog/BDCommonDefine.h>
|
||||
*/
|
||||
+ (void)setLaunchFrom:(BDAutoTrackLaunchFrom)from;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
//
|
||||
// BDAutoTrack+OhayooGameTrack.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by 陈奕 on 2019/11/26.
|
||||
//
|
||||
|
||||
#import "BDAutoTrack.h"
|
||||
|
||||
typedef NSString * OhayooCustomHeaderKey NS_TYPED_ENUM;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/* ohayoo custom header key. 均以"ohayoo_"开头 */
|
||||
FOUNDATION_EXTERN OhayooCustomHeaderKey OhayooCustomHeaderKeyPackageChannel;
|
||||
FOUNDATION_EXTERN OhayooCustomHeaderKey OhayooCustomHeaderKeyZoneID;
|
||||
FOUNDATION_EXTERN OhayooCustomHeaderKey OhayooCustomHeaderKeyServerID;
|
||||
FOUNDATION_EXTERN OhayooCustomHeaderKey OhayooCustomHeaderKeySDKOpenID;
|
||||
FOUNDATION_EXTERN OhayooCustomHeaderKey OhayooCustomHeaderKeyUserType;
|
||||
FOUNDATION_EXTERN OhayooCustomHeaderKey OhayooCustomHeaderKeyRoleID;
|
||||
FOUNDATION_EXTERN OhayooCustomHeaderKey OhayooCustomHeaderKeyLevel;
|
||||
|
||||
#pragma mark - OhayooGameTrack
|
||||
|
||||
@interface BDAutoTrack (OhayooGameTrack)
|
||||
|
||||
/**
|
||||
初始化信息:gt_init_info
|
||||
lev int 当前玩家等级
|
||||
scene_id int 当前场景id
|
||||
scene_lev int 当前场景的用户等级
|
||||
coin_type string 获得货币的类型
|
||||
coin_left int 用户身上剩余的货币数量
|
||||
roleId string 角色id
|
||||
触发条件:用户启动游戏,初始化完成时上报
|
||||
|
||||
@discussion 上报参数比GameTrack的多了 sceneID sceneLev
|
||||
*/
|
||||
- (void)gameInitInfoEventWithLevel:(NSInteger)level
|
||||
sceneID:(NSInteger)sceneID
|
||||
sceneLev:(NSInteger)sceneLev
|
||||
coinType:(NSString *)coinType
|
||||
coinLeft:(NSInteger)coinLeft
|
||||
roleId:(NSString *)roleId
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
/**
|
||||
@abstract 将相应ohayoo字段设置到custom header中的辅助方法。实际上是调用`setCustomHeaderValue:forKey:`。
|
||||
@discussion 使用示例:
|
||||
@code
|
||||
[BDAutoTrack ohayooHeaderSetObject:@"channel_123" forKey:OhayooCustomHeaderKeyPackageChannel];
|
||||
@code
|
||||
*/
|
||||
- (void)ohayooHeaderSetObject:(NSObject *)object forKey:(OhayooCustomHeaderKey)key;
|
||||
|
||||
- (void)ohayooHeaderRemoveObjectForKey:(OhayooCustomHeaderKey)key;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark - SharedOhayooGameTrack
|
||||
@interface BDAutoTrack (SharedOhayooGameTrack)
|
||||
|
||||
/**
|
||||
初始化信息:gt_init_info
|
||||
lev int 当前玩家等级
|
||||
scene_id int 当前场景id
|
||||
scene_lev int 当前场景的用户等级
|
||||
coin_type string 获得货币的类型
|
||||
coin_left int 用户身上剩余的货币数量
|
||||
roleId string 角色id
|
||||
触发条件:用户启动游戏,初始化完成时上报
|
||||
|
||||
@discussion 上报参数比GameTrack的多了 sceneID sceneLev
|
||||
*/
|
||||
+ (void)gameInitInfoEventWithLevel:(NSInteger)level
|
||||
sceneID:(NSInteger)sceneID
|
||||
sceneLev:(NSInteger)sceneLev
|
||||
coinType:(NSString *)coinType
|
||||
coinLeft:(NSInteger)coinLeft
|
||||
roleId:(NSString *)roleId
|
||||
otherParams:(nullable NSDictionary *)otherParams;
|
||||
|
||||
/**
|
||||
@abstract 将相应ohayoo字段设置到custom header中的辅助方法。实际上是调用`setCustomHeaderValue:forKey:`。
|
||||
@discussion 使用示例:
|
||||
@code
|
||||
[BDAutoTrack ohayooHeaderSetObject:@"channel_123" forKey:OhayooCustomHeaderKeyPackageChannel];
|
||||
@code
|
||||
*/
|
||||
+ (void)ohayooHeaderSetObject:(NSObject *)object forKey:(OhayooCustomHeaderKey)key;
|
||||
|
||||
+ (void)ohayooHeaderRemoveObjectForKey:(OhayooCustomHeaderKey)key;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
//
|
||||
// BDAutoTrack+Profile.h
|
||||
// Applog
|
||||
//
|
||||
// Created by 朱元清 on 2020/9/11.
|
||||
//
|
||||
|
||||
#import "BDAutoTrack.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface BDAutoTrack (Profile)
|
||||
|
||||
#pragma mark 实例方法
|
||||
/// @abstract 设置一组profile属性
|
||||
/// @discussion 参数字典的值只能是以下类型:字符串、整型、浮点型、字符串数组
|
||||
/// @param profileDict 字典。包含一个或多个要设置的profile属性和值
|
||||
- (void)profileSet:(NSDictionary *)profileDict;
|
||||
|
||||
/// @abstract 设置一组profile属性。若一个接口是通过重复调用该接口无效。
|
||||
/// @discussion 与profileSet接口不同的是:若某profile已成功通过setOnce接口设置,那么对该profile再次调用setOnce接口无效。
|
||||
/// 一个通过setOnce设置的profile被unset后,无法再次通过setOnce设置。
|
||||
/// 参数字典的值只能是以下类型:字符串、整型、浮点型、字符串数组
|
||||
/// @param profileDict 字典。包含一个或多个要设置的profile属性和值
|
||||
- (void)profileSetOnce:(NSDictionary *)profileDict;
|
||||
|
||||
/// @abstract unset一个之前被profileSet或profileSetOnce接口设置的profile
|
||||
/// @param profileName 要unset的profile的名称
|
||||
- (void)profileUnset:(NSString *)profileName;
|
||||
|
||||
/// @abstract 为数值类型的profile属性做自增操作
|
||||
/// @discussion 只能自增整数(可以为负整数)。如果传入浮点数,SDK将忽略。
|
||||
/// @param profileDict 字典。包含一个或多个要设置的数值类型profile属性和要增加的值。
|
||||
- (void)profileIncrement:(NSDictionary <NSString *, NSNumber *> *)profileDict;
|
||||
|
||||
/// @abstract 为数组类型的profile属性添加一个值
|
||||
/// @discussion 参数字典的值只能为字符串或者字符串数组。e.g.
|
||||
/// @code
|
||||
/// NSDitcionary *profileDict = @{
|
||||
/// @"needs": @"洗衣机",
|
||||
/// @"favorites": @[@"海尔", @"海信", @"美的"]
|
||||
/// }
|
||||
/// [track profileAppend:profileDict];
|
||||
/// @param profileDict 字典。包含一个或多个要设置的数组类型的profile属性和要添加的值
|
||||
- (void)profileAppend:(NSDictionary *)profileDict;
|
||||
|
||||
#pragma mark 类方法
|
||||
/// @abstract 设置一组profile属性
|
||||
/// @discussion 参数字典的值只能是以下类型:字符串、整型、浮点型、字符串数组
|
||||
/// @param profileDict 字典。包含一个或多个要设置的profile属性和值
|
||||
+ (void)profileSet:(NSDictionary *)profileDict;
|
||||
|
||||
/// @abstract 设置一组profile属性。若一个接口是通过重复调用该接口无效。
|
||||
/// @discussion 与profileSet接口不同的是:若某profile已成功通过setOnce接口设置,那么对该profile再次调用setOnce接口无效。
|
||||
/// 一个通过setOnce设置的profile被unset后,无法再次通过setOnce设置。
|
||||
/// 参数字典的值只能是以下类型:字符串、整型、浮点型、字符串数组
|
||||
/// @param profileDict 字典。包含一个或多个要设置的profile属性和值
|
||||
+ (void)profileSetOnce:(NSDictionary *)profileDict;
|
||||
|
||||
/// @abstract unset一个之前被profileSet或profileSetOnce接口设置的profile
|
||||
/// @param profileName 要unset的profile的名称
|
||||
+ (void)profileUnset:(NSString *)profileName;
|
||||
|
||||
/// @abstract 为数值类型的profile属性做自增操作
|
||||
/// @discussion 只能自增整数(可以为负整数)。如果传入浮点数,SDK将忽略。
|
||||
/// @param profileDict 字典。包含一个或多个要设置的数值类型profile属性和要增加的值。
|
||||
+ (void)profileIncrement:(NSDictionary <NSString *, NSNumber *> *)profileDict;
|
||||
|
||||
/// @abstract 为数组类型的profile属性添加一个值
|
||||
/// @discussion 参数字典的值只能为字符串或者字符串数组。e.g.
|
||||
/// @code
|
||||
/// NSDitcionary *profileDict = @{
|
||||
/// @"needs": @"洗衣机",
|
||||
/// @"favorites": @[@"海尔", @"海信", @"美的"]
|
||||
/// }
|
||||
/// [BDAutoTrack profileAppend:profileDict];
|
||||
/// @param profileDict 字典。包含一个或多个要设置的数组类型的profile属性和要添加的值
|
||||
+ (void)profileAppend:(NSDictionary *)profileDict;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2ab224ea962a6464d9342d828f100bdc
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,308 +0,0 @@
|
|||
//
|
||||
// BDAutoTrack+SharedInstance.h
|
||||
// Pods
|
||||
//
|
||||
// Created by 朱元清 on 2020/9/11.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "BDCommonDefine.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
/// 以下是单例方法
|
||||
#pragma mark - SharedInstance
|
||||
|
||||
/*! @abstract
|
||||
BDAutoTrack 里面引用住一个BDAutoTrack单例,方便通过类名来调用SDK方法。
|
||||
特别说明:先调用`[BDAutoTrack startTrackWithConfig:config];`再调用BDAutoTrack的其他 类方法接口
|
||||
|
||||
使用示例:
|
||||
BDAutoTrackConfig *config = [BDAutoTrackConfig configWithAppID:@"xxx" LaunchOptions:launchOptions];
|
||||
config.xxx = xxx;
|
||||
...
|
||||
// 初始化
|
||||
[BDAutoTrack startTrackWithConfig:config]
|
||||
|
||||
// 初始化完成之后,再调用其他接口进一步设置user unique ID等属性
|
||||
[BDAutoTrack setCurrentUserUniqueID:@"123"];
|
||||
*/
|
||||
|
||||
/*! @discussion 设置注册成功和ABTest拉取成功回调,推荐使用通知方法。可以参考 <RangersAppLog/BDAutoTrackNotifications.h>注释。
|
||||
*/
|
||||
@interface BDAutoTrack (SharedInstance)
|
||||
|
||||
/*! @abstract
|
||||
SDK版本号. Depreceted, please use SDKVersion.
|
||||
*/
|
||||
@property (class, nonatomic, copy, readonly) NSString *sdkVersion APPLOG_API_DEPRECATED_WITH_REPLACEMENT("SDKVersion");
|
||||
|
||||
/*! @abstract
|
||||
针对每个AppID 设备唯一rangers Device ID. 非数字,随机字符串,一般情况请不要存储,从SDK接口获取即可。
|
||||
@discussion 特别说明,rangersDeviceID是字符串,不是数字
|
||||
*/
|
||||
@property (class, nonatomic, copy, readonly, nullable) NSString *rangersDeviceID;
|
||||
|
||||
/*! @abstract
|
||||
安装ID,是数字字符串,可以转化为数字。
|
||||
*/
|
||||
@property (class, nonatomic, copy, readonly, nullable) NSString *installID;
|
||||
|
||||
/*! @abstract
|
||||
数说ID,一般情况下,一个自然人的ssid是一致的。
|
||||
*/
|
||||
@property (class, nonatomic, copy, readonly, nullable) NSString *ssID;
|
||||
|
||||
/*! @abstract
|
||||
通过[BDAutoTrack setCurrentUserUniqueID:]接口传入到SDK内部的uuid
|
||||
*/
|
||||
@property (class, nonatomic, copy, readonly, nullable) NSString *userUniqueID;
|
||||
|
||||
/*! @abstract 初始化的AppID
|
||||
*/
|
||||
@property (class, nonatomic, copy, readonly) NSString *appID;
|
||||
|
||||
#pragma mark - 初始化与启动单例
|
||||
/*!
|
||||
* @abstract 初始化并启动SDK单例。
|
||||
* @param config 配置对象。其中AppID AppName Channel是必须的。
|
||||
* @discussion
|
||||
* 调用时机:
|
||||
* 1、必须在应用启动时调用,即在 application:didFinishLaunchingWithOptions: 中调用,
|
||||
* 2、必须在主线程中调用
|
||||
* 3、必须在 SDK 其他方法调用之前调用
|
||||
* 本方法是一个便捷方法,相当于下面两个调用:
|
||||
* @code
|
||||
* [BDAutoTrack sharedTrackWithConfig:config];
|
||||
* [BDAutoTrack startTrack];
|
||||
*/
|
||||
+ (void)startTrackWithConfig:(BDAutoTrackConfig *)config;
|
||||
|
||||
/*!
|
||||
* @abstract 初始化单例。
|
||||
* @param config 配置对象。其中AppID AppName Channel是必须的。
|
||||
* @discussion
|
||||
* 调用时机:
|
||||
* 1、必须在应用启动时调用,即在 application:didFinishLaunchingWithOptions: 中调用,
|
||||
* 2、必须在主线程中调用
|
||||
* 3、必须在 SDK 其他方法调用之前调用
|
||||
* 一般与`+ [BDAutoTrack startTrack]`一起使用。
|
||||
* @code
|
||||
* [BDAutoTrack sharedTrackWithConfig:config];
|
||||
* [BDAutoTrack startTrack];
|
||||
*/
|
||||
+ (void)sharedTrackWithConfig:(BDAutoTrackConfig *)config;
|
||||
|
||||
/*!
|
||||
* @abstract 启动SDK单例。
|
||||
* @discussion
|
||||
* 调用时机:
|
||||
* 1、必须在应用启动时调用,即在 application:didFinishLaunchingWithOptions: 中调用,
|
||||
* 2、必须在主线程中调用
|
||||
* 3、必须在 SDK 其他方法调用之前调用
|
||||
*/
|
||||
+ (void)startTrack;
|
||||
|
||||
/**
|
||||
* @abstract
|
||||
* 若已初始化,则返回之前初始化好的单例;否则返回nil。(本身不会做初始化)
|
||||
*
|
||||
* @discussion
|
||||
* 调用这个方法之前,必须先调用 `+ [BDAutoTrack sharedTrackWithConfig:]`
|
||||
*
|
||||
* @return 返回之前初始化好的单例
|
||||
*/
|
||||
+ (instancetype)sharedTrack;
|
||||
|
||||
#pragma mark -
|
||||
/*! @abstract userAgent 在初始化之后设置
|
||||
@discussion 每次启动SDK的时候设置一次,发生变化的时候设置即可。一般不会发生变化,只需要设置一次即可
|
||||
@param userAgent 日志上报HTTP/HTTPS 请求里面的 userAgent
|
||||
*/
|
||||
+ (void)setUserAgent:(nullable NSString *)userAgent;
|
||||
|
||||
/*! @abstract UserUniqueID发生变化时设置 在初始化之后设置
|
||||
@discussion SDK会保存,因此只需要变化的时候设置。
|
||||
@param uniqueID 用户id,如无特殊需求,请勿传 空字符串 或者 全是空格的字符串。若为nil或空字符串则登出,相当于调用`clearUserUniqueID`。
|
||||
@return 是否成功设置或登出。
|
||||
*/
|
||||
+ (BOOL)setCurrentUserUniqueID:(nullable NSString *)uniqueID;
|
||||
|
||||
/*! @abstract 登出 logout
|
||||
@discussion 登出 logout
|
||||
*/
|
||||
+ (void)clearUserUniqueID;
|
||||
|
||||
/// 请参考对应实例方法的文档
|
||||
+ (BOOL)sendRegisterRequestWithRegisteringUserUniqueID:(nullable NSString *)registeringUserUniqueID;
|
||||
+ (BOOL)sendRegisterRequest APPLOG_API_AVALIABLE(5.6.3);
|
||||
|
||||
/*! @abstract 设置上报Host地区,在初始化之后设置,初始化之前请在config中设置
|
||||
@discussion 发生变化可以更新,不需要一直重复设置
|
||||
@param serviceVendor 地区
|
||||
*/
|
||||
+ (void)setServiceVendor:(BDAutoTrackServiceVendor)serviceVendor;
|
||||
|
||||
/*! @abstract 设置自定义的URL回调 在初始化之后设置
|
||||
@param requestURLBlock 回调block,设置一次即可,不需要多次设置
|
||||
@discussion requestURLBlock 会覆盖之前的初始化或者上一次设置的回调,如果为nil会清空回调
|
||||
@discussion block在初始化之后 设置一次即可,每次拉取请求都会回调,请勿一直重复设置
|
||||
*/
|
||||
+ (void)setRequestURLBlock:(nullable BDAutoTrackRequestURLBlock)requestURLBlock;
|
||||
|
||||
/*! @abstract 设置自定义的URL回调
|
||||
@param requestHostBlock 回调block,设置一次即可,不需要多次设置
|
||||
@discussion requestHostBlock 会覆盖之前的初始化或者上一次设置的回调,如果为nil会清空回调
|
||||
@discussion requestURLBlock会优先于requestHostBlock
|
||||
*/
|
||||
+ (void)setRequestHostBlock:(nullable BDAutoTrackRequestHostBlock)requestHostBlock;
|
||||
|
||||
/*! @abstract 地区 在初始化之后设置
|
||||
@discussion 如果设置过,会保存值,直到下次改变或者清空
|
||||
@discussion 如果没有值,默认会读取 `[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode]`
|
||||
@discussion 发生变化时候请调用 `+[BDAutoTrack setAppRegion:]`更新值
|
||||
*/
|
||||
+ (void)setAppRegion:(nullable NSString *)appRegion;
|
||||
|
||||
/*! @abstract 语言 在初始化之后设置
|
||||
@discussion 如果设置过,会保存值,直到下次改变或者清空
|
||||
@discussion 如果没有值,默认会读取 `[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]`
|
||||
@discussion 发生变化时候请调用 `+[BDAutoTrack setAppLauguage:]`更新值
|
||||
*/
|
||||
+ (void)setAppLauguage:(nullable NSString *)appLauguage;
|
||||
|
||||
/*! @abstract 用户触点 在初始化之后设置
|
||||
@discussion 如果设置过,会保存值,直到下次改变或者清空
|
||||
@discussion 如果没有值,或值为空字符串,则不会上报
|
||||
@discussion 发生变化时候请调用 `+[BDAutoTrack setAppTouchPoint:]`更新值
|
||||
*/
|
||||
+ (void)setAppTouchPoint:(NSString *)appTouchPoint;
|
||||
|
||||
/************** 设置CustomHeader(持久化,会影响下次启动) ***************/
|
||||
/**
|
||||
@abstract 添加自定义上报信息. SDK
|
||||
@param value 自定义上报value,一般需要传NSString或者数字,或者nil
|
||||
@param key 自定义上报key
|
||||
@code
|
||||
/// 新增或者修改,仅发生变化的时候使用
|
||||
[track setCustomHeaderValue:@"male" forKey:@"gender"];
|
||||
[track setCustomHeaderValue:@(29) forKey:@"age"];
|
||||
|
||||
/// 删除
|
||||
[track removeCustomHeaderValueForKey:@"gender"];
|
||||
[track removeCustomHeaderValueForKey:@"age"];
|
||||
*/
|
||||
+ (void)setCustomHeaderValue:(nullable id)value forKey:(NSString *)key;
|
||||
|
||||
/// 将字典中的KV添加进自定义上报信息。已有的键将会被覆盖。
|
||||
/// @param dictionary 值一般为字符串或数字
|
||||
+ (void)setCustomHeaderWithDictionary:(NSDictionary<NSString *, id> *)dictionary;
|
||||
|
||||
/// 删除CustomHeader中的一条KV。
|
||||
+ (void)removeCustomHeaderValueForKey:(NSString *)key;
|
||||
|
||||
/************** 设置CustomHeader(非持久化,只作用于本次启动) ***************/
|
||||
/*! @abstract 添加自定义上报信息
|
||||
@param customHeaderBlock 自定义上报信息
|
||||
@discussion customHeaderBlock 一次App启动设置一次即可;App重启需要重新设置,因为SDK不会保存上次设置的值;会覆盖之前的初始化的或者上一次设置的,如果为nil会清空回调
|
||||
@discussion block在初始化之后设置一次即可,每次都会回调,不会把block返回参数保存,而导致获取不到变化的值,请勿一直重复设置
|
||||
|
||||
[BDAutoTrack setCustomHeaderBlock:^NSDictionary<NSString *,id> * _Nonnull{
|
||||
return @{@"gender":[UserInfo GetGender],
|
||||
@"age":@([UserInfo GetAge]),
|
||||
};
|
||||
}];
|
||||
*/
|
||||
+ (void)setCustomHeaderBlock:(nullable BDAutoTrackCustomHeaderBlock)customHeaderBlock;
|
||||
|
||||
/*! @abstract 日志上报,在初始化之后设置才能调用
|
||||
@param event 事件名称,不能为nil或空字符串
|
||||
@param params 事件参数。可以为空或者nil,但是param如果非空,需要可序列化成json
|
||||
@discussion params 请参考文档中的日志格式要求,或者使用 [NSJSONSerialization isValidJSONObject:] 来检查params是否可序列化
|
||||
@result 是否成功,如果失败,则表示此日志不会被上报。原因是无法序列化。
|
||||
*/
|
||||
+ (BOOL)eventV3:(NSString *)event params:(nullable NSDictionary *)params;
|
||||
|
||||
#pragma mark - ALink
|
||||
+ (void)setALinkRoutingDelegate:(id<BDAutoTrackAlinkRouting>)ALinkRoutingDelegate;
|
||||
|
||||
+ (BOOL)continueALinkActivityWithURL:(NSURL *)ALinkURL;
|
||||
|
||||
#pragma mark - ABTest
|
||||
|
||||
/*! @abstract 获取ABTest的配置值,在初始化之后设置才能调用
|
||||
@param key ABTest的key
|
||||
@param defaultValue 默认值,如果没有配置,或者未开启ABTest则返回默认值
|
||||
@discussion 未开启ABTest或者ABTest配置了默认值,都是返回默认值,因此建议监听ABTestFinishBlock来判断是否开启了ABTest
|
||||
@discussion 通过此接口读取会触发曝光统计
|
||||
@discussion 推荐使用通知来监听ABTest配置是否拉取成功,请参考 <RangersAppLog/BDAutoTrackNotifications.h>注释
|
||||
@result 返回ABTest的配置值
|
||||
*/
|
||||
+ (nullable id)ABTestConfigValueForKey:(NSString *)key defaultValue:(nullable id)defaultValue;
|
||||
|
||||
/*! @abstract 本地缓存已加载时同`ABTestConfigValueForKey:defaultValue:`。本地缓存未加载时将阻塞等待其加载完成。
|
||||
@discussion 本地缓存一般在初始化后30-100ms内加载完成。
|
||||
此方法旨在便于业务在初始化后立即获取到已缓存的AB实验数据,可能耗时较长。
|
||||
*/
|
||||
+ (nullable id)ABTestConfigValueSyncForKey:(NSString *)key defaultValue:(nullable id)defaultValue;
|
||||
|
||||
/*! @abstract 获取ABTest 额外的vids
|
||||
@param versions 额外的vids。格式比如 @"1,2,3"。是逗号(英文)分割,逗号之间是数字
|
||||
@discussion 如果要清空上次设置,直接传nil;每次设置都会覆盖上次设置
|
||||
*/
|
||||
+ (void)setExternalABVersion:(nullable NSString *)versions;
|
||||
|
||||
/*! @abstract 获取ABTest相关配置,在初始化之后设置才能调用
|
||||
@result 返回ABTest的vid值
|
||||
@discussion 此值不需要设置到上报的event中,SDK会自动给每个event添加
|
||||
*/
|
||||
+ (nullable NSString *)abVids;
|
||||
|
||||
/*! @abstract 获取ABTest相关配置,在初始化之后设置才能调用
|
||||
@result 返回ABTest的所有的vids值
|
||||
@discussion 此接口不会触发曝光,可以随意读取
|
||||
*/
|
||||
+ (nullable NSString *)allAbVids;
|
||||
|
||||
/*! @abstract 获取ABTest相关配置,在初始化之后设置才能调用
|
||||
@result 返回ABTest的所有的Configs值
|
||||
@discussion 此接口不会触发曝光,可以随意读取。
|
||||
@discussion 如果正常为了做实验,请勿使用此接口,请使用-[BDAutoTrack ABTestConfigValueForKey:defaultValue:]接口
|
||||
*/
|
||||
+ (nullable NSDictionary *)allABTestConfigs;
|
||||
|
||||
+ (nullable NSDictionary *)allABTestConfigs2;
|
||||
|
||||
/*! @abstract 本地缓存已加载时同`abVids`。本地缓存未加载时将阻塞等待其加载完成。
|
||||
@discussion 本地缓存一般在初始化后30-100ms内加载完成。
|
||||
此方法旨在便于业务在初始化后立即获取到已缓存的AB实验数据,可能耗时较长。
|
||||
*/
|
||||
+ (nullable NSString *)abVidsSync;
|
||||
|
||||
/*! @abstract 本地缓存已加载时同`allAbVids`。本地缓存未加载时将阻塞等待其加载完成。
|
||||
@discussion 本地缓存一般在初始化后30-100ms内加载完成。
|
||||
此方法旨在便于业务在初始化后立即获取到已缓存的AB实验数据,可能耗时较长。
|
||||
*/
|
||||
+ (nullable NSString *)allAbVidsSync;
|
||||
|
||||
/*! @abstract 本地缓存已加载时同`allABTestConfigs`。本地缓存未加载时将阻塞等待其加载完成。
|
||||
@discussion 本地缓存一般在初始化后30-100ms内加载完成。
|
||||
此方法旨在便于业务在初始化后立即获取到已缓存的AB实验数据,可能耗时较长。
|
||||
*/
|
||||
+ (nullable NSDictionary *)allABTestConfigsSync;
|
||||
|
||||
#pragma mark - main app only
|
||||
|
||||
/*! @abstract 主动触发上报。SDK有频率限制,每10s最多可以触发一次
|
||||
*/
|
||||
+ (void)flush;
|
||||
|
||||
#pragma mark - private API
|
||||
|
||||
/*! @abstract 调用用户激活接口,在初始化之后设置才能调用
|
||||
一般情况下,请勿调用,除非知晓调用可能的问题
|
||||
*/
|
||||
+ (void)activeUser;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b3e9765fce68f4b17a0893a51879dbc4
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
//
|
||||
// BDAutoTrack+Special.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by bob on 2019/6/2.
|
||||
//
|
||||
|
||||
#import "BDAutoTrack.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/*!
|
||||
BDAutoTrack 内部支持上报接口,外部客户请勿调用
|
||||
*/
|
||||
@interface BDAutoTrack (Special)
|
||||
|
||||
+ (NSDictionary *)specialParamsWitAppID:(NSString *)appID
|
||||
appName:(NSString *)appName
|
||||
type:(NSString *)productType __attribute__((deprecated("推荐使多实例上报")));
|
||||
|
||||
- (BOOL)eventV3:(NSString *)event params:(nullable NSDictionary *)params specialParams:(NSDictionary *)specialParams __attribute__((deprecated("推荐使多实例上报")));
|
||||
|
||||
- (BOOL)customEvent:(NSString *)category params:(NSDictionary *)params __attribute__((deprecated("推荐使多实例上报")));
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: bb213d85c3cd846d88983598f8c15299
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,329 +0,0 @@
|
|||
//
|
||||
// BDTracker.h
|
||||
// Applog
|
||||
//
|
||||
// Created by bob on 2019/1/20.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "BDCommonDefine.h"
|
||||
#import "BDAutoTrackConfig+AppLog.h"
|
||||
#import "BDAutoTrackAlinkRouting.h"
|
||||
|
||||
@class BDAutoTrackConfig;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/*!
|
||||
BDAutoTrack日志上报功能的类
|
||||
*/
|
||||
@interface BDAutoTrack : NSObject
|
||||
|
||||
/*! @abstract
|
||||
针对每个AppID 设备唯一rangers Device ID. 非数字,随机字符串,一般情况请不要存储,从SDK接口获取即可。
|
||||
@discussion 特别说明,rangersDeviceID是字符串,不是数字
|
||||
*/
|
||||
@property (nonatomic, copy, readonly, nullable) NSString *rangersDeviceID;
|
||||
|
||||
/*! @abstract
|
||||
安装ID,是数字字符串,可以转化为数字。
|
||||
*/
|
||||
@property (nonatomic, copy, readonly, nullable) NSString *installID;
|
||||
|
||||
/*! @abstract
|
||||
数说ID,一般情况下,一个自然人的ssid是一致的。
|
||||
*/
|
||||
@property (nonatomic, copy, readonly, nullable) NSString *ssID;
|
||||
|
||||
/*! @abstract
|
||||
通过[BDAutoTrack setCurrentUserUniqueID:]接口传入到SDK内部的uuid
|
||||
*/
|
||||
@property (nonatomic, copy, readonly, nullable) NSString *userUniqueID;
|
||||
|
||||
/*! @abstract SDK是否已启动,默认为NO,调用`startTrack`或其便捷方法后为YES。
|
||||
*/
|
||||
@property (nonatomic, readonly, assign) BOOL started;
|
||||
|
||||
/*! @abstract 初始化的AppID
|
||||
*/
|
||||
@property (nonatomic, copy, readonly) NSString *appID;
|
||||
|
||||
/*! @abstract 返回SDK版本号。e.g. 6.1.0
|
||||
*/
|
||||
+ (NSString *)SDKVersion;
|
||||
|
||||
+ (instancetype)new __attribute__((unavailable()));
|
||||
- (instancetype)init __attribute__((unavailable()));
|
||||
/*! @abstract 初始化方法,初始化一个Track实例
|
||||
@param config 初始化配置,AppID AppName Channel是必须的
|
||||
@discussion 初始化接口可以重复调用,会返回同一个实例,推荐返回之后,引用住这个实例,下次上报方便使用。
|
||||
@result 一个Track实例
|
||||
*/
|
||||
+ (nullable instancetype)trackWithConfig:(BDAutoTrackConfig *)config;
|
||||
|
||||
/*! @abstract 根据App ID获取一个已经初始化过的Track实例
|
||||
@param appID AppID
|
||||
@discussion 此接口需要先调用 `[BDAutoTrack trackWithConfig:]`初始化过实例,才能获取到
|
||||
@result 一个Track实例
|
||||
*/
|
||||
+ (nullable instancetype)trackWithAppID:(NSString *)appID;
|
||||
|
||||
/*! @abstract 开始埋点和无埋点上报
|
||||
@discussion 需要在`[BDAutoTrack trackWithConfig:]`初始化之后手动调用此方法。调用此方法之前,可以做一些额外的配置
|
||||
*/
|
||||
- (void)startTrack;
|
||||
|
||||
/*! @abstract userAgent
|
||||
@discussion 每次启动SDK的时候设置一次,发生变化的时候设置即可。一般不会发生变化,只需要设置一次即可
|
||||
@param userAgent 日志上报HTTP/HTTPS 请求里面的 userAgent
|
||||
*/
|
||||
- (void)setUserAgent:(nullable NSString *)userAgent;
|
||||
|
||||
/*! @abstract UserUniqueID发生变化时设置
|
||||
@discussion 有值,则设置为ID值;登出 请调用 [BDAutoTrack clearUserUniqueID] 或者传 nil
|
||||
@discussion SDK会保存,因此只需要变化的时候设置。
|
||||
@param uniqueID 用户id,如无特殊需求,请勿传 空字符串 或者 全是空格的字符串
|
||||
@return 是否成功设置或登出。
|
||||
*/
|
||||
- (BOOL)setCurrentUserUniqueID:(nullable NSString *)uniqueID;
|
||||
|
||||
/*! @abstract 登出 logout
|
||||
@discussion 登出 logout
|
||||
*/
|
||||
- (void)clearUserUniqueID;
|
||||
|
||||
/*! @abstract 手动发起注册请求,一般不需要调用。
|
||||
@discussion
|
||||
SDK在以下情况会自动调用此方法:
|
||||
1. 初始化阶段
|
||||
2. 用户通过`setServiceVendor:`方法更改serviceVendor
|
||||
3. 用户通过`setCurrentUserUniqueID:`更改userUniqueID
|
||||
|
||||
@discussion 用户一般不需要调用此方法,除非因特殊原因需要手动发起注册(一般无必要)
|
||||
@param registeringUserUniqueID 要注册的用户ID. 如为nil则使用当前的UserUniqueID.
|
||||
@return 是否成功发起注册请求
|
||||
*/
|
||||
- (BOOL)sendRegisterRequestWithRegisteringUserUniqueID:(nullable NSString *)registeringUserUniqueID APPLOG_API_AVALIABLE(6.2.3);
|
||||
|
||||
/// 同 `sendRegisterRequestWithRegisteringUserUniqueID: nil`
|
||||
- (BOOL)sendRegisterRequest APPLOG_API_AVALIABLE(5.6.3);
|
||||
|
||||
/*! @abstract 设置上报Host地区,有国内、新加坡、美东三个选项
|
||||
@discussion 发生变化可以更新,不需要一直重复设置
|
||||
@discussion 当新设serviceVendor与旧值不一致时,会重新发起注册请求
|
||||
@param serviceVendor 地区
|
||||
*/
|
||||
- (void)setServiceVendor:(BDAutoTrackServiceVendor)serviceVendor;
|
||||
|
||||
/*! @abstract 设置自定义的URL回调
|
||||
@param requestURLBlock 回调block,设置一次即可,不需要多次设置
|
||||
@discussion requestURLBlock 会覆盖之前的初始化或者上一次设置的回调,如果为nil会清空回调
|
||||
@discussion block在初始化之前 设置一次即可,每次拉取请求都会回调,请勿一直重复设置
|
||||
*/
|
||||
- (void)setRequestURLBlock:(nullable BDAutoTrackRequestURLBlock)requestURLBlock;
|
||||
|
||||
/*! @abstract 设置自定义的URL回调
|
||||
@param requestHostBlock 回调block,设置一次即可,不需要多次设置
|
||||
@discussion requestHostBlock 会覆盖之前的初始化或者上一次设置的回调,如果为nil会清空回调
|
||||
@discussion requestURLBlock会优先于requestHostBlock
|
||||
*/
|
||||
- (void)setRequestHostBlock:(nullable BDAutoTrackRequestHostBlock)requestHostBlock;
|
||||
|
||||
/*! @abstract 地区
|
||||
@discussion 如果设置过,会保存值,直到下次改变或者清空
|
||||
@discussion 如果没有值,默认会读取 `[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode]`
|
||||
@discussion 发生变化时候请调用 `+[BDAutoTrack setAppRegion:]`更新值
|
||||
*/
|
||||
- (void)setAppRegion:(nullable NSString *)appRegion;
|
||||
|
||||
/*! @abstract 语言
|
||||
@discussion 如果设置过,会保存值,直到下次改变或者清空
|
||||
@discussion 如果没有值,默认会读取 `[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]`
|
||||
@discussion 发生变化时候请调用 `+[BDAutoTrack setAppLauguage:]`更新值
|
||||
*/
|
||||
- (void)setAppLauguage:(nullable NSString *)appLauguage;
|
||||
|
||||
/************** 设置CustomHeader(持久化,会影响下次启动) ***************/
|
||||
/**
|
||||
@abstract 添加自定义上报信息
|
||||
@param value 自定义上报value,一般需要传NSString或者数字,或者nil
|
||||
@param key 自定义上报key
|
||||
@code
|
||||
/// 新增或者修改,仅发生变化的时候使用
|
||||
[track setCustomHeaderValue:@"male" forKey:@"gender"];
|
||||
[track setCustomHeaderValue:@(29) forKey:@"age"];
|
||||
|
||||
/// 删除
|
||||
[track removeCustomHeaderValueForKey:@"gender"];
|
||||
[track removeCustomHeaderValueForKey:@"age"];
|
||||
*/
|
||||
- (void)setCustomHeaderValue:(nullable id)value forKey:(NSString *)key;
|
||||
|
||||
/// 将字典中的KV添加进自定义上报信息。已有的键将会被覆盖。
|
||||
/// @param dictionary 值一般为字符串或数字
|
||||
- (void)setCustomHeaderWithDictionary:(NSDictionary<NSString *, id> *)dictionary;
|
||||
|
||||
/// 删除CustomHeader中的一条KV。
|
||||
- (void)removeCustomHeaderValueForKey:(NSString *)key;
|
||||
|
||||
/************** 设置CustomHeader(非持久化,只作用于本次启动) ***************/
|
||||
/*! @abstract 添加自定义上报信息
|
||||
@param customHeaderBlock 自定义上报信息
|
||||
@discussion customHeaderBlock 一次App启动设置一次即可;App重启需要重新设置,因为SDK不会保存上次设置的值;会覆盖之前的初始化的或者上一次设置的,如果为nil会清空回调
|
||||
@discussion block在初始化之前设置一次即可,每次都会回调,不会把block返回参数保存,而导致获取不到变化的值,请勿一直重复设置
|
||||
|
||||
[track setCustomHeaderBlock:^NSDictionary<NSString *,id> * _Nonnull{
|
||||
return @{@"gender":[UserInfo GetGender],
|
||||
@"age":@([UserInfo GetAge]),
|
||||
};
|
||||
}];
|
||||
*/
|
||||
- (void)setCustomHeaderBlock:(nullable BDAutoTrackCustomHeaderBlock)customHeaderBlock;
|
||||
|
||||
/*! @abstract 日志上报
|
||||
@param event 事件名称,不能为nil或空字符串
|
||||
@param params 事件参数。可以为空或者nil,但是param如果非空,需要可序列化成json
|
||||
@discussion params 请参考文档中的日志格式要求,或者使用 [NSJSONSerialization isValidJSONObject:] 来检查params是否可序列化
|
||||
@result 是否成功,如果失败,则表示此日志不会被上报。原因是无法序列化。
|
||||
*/
|
||||
- (BOOL)eventV3:(NSString *)event params:(nullable NSDictionary *)params;
|
||||
|
||||
/*! @abstract 日志上报
|
||||
@param event 事件名称,不能为nil或空字符串
|
||||
@result 是否成功
|
||||
*/
|
||||
- (BOOL)eventV3:(NSString *)event;
|
||||
|
||||
#pragma mark - ABTest
|
||||
|
||||
/*! @abstract 获取ABTest的配置值
|
||||
@param key ABTest的key
|
||||
@param defaultValue 默认值,如果没有配置,或者未开启ABTest则返回默认值
|
||||
@discussion 未开启ABTest或者ABTest配置了默认值,都是返回默认值,因此建议监听BDAutoTrackNotificationABTestSuccess来判断是否开启了ABTest
|
||||
@discussion 通过此接口读取会触发曝光统计
|
||||
@result 返回ABTest的配置值
|
||||
*/
|
||||
- (nullable id)ABTestConfigValueForKey:(NSString *)key defaultValue:(nullable id)defaultValue;
|
||||
|
||||
/*! @abstract 本地缓存已加载时同`ABTestConfigValueForKey:defaultValue:`。本地缓存未加载时将阻塞等待其加载完成。
|
||||
@discussion 本地缓存一般在初始化后30-100ms内加载完成。
|
||||
此方法旨在便于业务在初始化后立即获取到已缓存的AB实验数据,可能耗时较长。
|
||||
*/
|
||||
- (nullable id)ABTestConfigValueSyncForKey:(NSString *)key defaultValue:(nullable id)defaultValue;
|
||||
|
||||
/*! @abstract 获取ABTest 额外的vids
|
||||
@param versions 额外的vids。格式比如 @"1,2,3"。是逗号(英文)分割,逗号之间是数字
|
||||
@discussion 如果要清空上次设置,直接传nil;每次设置都会覆盖上次设置
|
||||
*/
|
||||
- (void)setExternalABVersion:(nullable NSString *)versions;
|
||||
|
||||
/*! @abstract 获取ABTest相关配置
|
||||
@result 返回ABTest的vids值
|
||||
@discussion 此值不需要设置到上报的event中,SDK会自动给每个event添加
|
||||
*/
|
||||
- (nullable NSString *)abVids;
|
||||
|
||||
/*! @abstract 获取ABTest相关配置
|
||||
@result 返回ABTest的所有的vids值
|
||||
@discussion 此接口不会触发曝光,可以随意读取
|
||||
*/
|
||||
- (nullable NSString *)allAbVids;
|
||||
|
||||
/*! @abstract 获取ABTest相关配置
|
||||
@result 返回ABTest的所有的Configs值
|
||||
@discussion 此接口不会触发曝光,可以随意读取。
|
||||
@discussion 如果正常为了做实验,请勿使用此接口,请使用-[BDAutoTrack ABTestConfigValueForKey:defaultValue:]接口
|
||||
*/
|
||||
- (nullable NSDictionary *)allABTestConfigs;
|
||||
|
||||
/// `allABTestConfigs` version 2. Align with web and Android.
|
||||
/// return raw key-value in server response.
|
||||
- (nullable NSDictionary *)allABTestConfigs2;
|
||||
|
||||
/*! @abstract 本地缓存已加载时同`abVids`。本地缓存未加载时将阻塞等待其加载完成。
|
||||
@discussion 本地缓存一般在初始化后30-100ms内加载完成。
|
||||
此方法旨在便于业务在初始化后立即获取到已缓存的AB实验数据,可能耗时较长。
|
||||
*/
|
||||
- (nullable NSString *)abVidsSync;
|
||||
|
||||
/*! @abstract 本地缓存已加载时同`allAbVids`。本地缓存未加载时将阻塞等待其加载完成。
|
||||
@discussion 本地缓存一般在初始化后30-100ms内加载完成。
|
||||
此方法旨在便于业务在初始化后立即获取到已缓存的AB实验数据,可能耗时较长。
|
||||
*/
|
||||
- (nullable NSString *)allAbVidsSync;
|
||||
|
||||
/*! @abstract 本地缓存已加载时同`allABTestConfigs`。本地缓存未加载时将阻塞等待其加载完成。
|
||||
@discussion 本地缓存一般在初始化后30-100ms内加载完成。
|
||||
此方法旨在便于业务在初始化后立即获取到已缓存的AB实验数据,可能耗时较长。
|
||||
*/
|
||||
- (nullable NSDictionary *)allABTestConfigsSync;
|
||||
|
||||
#pragma mark - ALink
|
||||
/* 如果你的应用不使用ALink功能,可忽略此节。 */
|
||||
/*! 设置路由代理对象。路由代理对象负责接受SDK回传的路由数据,并根据数据做页面路由。
|
||||
@discussion 如应用不使用ALink功能,可忽略。
|
||||
*/
|
||||
- (void)setALinkRoutingDelegate:(id<BDAutoTrackAlinkRouting>)ALinkRoutingDelegate;
|
||||
|
||||
/*! 此方法内部会判断参数是否为有效的ALink。如果是则会异步请求路由数据,并回传给路由代理对象。
|
||||
@discussion 如果你的应用没有使用UIScene,你应该在`application: openURL: options:`和`application: continueUserActivity: restorationHandler:`处调用此方法。
|
||||
如果你的应用使用了UIScene,请参考没有使用UIScene的情况,并结合你应用的具体情况,判断在何处调用此方法,一般可以在`scene: openURLContexts:`和`scene:continueUserActivity:`处调用此方法。
|
||||
如应用不使用ALink功能,可忽略。
|
||||
@param ALinkURL 深度链接URL。可以是Universal Link 或 Custom URL Scheme
|
||||
@return 是否是有效的ALink
|
||||
@code
|
||||
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
|
||||
if([BDAdapter handleURL:url scene:nil]) {
|
||||
return YES;
|
||||
}
|
||||
if ([BDAutoTrack continueALinkActivityWithURL:url]) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
/// your handle code
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
|
||||
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
|
||||
NSURL *universalLinkURL = userActivity.webpageURL;
|
||||
if ([universalLinkURL.host isEqualToString:@"myapphost.com"]) {
|
||||
// 如你的应用有多个Universal Links域名,可以先判断是否是其他域名。
|
||||
return YES;
|
||||
}
|
||||
else if ([BDAutoTrack continueALinkActivityWithURL:userActivity.webpageURL]) { // 多半是ALink,交给AppLog SDK来处理。如果不是ALink,SDK也会返回NO。
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
*/
|
||||
- (BOOL)continueALinkActivityWithURL:(NSURL *)ALinkURL;
|
||||
|
||||
#pragma mark - private API
|
||||
|
||||
/*! @abstract 调用用户激活接口。一般情况下,请勿调用,除非知晓调用可能的问题。
|
||||
*/
|
||||
- (void)activeUser;
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark - Special
|
||||
|
||||
@interface BDAutoTrack (SharedSpecial)
|
||||
|
||||
+ (BOOL)eventV3:(NSString *)event params:(nullable NSDictionary *)params specialParams:(NSDictionary *)specialParams;
|
||||
|
||||
+ (BOOL)customEvent:(NSString *)category params:(NSDictionary *)params;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
/// 单例的类方法
|
||||
#import "BDAutoTrack+SharedInstance.h"
|
||||
#import "BDAutoTrack+Profile.h"
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: edc7ff870c0e54c5c833da7b35984b6d
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
//
|
||||
// BDAutoTrackAlinkRouting.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by 朱元清 on 2021/3/2.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
static NSErrorDomain const RALALinkErrorDomain = @"RALALinkErrorDomain";
|
||||
|
||||
@protocol BDAutoTrackAlinkRouting <NSObject>
|
||||
@required
|
||||
|
||||
- (void)onAttributionData:(nullable NSDictionary *)routingInfo error:(nullable NSError *)error;
|
||||
|
||||
- (void)onALinkData:(nullable NSDictionary *)routingInfo error:(nullable NSError *)error;
|
||||
|
||||
- (bool)shouldALinkSDKAccessPasteBoard;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 53d8b3e8c9d3344ad951895692901918
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
//
|
||||
// BDAutoTrackCacheRemover.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by 朱元清 on 2020/11/2.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "RangersAppLog.h"
|
||||
|
||||
/**
|
||||
本文件包含SDK缓存的接口。仅限于开发调试阶段清除SDK缓存之用途。生产环境禁止使用!
|
||||
本文件接口主要是为了自动化测试中快速删除缓存。
|
||||
如果您不是自动化测试,建议通过在手机或模拟器上删除应用的方式来清除缓存,更方便快捷;不必使用本文件的接口。
|
||||
*/
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface BDAutoTrackCacheRemover : NSObject
|
||||
|
||||
|
||||
/*********************************** SDK私有缓存 ************************************/
|
||||
/// 永久删除 SDK 私有缓存(包括deviceID\ssID\installID\userUniqueID\ABTest配置等信息)
|
||||
- (void)removeDefaultsForAppID:(NSString *)appID;
|
||||
|
||||
|
||||
/*********************************** StandardDefaults ************************************/
|
||||
/// 临时将应用层移除出StandardDefaults的搜索列表
|
||||
- (void)removeCurrentBundleFromStandardDefaultsSearchList;
|
||||
|
||||
/// 永久删除 StandardDefaults 的应用层缓存
|
||||
- (void)removeCurrentBundleFromStandardDefaults;
|
||||
|
||||
|
||||
/*********************************** KeyChain ************************************/
|
||||
/// 删除SDK再 keychian 中的缓存
|
||||
- (void)removeKeychainForAppID:(NSString *)appID serviceVendor:(BDAutoTrackServiceVendor)vendor;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e3d654ff7da404509bd195334dd72b79
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
//
|
||||
// BDAutoTrackConfig+AppLog.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by bob on 2020/3/25.
|
||||
//
|
||||
|
||||
#import "BDAutoTrackConfig.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface BDAutoTrackConfig (AppLog)
|
||||
|
||||
/*! @abstract 是否开启事件上报,默认YES,关闭后任何事件包括用户自定义事件都不会上报
|
||||
@discussion 有些客户只需要ABTest功能,不需要任何事件上报,包括曝光事件,可以通过这个关闭
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL trackEventEnabled;
|
||||
|
||||
/*! @abstract 是否开启无埋点。同时需要在Tea配置。
|
||||
@discussion 如果设置NO且Tea平台配置NO,则不会采集无埋点事件
|
||||
@discussion 如果设置NO且Tea平台配置YES,则拉取配置成功后开始采集无埋点事件
|
||||
@discussion 如果设置YES且Tea平台配置NO,则拉取配置成功后停止采集无埋点事件
|
||||
@discussion 如果设置YES且Tea平台配置YES,则采集无埋点事件
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL autoTrackEnabled;
|
||||
|
||||
/*! @abstract 当无埋点开关开启时,是否采集H5页面的无埋点事件,默认开(YES)
|
||||
*/
|
||||
@property (nonatomic) BOOL H5AutoTrackEnabled;
|
||||
|
||||
/*! @abstract 游戏模式,开启游戏模式会默认上报游戏心跳事件 */
|
||||
@property (nonatomic, assign) BOOL gameModeEnable;
|
||||
|
||||
/*! @abstract 是否自动激活。默认YES,一般情况请不要修改 */
|
||||
@property (nonatomic, assign) BOOL autoActiveUser;
|
||||
|
||||
/*! @abstract 采集事件的时候输出日志,在控制台中可以查看
|
||||
@discussion 需要同时设置logger,因为NSLog低效,且在iOS 13中有问题。release版本请设置为NO
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL showDebugLog;
|
||||
|
||||
/*! @abstract 采集事件的时候输出日志,在控制台中可以查看
|
||||
@discussion logger为nil,则不会输出日志
|
||||
*/
|
||||
@property (nonatomic, copy, nullable) BDAutoTrackLogger logger;
|
||||
|
||||
/*! @abstract 日志上报是否加密。用于debug情况可以抓包调试 */
|
||||
@property (nonatomic, assign) BOOL logNeedEncrypt;
|
||||
|
||||
/*! @abstract 是否自动拉配置。默认YES,一般情况请不要修改。仅私有化部署情况,可能不需要自动拉取配置 */
|
||||
@property (nonatomic, assign) BOOL autoFetchSettings;
|
||||
|
||||
/*! @abstract 是否开AB。默认YES,一般情况请不要修改 */
|
||||
@property (nonatomic, assign) BOOL abEnable;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2739e46b6f6b0463c9128c53d15244d9
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,104 +0,0 @@
|
|||
//
|
||||
// BDAutoTrackConfig.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by bob on 2020/3/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "BDCommonDefine.h"
|
||||
#import "BDAutoTrackEncryptionDelegate.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface BDAutoTrackConfig : NSObject
|
||||
|
||||
/*! @abstract channel默认 @"App Store", Release版本只有 @"App Store", debug版本可以任意设置. */
|
||||
@property (nonatomic, copy) NSString *channel;
|
||||
|
||||
/*! @abstract 申请appID时候填写的英文名称 */
|
||||
@property (nonatomic, copy, nullable) NSString *appName;
|
||||
|
||||
/*! @abstract AppID,非空,必须设置 */
|
||||
@property (nonatomic, copy) NSString *appID;
|
||||
|
||||
/*! @abstract 默认国内,初始化时一定要传正确的值
|
||||
@discussion 发生变化时候请调用 `+[BDAutoTrack setServiceVendor:]`更新值
|
||||
@discussion 会影响注册和日志上报。所以如果发生变化后,下次启动初始化请传入正确的值
|
||||
*/
|
||||
@property (nonatomic, copy) BDAutoTrackServiceVendor serviceVendor;
|
||||
|
||||
/*! @abstract 如有初始的UserUniqueID,可以在此设置。
|
||||
@discussion 此属性解决了一些业务需要在SDK初始化时就设置UserUniqueID的需求。
|
||||
@discussion Note: 在应用第一次启动时,SDK会在初始化时设置UserUniqueID为此属性的值。
|
||||
后续用户登出后,UserUniqueID会变为nil,此时SDK不会重新把UserUniqueID设置为此属性的值。
|
||||
*/
|
||||
@property (nonatomic, copy, nullable) NSString *initialUserUniqueID;
|
||||
|
||||
/*! @abstract 是否开启 WKWebView 的 H5 打通功能,开启后,若WebView页面的JS AppLog SDK侧也配置开启H5Bridge,则H5 埋点将可以从 Native 端上报。默认关闭。
|
||||
*/
|
||||
@property (nonatomic) BOOL enableH5Bridge;
|
||||
|
||||
/*! @abstract 是否开启ALink的延迟场景。默认开启。 */
|
||||
@property (nonatomic) BOOL enableDeferredALink;
|
||||
|
||||
/*! H5Bridge功能域名白名单。只有名单中的页面会开启Bridge。支持通配符。
|
||||
* @code
|
||||
* config.H5BridgeAllowedDomainPatterns = @[@"*.myapp.com", @"myapp.com"];
|
||||
*/
|
||||
@property (nonatomic, copy) NSArray<NSString *> *H5BridgeAllowedDomainPatterns;
|
||||
|
||||
/*! 当切换用户时,清除AB Versions缓存。默认为开(YES)。
|
||||
*/
|
||||
@property (nonatomic) BOOL clearABCacheOnUserChange;
|
||||
|
||||
/*! 应用启动选项 */
|
||||
@property (nonatomic, readonly) NSDictionary<UIApplicationLaunchOptionsKey, id> *launchOptions;
|
||||
|
||||
/*! @abstract Define custom encryption method (or custom encryption key)
|
||||
@discussion SDK不持有该对象。传入前须确保该对象在SDK使用期间不被释放,请勿传入临时对象。
|
||||
SDK will not hold the delegate. Please ensure the delegate's liveness during SDK's usage. Do not pass temporary object.
|
||||
*/
|
||||
@property (nonatomic, weak) id<BDAutoTrackEncryptionDelegate> encryptionDelegate;
|
||||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
+ (instancetype)new NS_UNAVAILABLE;
|
||||
|
||||
/*! @abstract 根据App ID获取一个config
|
||||
@param appID 注册应用时获取的AppID
|
||||
@param launchOptions 应用启动选项,一般直接传入`application:didFinishLaunchingWithOptions:`的`launchOptions`参数即可
|
||||
*/
|
||||
+ (instancetype)configWithAppID:(NSString *)appID launchOptions:(nullable NSDictionary<UIApplicationLaunchOptionsKey,id> *)launchOptions APPLOG_API_AVALIABLE(6.0.0);
|
||||
|
||||
/*! @abstract 根据App ID获取一个config
|
||||
@param appID AppID
|
||||
@result 一个config实例, 其他参数非必填,或者有默认值,可以直接通过setter 设置
|
||||
@discussion 如果您要使用ALink功能,请勿使用此API。此API已过时,后续版本将下掉,请及时使用新API。
|
||||
*/
|
||||
+ (instancetype)configWithAppID:(NSString *)appID APPLOG_API_DEPRECATED_WITH_REPLACEMENT("configWithAppID:launchOptions:");
|
||||
|
||||
/*!
|
||||
使用示例1:
|
||||
BDAutoTrackConfig *config = [BDAutoTrackConfig configWithSecondAppID:appid];
|
||||
// 初始化完成之后,可以调用其他接口
|
||||
BDAutoTrack *track = [BDAutoTrack trackWithConfig:config]
|
||||
|
||||
// 设置一些属性等配置
|
||||
[track setCurrentUserUniqueID:@"123"];
|
||||
|
||||
// 开始上报
|
||||
[track satrtTrack];
|
||||
|
||||
// 用变量引用住track用于上报
|
||||
[track eventV3:xxx params:xxx];
|
||||
*/
|
||||
|
||||
/*! @abstract 根据App ID获取一个config
|
||||
@param appID AppID
|
||||
@result 一个config实例, 此config默认设置了不会激活和拉取settings。可用于第三方SDK需要上报一些事件,但是不需要激活等
|
||||
*/
|
||||
+ (instancetype)configWithSecondAppID:(NSString *)appID;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cd2437fc66a8f4da4a39e872de48dd96
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
//
|
||||
// BDAutoTrackEncryptionDelegate.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by 朱元清 on 2021/8/9.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol BDAutoTrackEncryptionDelegate <NSObject>
|
||||
@required
|
||||
/// Encrypt data for HTTP request. Use your custom encryption method by implementing this protocol and inject it into BDAutoTracker in its initialization.
|
||||
/// Only takes effect when `logNeedEncypt` is YES.
|
||||
/// The following data will be passed to this method:
|
||||
/// (1) All HTTP POST body data
|
||||
/// (2) Some HTTP query data
|
||||
/// @param data data before encryption
|
||||
/// @param error in-out param. Set it when encryption fails.
|
||||
- (NSData *)encryptData:(NSData *)data error:(NSError * __autoreleasing *)error;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f8a5af045d53b4beba81fa7704965d4b
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
//
|
||||
// BDAutoTrackIDFA.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by bob on 2020/8/28.
|
||||
//
|
||||
|
||||
#import "BDCommonDefine.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface BDAutoTrackIDFA : NSObject
|
||||
|
||||
/**
|
||||
if you want to use idfa, you should request Authorization
|
||||
*/
|
||||
+ (BDAutoTrackAuthorizationStatus)authorizationStatus;
|
||||
+ (void)requestAuthorizationWithHandler:(nullable BDAutoTrackAuthorizationHandler)completion;
|
||||
+ (nullable NSString *)trackingIdentifier;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9365f75dd91b74df1a34c2379441b6b3
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
//
|
||||
// BDAutoTrackConstants.h
|
||||
// Pods-BDAutoTracker_Example
|
||||
//
|
||||
// Created by bob on 2019/5/16.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#ifndef BDAutoTrackNotifictaion_H
|
||||
#define BDAutoTrackNotifictaion_H
|
||||
/*! @abstract UIViewController 切换事件通知
|
||||
userInfo
|
||||
@{ kBDAutoTrackViewControllerFormer:NSStringFromClass(from.class),
|
||||
kBDAutoTrackViewControllerAfter:NSStringFromClass(to.class),
|
||||
kBDAutoTrackSwitchIsBack:@(isBack)
|
||||
};
|
||||
@discussion 通知在主线程,一般情况下监听后,请勿同步进行耗时操作
|
||||
*/
|
||||
FOUNDATION_EXTERN NSString * const BDAutoTrackVCSwitchEventNotification;
|
||||
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackViewControllerFormer;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackViewControllerAfter;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackSwitchIsBack;
|
||||
|
||||
/*! @abstract SDK 注册成功通知
|
||||
userInfo
|
||||
@{ kBDAutoTrackNotificationAppID :appID,
|
||||
kBDAutoTrackNotificationRangersDeviceID :did,
|
||||
kBDAutoTrackNotificationSSID :ssid,
|
||||
kBDAutoTrackNotificationInstallID :iid
|
||||
kBDAutoTrackNotificationUserUniqueID :uuid
|
||||
kBDAutoTrackNotificationDataSource: BDAutoTrackNotificationDataSourceLocalCache | BDAutoTrackNotificationDataSourceServer
|
||||
kBDAutoTrackNotificationIsNewUser : 1 | 0
|
||||
};
|
||||
@discussion 通知在子线程,uuid可能为 nil.
|
||||
@discussion 初始化 SDK 的时候,如果本地已经有 ID 值,会有一次通知
|
||||
触发重新注册请求后,请求成功会有另一次通知
|
||||
触发条件:
|
||||
1. -[BDAuTrack startTrack]
|
||||
2. -[BDAuTrack setCurrentUserUniqueID:] 且与上次不一致,包括 nil
|
||||
3. -[BDAuTrack setServiceVendor:] 且与上次不一致
|
||||
*/
|
||||
FOUNDATION_EXTERN NSString * const BDAutoTrackNotificationRegisterSuccess;
|
||||
|
||||
/*!
|
||||
@abstract SDK 注册请求失败通知。SDK在注册阶段默认有3次重试策略。每一次注册请求的失败都会触发此通知,并携带剩余的重试次数。
|
||||
userInfo
|
||||
@{
|
||||
@"message": @"register request failure",
|
||||
@"remainingRetry": 剩余重试机会(次数)
|
||||
};
|
||||
*/
|
||||
FOUNDATION_EXTERN NSString * const BDAutoTrackNotificationRegisterFailure;
|
||||
|
||||
/*! @abstract SDK 激活成功通知
|
||||
userInfo
|
||||
@{ kBDAutoTrackNotificationAppID :appID,
|
||||
};
|
||||
@discussion 通知在子线程,每次触发注册成功后,会触发激活请求
|
||||
*/
|
||||
FOUNDATION_EXTERN NSString * const BDAutoTrackNotificationActiveSuccess;
|
||||
|
||||
/*! @abstract SDK ABTest配置拉取成功通知
|
||||
userInfo
|
||||
@{ kBDAutoTrackNotificationAppID :appID,
|
||||
kBDAutoTrackNotificationData :data,
|
||||
};
|
||||
@discussion 通知在子线程,每次触发注册成功后,且该 App ID 配置了 ABTest 功能,会触发 ABTest 配置拉取。
|
||||
收到通知成功后,则可以开始读取 ABTest 值,如果未收到通知,则读取的 ABTest 为上次拉取成功的值。
|
||||
这里重点说明不需要去解析data的结构,简单check一下data.count == 0 即可
|
||||
如果需要获取所有的ABTest配置,请使用 -[BDAutoTrack allABTestConfigs] 接口
|
||||
*/
|
||||
FOUNDATION_EXTERN NSString * const BDAutoTrackNotificationABTestSuccess;
|
||||
|
||||
/*! @abstract SDK通知的userInfo的 key 定义
|
||||
若无特别说明,值类型为NSString。
|
||||
*/
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationAppID;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationRangersDeviceID;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationSSID;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationInstallID;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationUserUniqueID;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationData;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationIsNewUser; // 设备注册服务返回,标识是否是新设备. 值为NSNumber(1/0)。
|
||||
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationDataSource; // 通知来源
|
||||
|
||||
typedef NSString * const BDAutoTrackNotificationDataSource NS_TYPED_ENUM;
|
||||
FOUNDATION_EXTERN BDAutoTrackNotificationDataSource BDAutoTrackNotificationDataSourceLocalCache; // 通知的数据来自于恢复本地缓存
|
||||
FOUNDATION_EXTERN BDAutoTrackNotificationDataSource BDAutoTrackNotificationDataSourceServer; // 通知的数据来自于服务器响应
|
||||
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationDataSourceURL; // 若通知的数据来自于服务器响应,则userInfo会含有此键。其值是请求URL
|
||||
|
||||
/*! @abstract SDK ABTestVid发生变化时候的通知
|
||||
userInfo
|
||||
@{ kBDAutoTrackNotificationAppID :appID,
|
||||
kBDAutoTrackNotificationABTestVids :vids,
|
||||
kBDAutoTrackNotificationABTestExternalVids:externalVids
|
||||
};
|
||||
@discussion 通知在子线程,每次Vid发生变化时触发。需要该 App ID 配置了 ABTest 功能,否则不会有通知。
|
||||
*/
|
||||
FOUNDATION_EXTERN NSString * const BDAutoTrackNotificationABTestVidsChanged;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationABTestVids;
|
||||
FOUNDATION_EXTERN NSString * const kBDAutoTrackNotificationABTestExternalVids;
|
||||
|
||||
#endif
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cd3423c00671a47deaae93d979b64706
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
//
|
||||
// BDAutoTrackSchemeHandler.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by bob on 2019/9/24.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "BDCommonDefine.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/* 如果是iOS 13中重写UISceneDelegate的回调,则按照i以下code
|
||||
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
|
||||
for (UIOpenURLContext *context in URLContexts) {
|
||||
NSURL *URL = context.URL;
|
||||
if ([[BDAutoTrackSchemeHandler sharedHandler] handleURL:URL appID:@"appid" scene:scene]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/// your handle code for the URL
|
||||
}
|
||||
}
|
||||
|
||||
如果是iOS 13一下,重写UIApplicationDelegate的回调方法,则参考以下code
|
||||
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
|
||||
if ([[BDAutoTrackSchemeHandler sharedHandler] handleURL:url appID:@"appid" scene:nil]) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
/// your handle code
|
||||
|
||||
return NO;
|
||||
}
|
||||
*/
|
||||
|
||||
@interface BDAutoTrackSchemeHandler : NSObject<BDAutoTrackSchemeHandler>
|
||||
|
||||
+ (instancetype)sharedHandler;
|
||||
|
||||
- (BOOL)handleURL:(NSURL *)URL appID:(NSString *)appID scene:(nullable id)scene;
|
||||
|
||||
- (void)registerHandler:(id<BDAutoTrackSchemeHandler>)handler;
|
||||
- (void)unregisterHandler:(id<BDAutoTrackSchemeHandler>)handler;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: bea89bec20a2e4e2aa094b891f85b1f7
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
//
|
||||
// BDAutoTrackURLHostItemCN.h
|
||||
// RangersAppLog-RangersAppLog
|
||||
//
|
||||
// Created by 朱元清 on 2020/8/6.
|
||||
//
|
||||
|
||||
#import "BDCommonEnumDefine.h"
|
||||
|
||||
FOUNDATION_EXPORT BDAutoTrackServiceVendor const BDAutoTrackServiceVendorCN;
|
||||
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7557f5c9eedea4450a6face29b8d1581
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
//
|
||||
// BDCommonDefine.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by bob on 2020/3/25.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "BDCommonEnumDefine.h"
|
||||
|
||||
#define APPLOG_API_AVALIABLE(x)
|
||||
#define APPLOG_API_DEPRECATED __deprecated
|
||||
#define APPLOG_API_DEPRECATED_WITH_REPLACEMENT(msg) __deprecated_msg("please use '" msg "'")
|
||||
// 编译时断言
|
||||
#define APPLOG_STATIC_ASSERT(COND,MSG) typedef char static_assertion_##MSG[(COND)?1:-1]
|
||||
|
||||
#ifndef BDCommonDefine_h
|
||||
#define BDCommonDefine_h
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/*
|
||||
request IDFA handler
|
||||
*/
|
||||
typedef void (^BDAutoTrackAuthorizationHandler)(BDAutoTrackAuthorizationStatus status);
|
||||
|
||||
/*! @abstract 日志输出
|
||||
@param log 输出的日志
|
||||
@discussion 请使用自己的日志SDK输出日志
|
||||
*/
|
||||
typedef void(^BDAutoTrackLogger)(NSString * _Nullable log);
|
||||
|
||||
|
||||
/*! @abstract 自定义请求链接,把相关请求发送到对应的自定义的URL上
|
||||
@param vendor 地区
|
||||
@param requestURLType 上面的六个枚举值
|
||||
@discussion 一般情况不需要实现;如果实现,针对想改变的枚举值返回一个准确的URL,其他不想修改的返回nil即可
|
||||
@result 返回自定义的URL
|
||||
*/
|
||||
typedef NSString * _Nullable (^BDAutoTrackRequestURLBlock)(BDAutoTrackServiceVendor vendor, BDAutoTrackRequestURLType requestURLType);
|
||||
|
||||
/*! @abstract 自定义请求链接的Host,把相关请求发送到对应的自定义的Host上,path仍然按照SDK规则拼接
|
||||
@param vendor 地区
|
||||
@param requestURLType 上面的六个枚举值
|
||||
@discussion 一般情况不需要实现;如果实现,返回值类似 https://github.com/
|
||||
@result 返回自定义的URL
|
||||
*/
|
||||
typedef NSString * _Nullable (^BDAutoTrackRequestHostBlock)(BDAutoTrackServiceVendor vendor, BDAutoTrackRequestURLType requestURLType);
|
||||
|
||||
|
||||
/*! @abstract 自定义上报信息
|
||||
@discussion 每次上报都会回调,设置一次即可,格式要求同日志要求,需要可序列化;如果无法序列化,会被丢弃
|
||||
@result NSDictionary custom数据
|
||||
*/
|
||||
typedef NSDictionary<NSString*, id> *_Nonnull (^BDAutoTrackCustomHeaderBlock)(void);
|
||||
|
||||
@protocol BDAutoTrackSchemeHandler <NSObject>
|
||||
|
||||
/*! @abstract 处理scheme
|
||||
@discussion 请参考下面接口调用示例
|
||||
@param URL scheme的完整URL,透传参数
|
||||
@param appID 初始化SDK的AppID
|
||||
@param scene 适配iOS 13的参数,透传参数
|
||||
@result 返回YES,表示已经处理了该URL,NO表示没有处理
|
||||
*/
|
||||
- (BOOL)handleURL:(NSURL *)URL appID:(NSString *)appID scene:(nullable id)scene;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
#endif /* BDCommonDefine_h */
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e4f710d39d4b041cda10fd769fdae974
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
//
|
||||
// BDCommonEnumDefine.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by 朱元清 on 2020/8/10.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#ifndef BDCommonEnumDefine_h
|
||||
#define BDCommonEnumDefine_h
|
||||
|
||||
/*! @abstract 日志上报地区属性
|
||||
@discussion 上报地区请勿擅自选择,需要与申请服务的地区一致,或者咨询接口人确认
|
||||
*/
|
||||
typedef NSString* BDAutoTrackServiceVendor NS_EXTENSIBLE_STRING_ENUM;
|
||||
FOUNDATION_EXTERN BDAutoTrackServiceVendor const BDAutoTrackServiceVendorPrivate; // 私有化,此时一定要设置BDAutoTrackRequestURLBlock
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
请求URL type
|
||||
*/
|
||||
typedef NSInteger BDAutoTrackRequestURLType NS_TYPED_ENUM;
|
||||
|
||||
FOUNDATION_EXTERN BDAutoTrackRequestURLType const BDAutoTrackRequestURLRegister; // 注册
|
||||
FOUNDATION_EXTERN BDAutoTrackRequestURLType const BDAutoTrackRequestURLActivate; // 激活
|
||||
FOUNDATION_EXTERN BDAutoTrackRequestURLType const BDAutoTrackRequestURLSettings; // 基本配置
|
||||
FOUNDATION_EXTERN BDAutoTrackRequestURLType const BDAutoTrackRequestURLABTest; // ABTest配置
|
||||
FOUNDATION_EXTERN BDAutoTrackRequestURLType const BDAutoTrackRequestURLLog; // 日志上报
|
||||
FOUNDATION_EXTERN BDAutoTrackRequestURLType const BDAutoTrackRequestURLLogBackup; // 日志上报备用
|
||||
FOUNDATION_EXTERN BDAutoTrackRequestURLType const BDAutoTrackRequestURLProfile; // profile事件上报专用
|
||||
FOUNDATION_EXTERN BDAutoTrackRequestURLType const BDAutoTrackRequestURLALinkLinkData; // ALink 获取链接参数
|
||||
FOUNDATION_EXTERN BDAutoTrackRequestURLType const BDAutoTrackRequestURLALinkAttributionData; // ALink 获取归因
|
||||
|
||||
typedef NS_ENUM(NSUInteger, BDAutoTrackLaunchFrom) {
|
||||
/// 初始状态
|
||||
BDAutoTrackLaunchFromInitialState = 0,
|
||||
/// 用户手动点击进入app
|
||||
BDAutoTrackLaunchFromUserClick,
|
||||
/// 用户通过push点击进入app
|
||||
BDAutoTrackLaunchFromRemotePush,
|
||||
/// 用户通过widget点击进入app
|
||||
BDAutoTrackLaunchFromWidget,
|
||||
/// 用户通过sptlight点击进入app
|
||||
BDAutoTrackLaunchFromSpotlight,
|
||||
/// 用户通过外部app唤醒进入app
|
||||
BDAutoTrackLaunchFromExternal,
|
||||
/// 用户手动切回前台
|
||||
BDAutoTrackLaunchFromBackground,
|
||||
/// from siri
|
||||
BDAutoTrackLaunchFromSiri,
|
||||
};
|
||||
|
||||
/**
|
||||
IDFA Authorization Status
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, BDAutoTrackAuthorizationStatus) {
|
||||
BDAutoTrackAuthorizationStatusNotDetermined = 0,
|
||||
BDAutoTrackAuthorizationStatusRestricted,
|
||||
BDAutoTrackAuthorizationStatusDenied,
|
||||
BDAutoTrackAuthorizationStatusAuthorized
|
||||
};
|
||||
|
||||
#endif /* BDCommonEnumDefine_h */
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7b3718b05caa441beb29ffba6f700ad8
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
//
|
||||
// BDKeyWindowTracker.h
|
||||
// RangersAppLog
|
||||
//
|
||||
// Created by bob on 2019/8/12.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
UIKIT_EXTERN NSString * const BDDefaultScene;
|
||||
|
||||
@interface BDKeyWindowTracker : NSObject
|
||||
|
||||
/*! @abstract keyWindow for BDDefaultScene
|
||||
@discussion setter等同于调用`-[BDKeyWindowTracker trackScene:BDDefaultScene keyWindow:keyWindow]`
|
||||
@discussion getter等同于调用`-[BDKeyWindowTracker keyWindowForScene:BDDefaultScene]`
|
||||
@discussion 如果只有一个Scene,或者说没有Scene,比如低于iOS 13,则可以只使用keyWindow属性即可
|
||||
*/
|
||||
@property (nonatomic, strong, nullable) UIWindow *keyWindow;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/*! @abstract 设置scene的keywindow
|
||||
@discussion 发生变化可以更新,不需要一直重复设置
|
||||
@param scene 某个UIWindowScene的唯一标志,推荐使用 scene = [NSString stringWithFormat:@"%p",windowScene];
|
||||
@param keyWindow 该scene的keywindow
|
||||
*/
|
||||
- (void)trackScene:(NSString *)scene keyWindow:(nullable UIWindow *)keyWindow;
|
||||
|
||||
/*! @abstract 获取该scene的keywindow
|
||||
@param scene 某个UIWindowScene的唯一标志,推荐使用 scene = [NSString stringWithFormat:@"%p",windowScene];
|
||||
@result keyWindow 返回该scene的keywindow
|
||||
*/
|
||||
- (nullable UIWindow *)keyWindowForScene:(NSString *)scene;
|
||||
|
||||
/*! @abstract 移除scene的keywindow
|
||||
@param scene 某个UIWindowScene的唯一标志,推荐使用 scene = [NSString stringWithFormat:@"%p",windowScene];
|
||||
*/
|
||||
- (void)removeKeyWindowForScene:(NSString *)scene; /// when you want set nil
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 85beb69f4b1dd4e1185c991dac30ac59
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
//
|
||||
// NSArray+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSArray (OK)
|
||||
|
||||
- (id)ok_safeJsonObject;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 37221e2bef2b24cab944c60d02883b17
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
//
|
||||
// NSData+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSData (OK)
|
||||
|
||||
- (NSString *)ok_md5String;
|
||||
- (NSString *)ok_sha256String;
|
||||
- (NSString *)ok_hexString;
|
||||
- (nullable id)ok_jsonValueDecoded;
|
||||
- (nullable id)ok_jsonValueDecoded:(NSError *__autoreleasing *)error;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 50cea153c68ba49b191518e1e6232783
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
//
|
||||
// NSData+OneKitDecorator.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2019/11/7.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSData (OneKitDecorator)
|
||||
|
||||
/// 通用包装方法
|
||||
- (nullable NSData *)rsk_dataByDecorated;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 8bf6a8bf741a243d18282ad624f56553
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
//
|
||||
// NSData+OKGZIP.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/6/12.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSData (OKGZIP)
|
||||
|
||||
/// GZIP
|
||||
- (nullable NSData *)ok_dataByGZipCompressingWithError:(NSError * __autoreleasing *)error;
|
||||
- (BOOL)ok_isGzipCompressedData;
|
||||
- (nullable NSData *)ok_dataByGZipDecompressingDataWithError:(NSError * __autoreleasing *)error;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 895a0556173134a97ba232b3f1db6f69
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
//
|
||||
// NSData+OKSecurity.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/*! @abstract AES 加密 key size类型
|
||||
@discussion key size要和传入的key符合
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, OKAESKeySize) {
|
||||
OKAESKeySizeAES128 = 0x10, /// 对应key的byte是16字节
|
||||
OKAESKeySizeAES192 = 0x18, /// 对应key的byte是24字节
|
||||
OKAESKeySizeAES256 = 0x20, /// 对应key的byte是32字节
|
||||
};
|
||||
|
||||
@interface NSData (OKSecurity)
|
||||
|
||||
|
||||
/*! @abstract AES 加密方法
|
||||
@param key 加密的key,这个需要和keySize对应的byte一致。如果过长,会截断;如果过短,默认用0填充
|
||||
@param keySize 参考枚举值OKAESKeySize三种选项
|
||||
@param iv 如果 iv是nil,则使用EBC模式,不为nil则使用CBC模式。iv要求16字节
|
||||
@result 加密结果,失败则返回nil
|
||||
@discussion key和keySize要对应
|
||||
*/
|
||||
- (nullable NSData *)ok_aesEncryptWithkey:(NSString *)key
|
||||
keySize:(OKAESKeySize)keySize
|
||||
iv:(nullable NSString *)iv;
|
||||
|
||||
/*! @abstract AES 加密方法
|
||||
@param keyData 加密的key,这个需要和keySize对应的byte一致。如果过长,会截断;如果过短,默认用0填充
|
||||
@param keySize 参考枚举值OKAESKeySize三种选项
|
||||
@param ivData 如果 iv是nil,则使用EBC模式,不为nil则使用CBC模式。iv要求16字节
|
||||
@result 加密结果,失败则返回nil
|
||||
@discussion key和keySize要对应
|
||||
*/
|
||||
- (nullable NSData *)ok_aesEncryptWithkeyData:(NSData *)keyData
|
||||
keySize:(OKAESKeySize)keySize
|
||||
ivData:(nullable NSData *)ivData;
|
||||
|
||||
/*! @abstract AES 解密方法
|
||||
@param key 加密的key,这个需要和keySize对应的byte一致。如果过长,会截断;如果过短,默认用0填充
|
||||
@param keySize 参考枚举值OKAESKeySize三种选项
|
||||
@param iv 如果 iv是nil,则使用EBC模式,不为nil则使用CBC模式。iv要求16字节
|
||||
@result 解密结果,失败则返回nil
|
||||
@discussion key和keySize要对应
|
||||
*/
|
||||
- (nullable NSData *)ok_aesDecryptwithKey:(NSString *)key
|
||||
keySize:(OKAESKeySize)keySize
|
||||
iv:(nullable NSString *)iv;
|
||||
|
||||
/*! @abstract AES 解密方法
|
||||
@param keyData 加密的key,这个需要和keySize对应的byte一致。如果过长,会截断;如果过短,默认用0填充
|
||||
@param keySize 参考枚举值OKAESKeySize三种选项
|
||||
@param ivData 如果 iv是nil,则使用EBC模式,不为nil则使用CBC模式。iv要求16字节
|
||||
@result 解密结果,失败则返回nil
|
||||
@discussion key和keySize要对应
|
||||
*/
|
||||
- (nullable NSData *)ok_aesDecryptwithKeyData:(NSData *)keyData
|
||||
keySize:(OKAESKeySize)keySize
|
||||
ivData:(nullable NSData *)ivData;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d5d34b7240fcf45b2b6a440ab1aedc38
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
//
|
||||
// NSDictionary+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSDictionary (OK)
|
||||
|
||||
- (id)ok_safeJsonObject;
|
||||
- (nullable NSString *)ok_queryString;
|
||||
|
||||
- (BOOL)ok_boolValueForKey:(NSString *)key;
|
||||
- (double)ok_doubleValueForKey:(NSString *)key;
|
||||
- (NSInteger)ok_integerValueForKey:(NSString *)key;
|
||||
- (long long)ok_longlongValueForKey:(NSString *)key;
|
||||
- (nullable NSString *)ok_stringValueForKey:(NSString *)key;
|
||||
- (nullable NSDictionary *)ok_dictionaryValueForKey:(NSString *)key;
|
||||
- (nullable NSMutableDictionary *)ok_mutableDictionaryValueForKey:(NSString *)key;
|
||||
- (nullable NSArray *)ok_arrayValueForKey:(NSString *)key;
|
||||
- (nullable NSMutableArray *)ok_mutableArrayValueForKey:(NSString *)key;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9998bc2c5410c44688d9620554c829ac
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
//
|
||||
// NSFileManager+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/*
|
||||
home => /var/mobile/Containers/Data/Application/XXX/
|
||||
- Documents => /var/mobile/Containers/Data/Application/XXX/Documents
|
||||
- Applications =>
|
||||
- Library =>
|
||||
- Library/Caches
|
||||
*/
|
||||
|
||||
@interface NSFileManager (OK)
|
||||
|
||||
+ (NSString *)ok_homePath;
|
||||
+ (NSString *)ok_cachePath;
|
||||
+ (NSString *)ok_documentPath;
|
||||
+ (NSString *)ok_libraryPath;
|
||||
|
||||
/// /private/var/containers/Bundle/Application/XXX/YYY.app
|
||||
+ (NSString *)ok_mainBundlePath;
|
||||
|
||||
- (nullable NSURL *)ok_pathForNotificationFile:(NSString *)file group:(NSString *)group;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f3b265d4c3a4d4b2cbc3a9913a980125
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
//
|
||||
// NSHashTable+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSHashTable (OK)
|
||||
|
||||
- (id)ok_safeJsonObject;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 982bbbb9faf5e4beaaf0971ee4539a68
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
//
|
||||
// NSMapTable+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSMapTable (OK)
|
||||
|
||||
- (id)ok_safeJsonObject;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 19acaf99051e5403d93758f8e874d5df
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
//
|
||||
// NSMutableArray+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSMutableArray (OK)
|
||||
|
||||
- (void)ok_addObject:(nullable id)anObject;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fba518b7e68a24a14932fe735adc7108
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
//
|
||||
// NSMutableDictionary+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSMutableDictionary (OK)
|
||||
|
||||
- (void)ok_setObject:(nullable id)anObject forKey:(nullable id<NSCopying>)aKey;
|
||||
|
||||
/*
|
||||
the struct should be the same
|
||||
e.g.
|
||||
{"x":"xx"} skipMerge {"x":"xxx","y","yyy"}
|
||||
==> {"x":"xx","y","yyy"}
|
||||
|
||||
{"x":"xx"} overrideMerge {"x":"xxx","y","yyy"}
|
||||
==> {"x":"xxx","y","yyy"}
|
||||
|
||||
*/
|
||||
- (void)ok_skipMerge:(NSDictionary *)value;
|
||||
- (void)ok_overrideMerge:(NSDictionary *)value;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 24dc1b521a76349d2bd514f4ca90b246
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
//
|
||||
// NSNumber+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSNumber (OK)
|
||||
|
||||
- (id)ok_safeJsonObject;
|
||||
- (NSString *)ok_safeJsonObjectKey;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 410b127d24a3648b58a99e66284c7e3d
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
//
|
||||
// NSObject+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSObject (OK)
|
||||
|
||||
- (id)ok_safeJsonObject;
|
||||
- (NSString *)ok_safeJsonObjectKey;
|
||||
- (nullable NSString *)ok_jsonStringEncoded;
|
||||
- (nullable NSString *)ok_jsonStringEncodedForJS;
|
||||
/**
|
||||
Swizzle two instance selectors.
|
||||
|
||||
@param origSelector The original selector.
|
||||
@param newSelector The new selector.
|
||||
@return Return YES if selectors were swizzled successfully.
|
||||
*/
|
||||
+ (BOOL)ok_swizzleInstanceMethod:(nonnull SEL)origSelector with:(nonnull SEL)newSelector;
|
||||
|
||||
/**
|
||||
Swizzle two class selectors.
|
||||
|
||||
@param origSelector The original selector.
|
||||
@param newSelector The new selector.
|
||||
@return Return YES if selectors were swizzled successfully.
|
||||
*/
|
||||
+ (BOOL)ok_swizzleClassMethod:(nonnull SEL)origSelector with:(nonnull SEL)newSelector;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b5c0b1a24d8294ead8dbf1cffdd87b40
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
//
|
||||
// NSSet+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSSet (OK)
|
||||
|
||||
- (id)ok_safeJsonObject;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6fe32800fa67b432cb38ee9f6878edfc
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
//
|
||||
// NSString+OK.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSString (OK)
|
||||
|
||||
- (NSString *)ok_trimmed;
|
||||
- (NSString *)ok_md5String;
|
||||
- (NSString *)ok_sha256String;
|
||||
- (nullable NSString *)ok_base64EncodedString;
|
||||
- (nullable NSString *)ok_base64DecodedString;
|
||||
- (nullable id)ok_jsonValueDecoded;
|
||||
- (nullable id)ok_jsonValueDecoded:(NSError *__autoreleasing *)error;
|
||||
|
||||
- (NSString *)ok_stringByAppendingQueryDictionary:(NSDictionary *)params;
|
||||
- (NSDictionary *)ok_queryDictionary;
|
||||
|
||||
+ (NSString *)ok_UUIDString;
|
||||
|
||||
- (id)ok_safeJsonObject;
|
||||
- (NSString *)ok_safeJsonObjectKey;
|
||||
- (BOOL)isNullOrEmptyString;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 87cc2e8e2165447f99f6cee89f2a521e
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
//
|
||||
// NSString+OKSecurity.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import "NSData+OKSecurity.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSString (OKSecurity)
|
||||
|
||||
/*! @abstract AES 加密方法
|
||||
@param key 加密的key,这个需要和keySize对应的byte一致。如果过长,会截断;如果过短,默认用0填充
|
||||
@param keySize 参考枚举值OKAESKeySize三种选项
|
||||
@param iv 如果 iv是nil,则使用EBC模式,不为nil则使用CBC模式
|
||||
@result 加密结果
|
||||
@discussion key和keySize要对应
|
||||
@discussion aes加密后的data不一定能转成正常的字符串,因此需要经过base64编码
|
||||
*/
|
||||
- (nullable NSString *)ok_aesEncryptWithkey:(NSString *)key
|
||||
keySize:(OKAESKeySize)keySize
|
||||
iv:(nullable NSString *)iv;
|
||||
|
||||
/*! @abstract AES 解密方法
|
||||
@param key 加密的key,这个需要和keySize对应的byte一致。如果过长,会截断;如果过短,默认用0填充
|
||||
@param keySize 参考枚举值OKAESKeySize三种选项
|
||||
@param iv 如果 iv是nil,则使用EBC模式,不为nil则使用CBC模式
|
||||
@result 解密结果,失败则返回nil
|
||||
@discussion aes的密文data不一定能转成正常的字符串,因此需要经过base64编码。故而解密会经过base64解码
|
||||
*/
|
||||
- (nullable NSString *)ok_aesDecryptwithKey:(NSString *)key
|
||||
keySize:(OKAESKeySize)keySize
|
||||
iv:(nullable NSString *)iv;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2a3875be5477a4b74b865071aaeea64b
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
//
|
||||
// OKApplicationInfo.h
|
||||
// OKStartUp
|
||||
//
|
||||
// Created by bob on 2020/1/14.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/// Config自定义配置参考如下,需要在OKAppCustomConfigFunction中
|
||||
/// 仅做简单配置,请勿进行耗时操作
|
||||
|
||||
/**
|
||||
#import <OneKit/OKStartUpGaia.h>
|
||||
#import <OneKit/OKStartUpFunction.h>
|
||||
|
||||
OKAppCustomConfigFunction() {
|
||||
[OKApplicationInfo sharedInstance].xx = xxx;
|
||||
}
|
||||
*/
|
||||
|
||||
/// 存储应用信息
|
||||
/// 默认值从bundle或onekit-config.plist中读取
|
||||
@interface OKApplicationInfo : NSObject
|
||||
|
||||
/* 默认值从onekit-config.plist中读取 */
|
||||
@property (nonatomic) NSString *appID;
|
||||
@property (nonatomic) NSString *accessKey; // mars_access_key
|
||||
@property (nonatomic) NSString *secretKey; // mars_secret_key
|
||||
@property (nonatomic, nullable) NSDictionary *serviceInfo;
|
||||
|
||||
/* 默认值从bundle中读取 */
|
||||
@property (nonatomic, copy) NSString *appName;
|
||||
@property (nonatomic, copy) NSString *appDisplayName;
|
||||
@property (nonatomic, copy) NSString *channel;
|
||||
@property (nonatomic, copy) NSString *appVersion;
|
||||
@property (nonatomic, copy) NSString *buildVersion;
|
||||
@property (nonatomic, copy) NSString *buildVersionCode;
|
||||
@property (nonatomic, copy) NSString *bundleIdentifier;
|
||||
@property (nonatomic, assign) BOOL isInhouseApp;
|
||||
@property (nonatomic, assign) BOOL isI18NApp;
|
||||
|
||||
@property (nonatomic, copy) NSString *deviceModel;/// return string like "iPhone9,1"
|
||||
@property (nonatomic, copy) NSString *devicePlatform;/// return "iPod", "iPad" or "iPhone"
|
||||
@property (nonatomic, copy) NSString *systemVersion;
|
||||
@property (nonatomic, copy, nullable) NSString *sharingKeyChainGroup;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e1304abe724c84b5f9baf453acd58dbf
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
//
|
||||
// OKCellular.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class CTTelephonyNetworkInfo, CTCarrier, CTCellularData;
|
||||
|
||||
/// SIM网络状态
|
||||
typedef NS_ENUM(NSInteger, OKCellularConnectionType) {
|
||||
/// 无网络连接
|
||||
OKCellularConnectionTypeNone = 0,
|
||||
/// 未知移动网络
|
||||
OKCellularConnectionTypeUnknown,
|
||||
/// 2G网络连接
|
||||
OKCellularConnectionType2G,
|
||||
/// 3G网络连接
|
||||
OKCellularConnectionType3G,
|
||||
/// 4G网络连接
|
||||
OKCellularConnectionType4G,
|
||||
/// 5G网络连接
|
||||
OKCellularConnectionType5G,
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, OKCellularServiceType) {
|
||||
OKCellularServiceTypeNone = 0, /// 无卡
|
||||
OKCellularServiceTypePrimary = 1, /// 主卡状态
|
||||
OKCellularServiceTypeSecondary = 2, /// 副卡状态
|
||||
};
|
||||
|
||||
@interface OKCellular : NSObject
|
||||
|
||||
@property (class ,nonatomic, strong, readonly) CTCellularData *cellularData;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
+ (CTTelephonyNetworkInfo *)telephoneInfo;
|
||||
|
||||
/// 返回指定卡信息
|
||||
/// 如果指定副卡不存在,返回主卡信息
|
||||
- (OKCellularConnectionType)cellularConnectionTypeForService:(OKCellularServiceType)service;
|
||||
- (CTCarrier *)carrierForService:(OKCellularServiceType)service;
|
||||
- (OKCellularServiceType)currentDataServiceType;/// 返回当前流量卡类型
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: aa24e805ccea940f3bac7a33bafb1c2d
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
//
|
||||
// OKConnection.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/// 网络状态
|
||||
typedef NS_ENUM(NSInteger, OKNetworkConnectionType) {
|
||||
/// 初始状态
|
||||
OKAutoTrackNetworkNone = -1,
|
||||
/// 无网络连接
|
||||
OKNetworkConnectionTypeNone = 0,
|
||||
/// 移动网络连接
|
||||
OKNetworkConnectionTypeMobile = 1,
|
||||
/// 2G网络连接
|
||||
OKNetworkConnectionType2G = 2,
|
||||
/// 3G网络连接
|
||||
OKNetworkConnectionType3G = 3,
|
||||
/// wifi网络连接
|
||||
OKNetworkConnectionTypeWiFi = 4,
|
||||
/// 4G网络连接
|
||||
OKNetworkConnectionType4G = 5,
|
||||
/// 5G网络连接
|
||||
OKNetworkConnectionType5G = 6,
|
||||
};
|
||||
|
||||
@interface OKConnection : NSObject
|
||||
|
||||
@property (nonatomic, assign, readonly) OKNetworkConnectionType connection;
|
||||
@property (nonatomic, copy, readonly, nullable) NSString *connectMethodName;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 72add32e5f820443b98aefc15d40d880
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
//
|
||||
// OKDevice.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/26.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
/**
|
||||
Please call from main thread
|
||||
*/
|
||||
@interface OKDevice : NSObject
|
||||
|
||||
+ (NSTimeInterval)startupTime;
|
||||
+ (uint32_t)cpuCoreCount ;
|
||||
+ (NSString *)hardwareModel;
|
||||
+ (NSString *)machineModel; /// return string like "iPhone9,1"
|
||||
+ (NSString *)platformName; /// return "iPod", "iPad" or "iPhone"
|
||||
+ (BOOL)isSimulator;
|
||||
+ (NSString *)systemVersion;
|
||||
+ (NSString *)currentSystemLanguage;
|
||||
+ (NSString *)currentLanguage;
|
||||
+ (NSString *)IDFV;
|
||||
+ (float)cpuUsage; /// return -1 if error
|
||||
|
||||
+ (u_int64_t)physicalMemory;
|
||||
+ (u_int64_t)appUsedMemory;
|
||||
#ifdef __LP64__
|
||||
+ (u_int64_t)deviceUsedMemory;
|
||||
#endif
|
||||
|
||||
+ (u_int64_t)totalDiskSize;
|
||||
+ (u_int64_t)freeDiskSize;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 95364c2450bd44d4082976bbd247ff9a
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
//
|
||||
// OKKeychain.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/26.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface OKKeychain : NSObject
|
||||
|
||||
@property (nonatomic, copy, readonly) NSString *service;
|
||||
@property (nonatomic, assign, readonly) BOOL thisDeviceOnly;
|
||||
|
||||
- (instancetype)initWithService:(NSString *)service
|
||||
thisDeviceOnly:(BOOL)thisDeviceOnly
|
||||
group:(nullable NSString *)group;
|
||||
|
||||
- (NSString *)loadValueForKey:(NSString *)key;
|
||||
- (BOOL)saveValue:(nullable NSString *)value forKey:(NSString *)key;
|
||||
- (BOOL)deleteValueForKey:(NSString *)key;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 345d6db644eee4b2baf4136b1c5c419b
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
//
|
||||
// OKMacros.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#ifndef OKMacros_h
|
||||
#define OKMacros_h
|
||||
|
||||
#ifndef OK_WeakSelf
|
||||
#define OK_WeakSelf __weak typeof(self) wself = self
|
||||
#endif
|
||||
|
||||
#ifndef OK_StrongSelf
|
||||
#define OK_StrongSelf __strong typeof(wself) self = wself
|
||||
#endif
|
||||
|
||||
#ifndef ok_keywordify
|
||||
#if DEBUG
|
||||
#define ok_keywordify autoreleasepool {}
|
||||
#else
|
||||
#define ok_keywordify try {} @catch (...) {}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef weakify
|
||||
#if __has_feature(objc_arc)
|
||||
#define weakify(object) ok_keywordify __weak __typeof__(object) weak##_##object = object;
|
||||
#else
|
||||
#define weakify(object) ok_keywordify __block __typeof__(object) block##_##object = object;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef strongify
|
||||
#if __has_feature(objc_arc)
|
||||
#define strongify(object) ok_keywordify __typeof__(object) object = weak##_##object;
|
||||
#else
|
||||
#define strongify(object) ok_keywordify __typeof__(object) object = block##_##object;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef OK_Lock
|
||||
#define OK_Lock(lock) dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER);
|
||||
#endif
|
||||
|
||||
#ifndef OK_Unlock
|
||||
#define OK_Unlock(lock) dispatch_semaphore_signal(lock);
|
||||
#endif
|
||||
|
||||
#define _OK_CONCAT(A, B) A ## B
|
||||
#define OKIdentifier(NAME, COUNTER) _OK_CONCAT(NAME, COUNTER)
|
||||
#define OKSectionNameData(sectname) __attribute((used, no_sanitize_address, section("__DATA,"#sectname" ")))
|
||||
|
||||
static inline bool ok_dispatch_is_main_queue() {
|
||||
return dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL) == dispatch_queue_get_label(dispatch_get_main_queue());
|
||||
}
|
||||
|
||||
static inline bool ok_dispatch_is_main_thread() {
|
||||
return [NSThread isMainThread];
|
||||
}
|
||||
|
||||
/**
|
||||
Submits a block for asynchronous execution on a main queue and returns immediately.
|
||||
*/
|
||||
static inline void ok_dispatch_async_on_main_queue(void (^block)(void))
|
||||
{
|
||||
if (ok_dispatch_is_main_queue()) {
|
||||
block();
|
||||
} else {
|
||||
dispatch_async(dispatch_get_main_queue(), block);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void ok_dispatch_sync_on_main_queue(void (^block)(void))
|
||||
{
|
||||
if (ok_dispatch_is_main_queue()) {
|
||||
block();
|
||||
} else {
|
||||
dispatch_sync(dispatch_get_main_queue(), block);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OKMacros_h */
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 50fb10bb035ed4ea2969f793c0d7d0ef
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
//
|
||||
// OKReachability+Authorization.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import "OKReachability.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSInteger, OKNetworkAuthorizationStatus) {
|
||||
/// 程序无法判断出 App 的网络权限设置
|
||||
OKNetworkAuthorizationStatusNotDetermined = 0,
|
||||
/// App 未开启蜂窝数据网络权限
|
||||
OKNetworkAuthorizationStatusCellularNotPermitted,
|
||||
/// App 未开启无线局域网与蜂窝移动网络权限,此项仅可能在国行 iPhone 手机上出现
|
||||
OKNetworkAuthorizationStatusWLANAndCellularNotPermitted
|
||||
};
|
||||
|
||||
@interface OKReachability (Authorization)
|
||||
|
||||
+ (OKNetworkAuthorizationStatus)currentAuthorizationStatus;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 77bcf0276b60c45299cf5aed45ff00f8
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
//
|
||||
// OKReachability+Cellular.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import "OKReachability.h"
|
||||
#import "OKCellular.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface OKReachability (Cellular)
|
||||
|
||||
+ (BOOL)isNetworkConnected;
|
||||
|
||||
/// 优先返回流量卡状态,其次是主卡状态
|
||||
+ (OKCellularConnectionType)cellularConnectionType;
|
||||
+ (BOOL)is2GConnected;
|
||||
+ (BOOL)is3GConnected;
|
||||
+ (BOOL)is4GConnected;
|
||||
+ (BOOL)is5GConnected;
|
||||
+ (nullable NSString*)carrierName;
|
||||
+ (nullable NSString*)carrierMCC;
|
||||
+ (nullable NSString*)carrierMNC;
|
||||
|
||||
// 返回指定卡 状态
|
||||
+ (OKCellularConnectionType)cellularConnectionTypeForService:(OKCellularServiceType)service;
|
||||
+ (BOOL)is3GConnectedForService:(OKCellularServiceType)service;
|
||||
+ (BOOL)is4GConnectedForService:(OKCellularServiceType)service;
|
||||
+ (BOOL)is5GConnectedForService:(OKCellularServiceType)service;
|
||||
+ (NSString *)carrierNameForService:(OKCellularServiceType)service;
|
||||
+ (NSString *)carrierMCCForService:(OKCellularServiceType)service;
|
||||
+ (NSString *)carrierMNCForService:(OKCellularServiceType)service;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 515faedc13fc148d59e82d1fde5d57a3
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
//
|
||||
// OKReachability.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(int32_t, OKReachabilityStatus) {
|
||||
OKReachabilityStatusNotReachable = 0,
|
||||
OKReachabilityStatusReachableViaWiFi,
|
||||
OKReachabilityStatusReachableViaWWAN
|
||||
};
|
||||
|
||||
FOUNDATION_EXTERN NSString *OKNotificationReachabilityChanged;
|
||||
|
||||
@interface OKReachability : NSObject
|
||||
|
||||
@property (nonatomic, assign, readonly) BOOL telephoneInfoIndeterminateStatus;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
- (void)startNotifier;
|
||||
|
||||
- (OKReachabilityStatus)currentReachabilityStatus;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a4c18355009ca477795e3de1b6d1f6b4
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
//
|
||||
// OKResponder.h
|
||||
//
|
||||
// Created by Quan Quan on 15/11/5.
|
||||
// Copyright © 2015 Bytedance. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OKResponder : NSObject
|
||||
|
||||
/**
|
||||
* @brief Find the responder's NavigationController.
|
||||
*
|
||||
* @param responder A View or a ViewController.
|
||||
*/
|
||||
+ (nullable UINavigationController *)topNavigationControllerForResponder:(nullable UIResponder *)responder;
|
||||
|
||||
/**
|
||||
* @brief Return the top rootViewController of the current ViewControllers' stack.
|
||||
*/
|
||||
+ (nullable UIViewController *)topViewController;
|
||||
|
||||
/**
|
||||
* @brief Is viewController the topViewController?
|
||||
@param viewController A ViewController.
|
||||
*/
|
||||
+ (BOOL)isTopViewController:(nonnull UIViewController *)viewController;
|
||||
|
||||
/**
|
||||
* @brief Return the root view of the top rootViewController in the current ViewControllers' stack.
|
||||
*/
|
||||
+ (nullable UIView *)topView;
|
||||
|
||||
/**
|
||||
* @brief Find the top rootViewController from the rootViewController in it's ViewControllers' stack.
|
||||
*
|
||||
* @param rootViewController A UIViewController.
|
||||
*/
|
||||
+ (nullable UIViewController *)topViewControllerForController:(nonnull UIViewController *)rootViewController;
|
||||
|
||||
/**
|
||||
* @brief Find the top rootViewController from the view in it's ViewControllers' stack.
|
||||
*
|
||||
* @param view A UIView.
|
||||
*/
|
||||
+ (nullable UIViewController *)topViewControllerForView:(nonnull UIView *)view;
|
||||
|
||||
/**
|
||||
* @brief Find the top rootViewController from the responder in it's ViewControllers' stack.
|
||||
*
|
||||
* @param responder A UIResponder.
|
||||
*/
|
||||
+ (nullable UIViewController *)topViewControllerForResponder:(nonnull UIResponder *)responder;
|
||||
|
||||
/**
|
||||
* @brief Close the top rootViewController.
|
||||
*
|
||||
* @param animated `YES` if the change should be animated, `NO` if the change should happen immediately.
|
||||
*/
|
||||
+ (void)closeTopViewControllerWithAnimated:(BOOL)animated;
|
||||
|
||||
@end
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@interface UIViewController (OK_Close)
|
||||
|
||||
/**
|
||||
* @brief Close self.
|
||||
*
|
||||
* @param animated `YES` if the change should be animated, `NO` if the change should happen immediately.
|
||||
*/
|
||||
- (void)closeWithAnimated:(BOOL)animated;
|
||||
|
||||
@end
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a1070d0e70156486dab84ccdfddcb509
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
//
|
||||
// OKSandbox.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/4/26.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface OKSandbox : NSObject
|
||||
|
||||
+ (NSString *)appName;/// CFBundleName
|
||||
+ (NSString *)appDisplayName; /// CFBundleDisplayName
|
||||
+ (NSString *)appVersion; /// CFBundleShortVersionString
|
||||
+ (NSString *)appBuildVersion; /// CFBundleVersion
|
||||
+ (NSString *)bundleID; /// CFBundleIdentifier
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 57f814749e9be474396c4e4b6e1e9b6d
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
//
|
||||
// OKSdkEventConfig.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by 谭正豪 on 2021/10/18.
|
||||
//
|
||||
|
||||
#ifndef OKSdkEventConfig_h
|
||||
#define OKSdkEventConfig_h
|
||||
|
||||
@interface OKSdkEventConfig : NSObject
|
||||
|
||||
/*! @abstract The ID of your sdk that you registered
|
||||
@discussion Nonnull & required.
|
||||
*/
|
||||
@property (atomic, copy) NSString *sdkId;
|
||||
|
||||
/*! @abstract Current version of your sdk
|
||||
@discussion Nonnull & required.
|
||||
*/
|
||||
@property (atomic, copy) NSString *sdkVersion;
|
||||
|
||||
/*! @abstract The channel where your SDK will be published.
|
||||
@discussion Nonnull & require. Default : "Other"
|
||||
*/
|
||||
@property (atomic, strong) NSString *channel;
|
||||
|
||||
/*!
|
||||
@abstract The name of your SDK.
|
||||
@discussion Set this property with your SDK name. Nullable & optional.
|
||||
*/
|
||||
@property (atomic, copy) NSArray<NSString *> *libNames;
|
||||
|
||||
@end
|
||||
#endif /* OKSdkEventConfig_h */
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4be9cdca5d607491c875225ac8f19296
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
//
|
||||
// OKSectionData.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/10/2.
|
||||
//
|
||||
|
||||
#import <OneKit/OKMacros.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef struct _OKString {
|
||||
const char *key;
|
||||
const char *value;
|
||||
} OKString;
|
||||
|
||||
#define OKStringUniqueIdentifier OKIdentifier(__OKString, __COUNTER__)
|
||||
|
||||
#define OK_STRINGS_EXPORT(key, value) \
|
||||
OKSectionNameData(__OKString) \
|
||||
static const OKString OKStringUniqueIdentifier = (OKString){key, value};
|
||||
|
||||
/**
|
||||
e.g
|
||||
to define values:
|
||||
OK_STRINGS_EXPORT("key1", "value1")
|
||||
OK_STRINGS_EXPORT("key1", "value2")
|
||||
OK_STRINGS_EXPORT("key2", "value1")
|
||||
|
||||
to get values:
|
||||
NSArray *key1 = [OKSectionData exportedStringsForKey:@"key1"];
|
||||
NSArray *key2 = [OKSectionData exportedStringsForKey:@"key2"];
|
||||
*/
|
||||
|
||||
/// lazy load
|
||||
@interface OKSectionData : NSObject
|
||||
|
||||
+ (nullable NSArray<NSString *> *)exportedStringsForKey:(NSString *)key;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 02c08e79b829c4aadbc5d86c46bf60c8
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
//
|
||||
// OKSectionFunction.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/10/2.
|
||||
//
|
||||
|
||||
#import <OneKit/OKMacros.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef struct _OKFunction {
|
||||
const char *key;
|
||||
const void (*function)(void);
|
||||
} OKFunction;
|
||||
|
||||
#define OKFunctionIdentifier(COUNTER) OKIdentifier(__OneKitFunction, COUNTER)
|
||||
#define OKFunctionDataIdentifier OKIdentifier(__OneKitFunction_, __COUNTER__)
|
||||
|
||||
#define _OK_FUNCTION_EXPORT(key, COUNTER) \
|
||||
__attribute__((used, no_sanitize_address)) static void OKFunctionIdentifier(COUNTER)(void);\
|
||||
OKSectionNameData(__OneKitFunction) \
|
||||
static const OKFunction OKFunctionDataIdentifier = (OKFunction){key, (void *)(&OKFunctionIdentifier(COUNTER))}; \
|
||||
__attribute__((used, no_sanitize_address)) static void OKFunctionIdentifier(COUNTER)
|
||||
|
||||
|
||||
#define OK_FUNCTION_EXPORT(key) \
|
||||
_OK_FUNCTION_EXPORT(key, __COUNTER__)
|
||||
|
||||
/**
|
||||
e.g.
|
||||
1. define function
|
||||
OK_FUNCTION_EXPORT("a")(void){
|
||||
printf("\nFunction:test function a");
|
||||
}
|
||||
|
||||
2.call function
|
||||
[[OKSectionFunction sharedInstance] excuteFunctionsForKey:@"a"];
|
||||
*/
|
||||
|
||||
@interface OKSectionFunction : NSObject
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
- (void)excuteFunctionsForKey:(NSString *)key;
|
||||
/// empty method for swift
|
||||
- (void)excuteSwiftFunctionsForKey:(NSString *)key;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4b5fa7a3602ab44ca87dd912e6e2c679
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
//
|
||||
// OKService.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/5/11.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol OKService <NSObject>
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a3bc6a1edc2b6459594b5f14d07642a0
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
//
|
||||
// OKServiceCenter.h
|
||||
// OneKit
|
||||
//
|
||||
// Created by bob on 2020/5/11.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@protocol OKService;
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface OKServiceCenter : NSObject
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/// class should implement OKService
|
||||
- (void)bindClass:(Class)cls forProtocol:(Protocol *)protocol;
|
||||
/// object should implement OKService
|
||||
- (void)bindObject:(id)service forProtocol:(Protocol *)protocol;
|
||||
- (nullable id)serviceForProtocol:(Protocol *)protocol;
|
||||
|
||||
@end
|
||||
|
||||
#ifndef OK_CENTER
|
||||
#define OK_CENTER
|
||||
#define OK_CENTER_OBJECT(theProtocol) \
|
||||
[[OKServiceCenter sharedInstance] serviceForProtocol:@protocol(theProtocol)]
|
||||
|
||||
#define OK_CENTER_BIND_CLASS_PROTOCOL(theClass, theProtocol) \
|
||||
[[OKServiceCenter sharedInstance] bindClass:theClass forProtocol:@protocol(theProtocol)]
|
||||
|
||||
#define OK_CENTER_BIND_OBJECT_PROTOCOL(theObject, theProtocol) \
|
||||
[[OKServiceCenter sharedInstance] bindObject:theObject forProtocol:@protocol(theProtocol)]
|
||||
|
||||
#endif
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue