bonus-material-app/nativeplugins/Mpaas-Scan/ios/APRemoteLogging.framework/Headers/APRemoteLogger+Internal.h

406 lines
12 KiB
Objective-C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// APRemoteLogger+Internal.h
// APRemoteLogging
//
// Created by 卡迩 on 2017/4/12.
// Copyright © 2017年 Alipay. All rights reserved.
//
#import "APRemoteLogging.h"
@class APLogManualPageInfo;
/**
内部埋点使用的 bizType需要从下面的 bizType 中获取,以规范埋点开关的管控
*/
typedef NS_ENUM(NSInteger, mPaaSBizType)
{
mPaaS_Alive_iOS, // 报活
mPaaS_Launch_iOS, // 启动速度
mPaaS_LAG_iOS, // 卡顿
mPaaS_ANR_iOS, // 卡死
mPaaS_Crash_iOS, // 闪退
mPaaS_Automation_iOS, // 自动化
mPaaS_HotPatch_iOS, // hotpatch
mPaaS_Push_iOS, // 推送
mPaaS_Sync_iOS, // 同步
mPaaS_Scan_iOS, // 扫码
mPaaS_Nebula_iOS, // H5容器
mPaaS_TinyApp_iOS, // 小程序
mPaaS_RPC_iOS, // RPC
mPaaS_Upgrade_iOS, // 版本升级
mPaaS_ConfigService_iOS, // 开关配置
mPaaS_Share_iOS, // 分享
mPaaS_Storage_iOS, // 统一存储
mPaaS_LBS_iOS, // LBS
mPaaS_CDP_iOS, // CDP
mPaaS_Device_iOS, // 设备标识
mPaaS_TAC_iOS, // TAC
mPaaS_WebApp_iOS, // webapp
mPaaS_WebAppTiny_iOS, // webapp-tiny
mPaaS_NebulaTech_iOS, // NebulaTech
mPaaS_OCR_iOS, // OCR
mPaaS_SafeKeyboard_iOS, // 安全键盘
mPaaS_Traffic_iOS, // 流量监控
mPaaS_Framework_iOS, // 框架
mPaaS_Multimedia_iOS, //多媒体
mPaaS_Client_iOS, // 客户端 license
mPaaSMonitorNetiOS, // APM网络
};
//把APRemoteLogging.h中那堆不需要普通业务关注的接口移到了这里. by 卡迩
NS_ASSUME_NONNULL_BEGIN
@interface APRemoteLogger (Internal)
#pragma mark -
#pragma mark 兼容需要保留
#ifdef SDK_IS4_ALIPAY
/**
* 注意:新的埋点不要调用此接口,为保持兼容以前的代码所以保留
* 8.3之前的老的页面继续使用此接口8.3新开的页面使用writeLogWithActionId:..这个接口
*
* @param dict log 字典
*/
+(void)writeLogWithLogDictionary:(NSDictionary *) dict /*__deprecated*/;
#endif
#pragma mark -
#pragma mark Global State
/**
获取最近一次手动PV埋点(pageMonitor)生成的pageInfo对象.
@return 最近一次手动PV埋点生成的pageInfo对象.
*/
+ (nullable APLogManualPageInfo *)currentPageInfo;
/**
获取最后点击的控件的spm值.
@return 最后点击的控件的spm值(若有).
*/
+(nullable NSString *)lastClickSpm;
/**
更新最后点击的spm值.
@note 该方法供自动化埋点SDK调用,业务方不要使用.
@param spm 最后点击的spm值.可以为空.
*/
+(void)setLastClickSpm:(nullable NSString *)spm;
#ifdef SDK_IS4_ALIPAY
/**
* 界面点击的ActionToken(TraceID)
*
* @return 最近界面点击的ActionToken(TraceID)
*/
+(nullable NSString *) currentActionToken;
/**
* 界面点击的ActionToken的生成时间戳为精简RPC包大小而提供
*
* @return 最近界面点击的ActionToken的生成时间戳
*/
+(unsigned long long) tokenTimestamp;
/**
* 界面点击的最近一个控件标识
*
* @return 最近界面点击的最近一个控件标识
*/
+(nullable NSString *) currentActionControlID;
/**
* 当前页面的ID
*
* @return 当前页面的ID
*/
+(nullable NSString *) currentPageID;
+(nullable NSString *) lastPageID;
#endif
+(nullable NSString *) currentSubAppID;
#ifdef SDK_IS4_ALIPAY
+(void) resetCurrentPageId:(nonnull NSString *)pageId;
/**
* 页面数据准备好到达可用状态,由业务主动调用
*
* @return void
*/
+ (void)pageDidFinishInitializing;
/**
* 字符串数组格式化转成str1|str2|str3格式字符串
*
* @param array 字符串数组
*
* @return 格式化后字符串
*/
+ (nonnull NSString *)convertToStringFromArray:(nonnull NSArray *)array;
/**
* 设置扩展参数,支持扩展参数的日志模型(行为,性能)
* 字典转成 key=value^key=value^key=value 格式字符串
*
* @return void
*/
+ (void)setFoundationExtended:(nullable NSDictionary *)dict;
/**
* 字典格式化 转成 key:value&key:value&key:value 格式字符串
*
* @param dictionary 字典
* @param kvSeparator 可以为空,默认使用:连接字典key和value的连接字符比如key:value
* @param componentsSeparator 可以为空,默认使用&连接每队keyvalue组合后的连接字符比如key:value&key:value
* @return 格式化后的字符串
*
*/
+ (nonnull NSString *)convertToStringFromDictionary:(nonnull NSDictionary *)dictionary
kvSeparator:(nullable NSString *)separator1
componentsSeparator:(nullable NSString *)separator2;
#endif
/**
* 取索引的pageid
* @param index pageid索引
* @return 页面流水号
*/
+ (nullable NSString *)pageIdForIndex:(nonnull NSObject *)index;
#ifdef SDK_IS4_ALIPAY
/**
* 取索引的pageid的时间戳
* @param index pageid索引
* @return 页面流水号的时间戳
*/
+ (nullable NSString *)pageIdTimestampForIndex:(nonnull NSObject *)index;
/**
* 取索引的spmid
* @param index pageid索引
* @return 页面spmid
*/
+ (nullable NSString *)spmIdForIndex:(nonnull NSObject *)index;
#endif
/**
* 取索引的信息
* @param index pageid索引
* @param type pageInfo类型
* @return 页面信息
*/
+ (nullable NSString *)pageInfomationForIndex:(nonnull NSObject *)index forType:(APRemoteLoggerPageInfomationType)type;
#ifdef SDK_IS4_ALIPAY
/**
* 清除所有无效的历史流水号
*/
+ (void)resetPageMonitorContext;
/**
* 向spmpage列表中添加page页
*/
+ (void)addSpmPage:(nonnull NSString *)spmPage;
/**
* 得到日志等级
*/
+ (NSInteger)levelNumberForString:(nonnull NSString *)strLevel;
/**
* 设置外部开关值
*/
+ (void)setSwitchValue:(nullable NSString *)value forKey:(nonnull NSString *)key;
/**
设置统一开关值
@param configDict 开关字典
*/
+(void)setSwitchDict:(NSDictionary *)configDict;
#endif
/**
* 获取外部开关值
*/
+ (NSString *)switchValueForKey:(nonnull NSString *)key;
#ifdef SDK_IS4_ALIPAY
/**
是否已经完成历史日志文件检查
@note 在该方法返回YES后,触发某个bizType的日志的上报会附加上历史日志,否则只会上报本次启动产生的日志
@return 在启动完成一定时间后会捞取历史日志到内存中,当该动作已完成时,返回 YES, 否则返回 NO.
*/
+ (BOOL)isHistoryLogFileChecked;
/**
自动化埋点记录的refer值(若有)
@return 当前自动化埋点记录的refer值(若有)未引入autotracker时总是返回nil.
*/
+ (nullable NSString *)currentAutoRefer;
#pragma mark -
#pragma mark 以下函数业务不要调用
+(void)mPaaS_writeCrashLog:(NSString *) report vcStack:(NSString *) vcStack;
+(NSDictionary*)stateWhenCrashed:(NSString*)vcStack thread:(thread_t)thread ucontext:(void *)ucontext;
+(void)mPaaS_writeCrashLog:(NSString *)report state:(NSDictionary*)state innerVersion:(NSString *)innerVersion;
+(void)writeOOMLog:(NSString *)report state:(NSDictionary *)infoDic;
+ (void)writePerformanceLogWithType:(APLogType)type
subType:(NSString *) subType
extraParams:(NSArray *) extraParams
actionControlID:(NSString *) controlID
actionToke:(NSString *) actionToken;
+(void)upload;
#endif
+ (void)protectExtentionParams:(NSMutableArray *)params;
#ifdef SDK_IS4_ALIPAY
+(void) logAutoEventWithBizType:(NSString*)bizType params:(NSArray*)params;
+(void) logPageBeginRenderWithPageName:(NSString *) name;
+(void) logPageStartWithPageId:(NSString *) pageId appId:(NSString *) appId
sourceAppId:(NSString *) sourceAppId pageName:(NSString *) pageName;
+ (void)logPageMonitorWithMonitorType:(NSString *)monitorType;
+ (NSString *)logPageMonitorType;
NSString *pageDidAppearName(NSString *pageName);
+ (void)logPageEndRenderWithPageName:(NSString *)name;
+(BOOL) statusForWriteLogSwitch:(NSString*) logType;
+(BOOL) statusForSendLogSwitch:(NSString*) logType;
+(void) checkCrashLogWithCompletionBlock:(void (^)(void)) block;
void updateSwitchProfile(NSString *actionType);
// 添加OC版本的接口为了利用OC的动态特性实现模块间解耦合
+ (void)SLWriteMonitorLog:(NSDictionary*)attachDict appID:(NSString*)appID monitorType:(NSString*)monitorType subMonitorType:(NSString*)subMonitorType mPaaSBizType:(mPaaSBizType)bizType;
+ (void)APWriteNetLog:(NSString*)identifier size:(NSString*)size type:(NSString*)type owner:(NSString*)owner extDict:(NSDictionary*)extDict;
void APWriteNetLog(NSString *identifier, NSString *size, NSString* type, NSString *owner, NSDictionary * extDict);
///**
// * 暂停日志上传最大暂停时间为60s时间过后自动打开日志上传
// * 设置这个机制的原因是防止调用方异常没有调用resumeLogUploading等情况下导致日志无法上传。
// *
// * @param secondes 自定义的日志暂停上传时间最大值为60s最小值为1s其余值将导致默认暂停10s
// */
//+(void) suspendLogUploadingForSeconds:(int) seconds;
///**
// * 立即恢复日志上传功能
// */
//+(void) resumeLogUploading;
#endif
/**
添加周期性执行的block. 每30s执行一次.
*/
+(void)addPeriodicallyExecutedBlock:(void (^)(void))block;
#pragma mark - Interface for Alipayinside
/**
添加自定义bizType 内容 日志
*/
+ (void)writeLogWithCustomContent:(NSString *) content
bizType:(NSString *) bizType;
#ifdef SDK_IS4_TAOBAO
/**
* 设置用户的id跟认证信息
* @param userId,登录用户的用户id
*/
+ (void)setUserId:(NSString *)userId;
#endif
/**
@param module 模块名称如APMobileFramework。此值对应自定义分析大盘配置中的事件即一个模块对一个事件
@param params 参数信息以字典形式存入key对应自定义分析配置中的属性
*/
- (void)writeMPaaSSDKLogWithModule:(NSString *)module params:(NSDictionary *)params;
#pragma mark - 仅 mPaaS 内部使用
+ (NSString *)getMPaaSBaseline;
/**
内部专用行为埋点接口,用于组件状态上报
@param bizType 埋点业务类型,必传,用于埋点开关控制,需要使用上面定义枚举
@param seed 埋点ID必传用于数据清洗
@param extraParams 埋点扩展参数数组,@{"", "", "", @{}}
*/
+ (void)writeBehaviorLogWithBizType:(mPaaSBizType)bizType
seed:(nonnull NSString *)seed
extraParams:(nonnull NSArray *)extraParam;
/**
内部专用复杂行为埋点接口
*/
+ (void)writeBehaviorLogWithActionId:(NSString *)actionId
extParams:(NSArray *)extraParam
appId:(NSString *)appId
seed:(NSString *)seed
ucId:(NSString *)ucId
bizType:(mPaaSBizType)bizType
formatterDictionary:(NSDictionary *)formatterDictionary;
/**
专用性能接口,上报大盘使用的性能埋点
@param bizType 埋点业务类型,必传,用于埋点开关控制,需要使用上面定义枚举
@param number 日志上报条数阈值。当传入 0 时,底层方法会取默认上报条数阈值。
*/
+ (void)mPaaS_writePerformanceLogWithType:(mPaaSBizType)type
subType:(nullable NSString *)subType
extraParams:(nullable NSArray *)extraParams
formatterDictionary:(nullable NSDictionary *)formatterDictionary
perUploadNum:(NSUInteger)number;
/**
卡死日志上报
*/
+ (void)mPaaS_writeANRPerformanceLogWithBizType:(mPaaSBizType)bizType
subType:(nullable NSString *)subType
extraParams:(nullable NSArray *)extraParams
formatterDictionary:(nullable NSDictionary *)dictionary
perUploadNum:(NSUInteger)number;
/**
卡顿日志上报
*/
void mPaaS_SLWriteMonitorLog(NSDictionary * attachDict, NSString* appID, NSString *monitorType, NSString *subMonitorType, mPaaSBizType bizType);
/**
* 网络类型
*/
+ (NSString *)currentNetEnvString;
/**
APM网络RPC日志上报
*/
+ (void)mPaaSAPMRPCNetLog:(mPaaSBizType)bizType extDict:(NSDictionary*)extDict;
/**
APM 业务自定义网络埋点
*/
+ (void)mPaaSAPMNetCustomLog:(NSDictionary*)extDict;
@end
NS_ASSUME_NONNULL_END