123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405 |
- //
- // 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 可以为空,默认使用&连接,每队key,value组合后的连接字符(比如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
|