集成httpdns
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// AppMonitorSDK.h
|
||||
// AppMonitorSDK
|
||||
//
|
||||
// Created by junzhan on 14-9-9.
|
||||
// Copyright (c) 2014年 君展. All rights reserved.
|
||||
// 接口类
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AppMonitorTable.h"
|
||||
#import "AppMonitorAlarm.h"
|
||||
#import "AppMonitorCounter.h"
|
||||
#import "AppMonitorStat.h"
|
||||
|
||||
@interface AppMonitor : NSObject
|
||||
|
||||
+ (BOOL)isInit;
|
||||
|
||||
+ (BOOL) isUTInit;
|
||||
|
||||
+ (void) setUTInit;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/*
|
||||
* 设置采样率配置
|
||||
* @param jsonStr JSON串
|
||||
*/
|
||||
+ (void)setSamplingConfigWithJson:(NSString *)jsonStr;
|
||||
|
||||
/**
|
||||
* 关闭采样,紧开发调试用。线上版本请勿调用此API
|
||||
*/
|
||||
+ (void)disableSample;
|
||||
|
||||
/**
|
||||
* 设置采样率(默认是 50%) 值范围在[0~10000] (0表示不上传,10000表示100%上传,5000表示50%上传)
|
||||
*/
|
||||
+ (void)setSampling:(NSString *)sampling;
|
||||
|
||||
////是否开启实时调试模式(与UT同步)
|
||||
+ (BOOL)isTurnOnRealTimeDebug;
|
||||
+ (NSString*)realTimeDebugUploadUrl;
|
||||
+ (NSString*)realTimeDebugId;
|
||||
|
||||
+(void) turnOnAppMonitorRealtimeDebug:(NSDictionary *) pDict;
|
||||
+(void) turnOffAppMonitorRealtimeDebug;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,52 @@
|
||||
//
|
||||
// AppMonitorAlarm.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by junzhan on 14-9-15.
|
||||
// Copyright (c) 2014年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AppMonitorBase.h"
|
||||
|
||||
@interface AppMonitorAlarm : AppMonitorBase
|
||||
/**
|
||||
* 记录业务操作成功接口
|
||||
*
|
||||
* @param page 页面名称,安卓iOS要相同. 命名规范:若之前埋点有页面名,则用原来的; 否则用"业务名_页面名"(无页面则"业务名"); 采用首字母大写驼峰方式. 如Shop_Detail, Shop_List
|
||||
* @param monitorPoint 监控点名称,安卓iOS要相同,从@雷曼 获取
|
||||
*
|
||||
*/
|
||||
+ (void)commitSuccessWithPage:(NSString *)page monitorPoint:(NSString *)monitorPoint;
|
||||
|
||||
/**
|
||||
* 记录业务操作失败接口
|
||||
*
|
||||
* @param page 页面名称,安卓iOS要相同. 命名规范:若之前埋点有页面名,则用原来的; 否则用"业务名_页面名"(无页面则"业务名"); 采用首字母大写驼峰方式. 如Shop_Detail, Shop_List
|
||||
* @param monitorPoint 监控点名称,安卓iOS要相同,从@雷曼 获取
|
||||
* @param errorCode 错误码,若为MTOP请求则传MTOP的错误码,否则请业务方对错误进行分类编码,方便统计错误类型占比
|
||||
* @param errorMsg 错误信息,若位MTOP请求则传MTOP的错误信息, 否则请业务方自己描述错误, 方便自己查找原因
|
||||
*/
|
||||
+ (void)commitFailWithPage:(NSString *)page monitorPoint:(NSString *)monitorPoint errorCode:(NSString *)errorCode errorMsg:(NSString *)errorMsg;
|
||||
|
||||
/**
|
||||
* 记录业务操作成功接口
|
||||
*
|
||||
* @param page 页面名称,安卓iOS要相同. 命名规范:若之前埋点有页面名,则用原来的; 否则用"业务名_页面名"(无页面则"业务名"); 采用首字母大写驼峰方式. 如Shop_Detail, Shop_List
|
||||
* @param monitorPoint 监控点名称,安卓iOS要相同,从@雷曼 获取
|
||||
* @arg 附加参数,用于做横向扩展
|
||||
*/
|
||||
+ (void)commitSuccessWithPage:(NSString *)page monitorPoint:(NSString *)monitorPoint arg:(NSString *)arg;
|
||||
|
||||
/**
|
||||
* 记录业务操作失败接口
|
||||
*
|
||||
* @param page 页面名称,安卓iOS要相同. 命名规范:若之前埋点有页面名,则用原来的; 否则用"业务名_页面名"(无页面则"业务名"); 采用首字母大写驼峰方式. 如Shop_Detail, Shop_List
|
||||
* @param monitorPoint 监控点名称,安卓iOS要相同,从@雷曼 获取
|
||||
* @param errorCode 错误码,若为MTOP请求则传MTOP的错误码,否则请业务方对错误进行分类编码,方便统计错误类型占比
|
||||
* @param errorMsg 错误信息,若位MTOP请求则传MTOP的错误信息, 否则请业务方自己描述错误, 方便自己查找原因
|
||||
* @arg 附加参数,用于做横向扩展
|
||||
*/
|
||||
+ (void)commitFailWithPage:(NSString *)page monitorPoint:(NSString *)monitorPoint errorCode:(NSString *)errorCode errorMsg:(NSString *)errorMsg arg:(NSString *)arg;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,27 @@
|
||||
//
|
||||
// AppMonitorBase.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by junzhan on 14-10-14.
|
||||
// Copyright (c) 2014年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
|
||||
@interface AppMonitorBase : NSObject
|
||||
/**
|
||||
* 日志写入UT间隔时间(单位秒).默认300秒, -1代表关闭. 会监听配置中心做变化
|
||||
*/
|
||||
+ (void)setWriteLogInterval:(NSInteger)writeLogInterval;
|
||||
|
||||
+ (NSInteger)writeLogInterval;
|
||||
|
||||
|
||||
/**
|
||||
* 将appmonitor的日志立刻强制写入本地(UT),避免丢失。请不要私自调用,使用前咨询@君展
|
||||
*/
|
||||
+ (void)flushAllLog;
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// AppMonitorCounter.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by junzhan on 14-10-14.
|
||||
// Copyright (c) 2014年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AppMonitorBase.h"
|
||||
|
||||
@interface AppMonitorCounter : AppMonitorBase
|
||||
|
||||
/**
|
||||
* 实时计数接口.(每次commit会累加一次count,value也会累加)可用于服务端计算总次数或求平均值。
|
||||
* 此接口数据量不应太大,
|
||||
*
|
||||
* @param page 操作发生所在的页面
|
||||
* @param monitorPoint 监控点名称
|
||||
* @param value 数值
|
||||
*/
|
||||
+ (void)commitWithPage:(NSString *)page monitorPoint:(NSString *)monitorPoint value:(double)value;
|
||||
|
||||
/**
|
||||
* 实时计数接口.(每次commit会累加一次count,value也会累加)可用于服务端计算总次数或求平均值。
|
||||
* 此接口数据量不应太大,
|
||||
*
|
||||
* @param page 操作发生所在的页面
|
||||
* @param monitorPoint 监控点名称
|
||||
* @param value 数值
|
||||
* @param arg 附加参数
|
||||
*/
|
||||
+ (void)commitWithPage:(NSString *)page monitorPoint:(NSString *)monitorPoint value:(double)value arg:(NSString *)arg;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// AppMonitorDimension.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by christ.yuj on 15/2/15.
|
||||
// Copyright (c) 2015年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* 监控维度
|
||||
*
|
||||
*/
|
||||
|
||||
@interface AppMonitorDimension : NSObject
|
||||
|
||||
@property (nonatomic, copy) NSString *name;
|
||||
@property (nonatomic, copy) NSString *constantValue;
|
||||
|
||||
- (instancetype)initWithName:(NSString *)name;
|
||||
|
||||
- (instancetype)initWithName:(NSString *)name constantValue:(NSString *)constantValue;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,56 @@
|
||||
//
|
||||
// AppMonitorDimensionSet.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by christ.yuj on 15/2/15.
|
||||
// Copyright (c) 2015年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AppMonitorDimensionValueSet.h"
|
||||
#import "AppMonitorDimension.h"
|
||||
@interface AppMonitorDimensionSet : NSObject
|
||||
|
||||
/**
|
||||
* 根据列表初始化指标集合对象
|
||||
*
|
||||
* @param array NSString类型的数组 string为Name;
|
||||
* @return
|
||||
*/
|
||||
|
||||
+ (instancetype)setWithArray:(NSArray *)array;
|
||||
|
||||
- (BOOL)valid:(AppMonitorDimensionValueSet*)dimensionValues;
|
||||
/**
|
||||
* 增加维度
|
||||
*
|
||||
* @param dimension 维度对象
|
||||
* @return
|
||||
*/
|
||||
- (void)addDimension:(AppMonitorDimension *)dimension;
|
||||
|
||||
/**
|
||||
* 增加维度对象
|
||||
*
|
||||
* @param name 维度名称
|
||||
* @return
|
||||
*/
|
||||
- (void)addDimensionWithName:(NSString *)name;
|
||||
/**
|
||||
* 获取维度对象
|
||||
*
|
||||
* @param name 维度名称
|
||||
* @return
|
||||
*/
|
||||
- (AppMonitorDimension *)dimensionForName:(NSString *)name;
|
||||
|
||||
- (NSMutableOrderedSet *)dimensions;
|
||||
|
||||
/**
|
||||
* 设置定值维度
|
||||
*
|
||||
* @param dimensionValues key为维度名称,value为内容
|
||||
*/
|
||||
- (void)setConstantValue:(AppMonitorDimensionValueSet *)dimensionValues;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// AppMonitorDimensionValueSet.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by christ.yuj on 15/2/15.
|
||||
// Copyright (c) 2015年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
/**
|
||||
其实就是个字典
|
||||
*/
|
||||
@interface AppMonitorDimensionValueSet : NSObject<NSCopying>
|
||||
|
||||
- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
|
||||
|
||||
/**
|
||||
* 存储维度值
|
||||
*/
|
||||
@property (nonatomic, strong) NSMutableDictionary *dict;
|
||||
|
||||
- (void)setValue:(NSString *)value forName:(NSString *)name;
|
||||
- (BOOL)containValueForName:(NSString *)name;
|
||||
- (NSString *)valueForName:(NSString *)name;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// AppMonitorMeasure.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by christ.yuj on 15/2/15.
|
||||
// Copyright (c) 2015年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AppMonitorMeasureValue.h"
|
||||
/**
|
||||
* 监控指标项
|
||||
*
|
||||
*/
|
||||
|
||||
@interface AppMonitorMeasure : NSObject
|
||||
|
||||
@property (nonatomic, copy) NSString *name;
|
||||
@property (nonatomic, strong) NSNumber *constantValue;
|
||||
@property (nonatomic, strong) NSNumber *min;
|
||||
@property (nonatomic, strong) NSNumber *max;
|
||||
|
||||
- (instancetype)initWithName:(NSString *)name;
|
||||
- (instancetype)initWithName:(NSString *)name constantValue:(NSNumber *)constantValue;
|
||||
- (instancetype)initWithName:(NSString *)name constantValue:(NSNumber *)constantValue min:(NSNumber *)min max:(NSNumber *)max;
|
||||
- (void)setRangeWithMin:(NSNumber *)min max:(NSNumber *)max;
|
||||
- (BOOL)valid:(AppMonitorMeasureValue *)measureValue;
|
||||
@end
|
||||
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// AppMonitorMeasureSet.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by christ.yuj on 15/2/15.
|
||||
// Copyright (c) 2015年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AppMonitorMeasure.h"
|
||||
#import "AppMonitorMeasureValueSet.h"
|
||||
@interface AppMonitorMeasureSet : NSObject
|
||||
|
||||
/**
|
||||
* 根据列表初始化指标集合对象
|
||||
*
|
||||
* @param array NSString类型的数组 string为Name;
|
||||
* @return
|
||||
*/
|
||||
|
||||
+ (instancetype)setWithArray:(NSArray *)array;
|
||||
|
||||
- (BOOL)valid:(NSString*)module MonitorPoint:(NSString*)monitorpoint measureValues:(AppMonitorMeasureValueSet *)measureValues;
|
||||
/**
|
||||
* 增加指标
|
||||
*
|
||||
* @param measure 指标对象
|
||||
* @return
|
||||
*/
|
||||
- (void)addMeasure:(AppMonitorMeasure *)measure;
|
||||
|
||||
/**
|
||||
* 增加指标对象
|
||||
*
|
||||
* @param name 指标名称
|
||||
* @return
|
||||
*/
|
||||
- (void)addMeasureWithName:(NSString *)name;
|
||||
/**
|
||||
* 获取指标对象
|
||||
*
|
||||
* @param name 指标名称
|
||||
* @return
|
||||
*/
|
||||
- (AppMonitorMeasure *)measureForName:(NSString *)name;
|
||||
|
||||
/**
|
||||
* 获取指标对象的列表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
- (NSMutableOrderedSet *)measures;
|
||||
|
||||
/**
|
||||
* 设置定值维度
|
||||
*
|
||||
* @param measureValues key为指标名称,value为内容
|
||||
*/
|
||||
- (void)setConstantValue:(AppMonitorMeasureValueSet *)measureValues;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,33 @@
|
||||
//
|
||||
// AppMonitorMeasureValue.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by christ.yuj on 15/2/15.
|
||||
// Copyright (c) 2015年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* 监控指标值
|
||||
*
|
||||
*/
|
||||
|
||||
@interface AppMonitorMeasureValue : NSObject
|
||||
|
||||
/**
|
||||
* 耗时操作是否已经完成
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL isFinish;
|
||||
@property (nonatomic, strong) NSNumber * offset;
|
||||
@property (nonatomic, strong) NSNumber * value;
|
||||
|
||||
- (instancetype)initWithValue:(NSNumber *)value;
|
||||
- (instancetype)initWithValue:(NSNumber *)value offset:(NSNumber *)offset;
|
||||
- (void)merge:(AppMonitorMeasureValue *)measureValue;
|
||||
//为了json序列化
|
||||
- (NSDictionary *)jsonDict;
|
||||
//json反序列化
|
||||
- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// AppMonitorMeasureValueSet.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by christ.yuj on 15/2/15.
|
||||
// Copyright (c) 2015年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AppMonitorMeasureValue.h"
|
||||
@interface AppMonitorMeasureValueSet : NSObject<NSCopying>
|
||||
|
||||
|
||||
- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
|
||||
|
||||
|
||||
/**
|
||||
* 设置指标值
|
||||
*
|
||||
* @param name
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
- (void)setDoubleValue:(double)value forName:(NSString *)name;
|
||||
- (void)setValue:(AppMonitorMeasureValue *)value forName:(NSString *)name;
|
||||
- (BOOL)containValueForName:(NSString *)name;
|
||||
- (AppMonitorMeasureValue *)valueForName:(NSString *)name;
|
||||
/**
|
||||
* 合并指标
|
||||
*
|
||||
* @param measureValueSet 目标指标集合
|
||||
* 发现相同的name就对MeasureValue做加操作
|
||||
*/
|
||||
- (void)merge:(AppMonitorMeasureValueSet*)measureValueSet;
|
||||
|
||||
- (NSDictionary *)jsonDict;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,117 @@
|
||||
//
|
||||
// AppMonitorStat.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by christ.yuj on 15/3/10.
|
||||
// Copyright (c) 2015年 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AppMonitorBase.h"
|
||||
#import "AppMonitorMeasureSet.h"
|
||||
#import "AppMonitorDimensionSet.h"
|
||||
|
||||
@interface AppMonitorStatTransaction :NSObject
|
||||
|
||||
- (void)beginWithMeasureName:(NSString *)measureName;
|
||||
|
||||
- (void)endWithMeasureName:(NSString *)measureName;
|
||||
|
||||
@end
|
||||
|
||||
@interface AppMonitorStat : AppMonitorBase
|
||||
|
||||
/**
|
||||
* 注册性能埋点
|
||||
* @param module 模块
|
||||
* @param monitorPoint 监控点
|
||||
* @param measures 多指标
|
||||
*/
|
||||
+ (void)registerWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint measureSet:(AppMonitorMeasureSet *)measures;
|
||||
|
||||
/**
|
||||
* 注册性能埋点
|
||||
* @param module 模块
|
||||
* @param monitorPoint 监控点
|
||||
* @param measures 多指标
|
||||
* @param dimemsions 多维度
|
||||
*/
|
||||
+ (void)registerWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint measureSet:(AppMonitorMeasureSet *)measures dimensionSet:(AppMonitorDimensionSet *)dimensions;
|
||||
|
||||
/**
|
||||
* 注册性能埋点
|
||||
* @param module 模块
|
||||
* @param monitorPoint 监控点
|
||||
* @param measures 多指标
|
||||
* @param isCommitDetail 标记是否提交明细。需要提交明细时设置为YES,否则为NO
|
||||
*/
|
||||
+ (void)registerWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint measureSet:(AppMonitorMeasureSet *)measures isCommitDetail:(BOOL)detail;
|
||||
|
||||
/**
|
||||
* 注册性能埋点
|
||||
* @param module 模块
|
||||
* @param monitorPoint 监控点
|
||||
* @param measures 多指标
|
||||
* @param dimemsions 多维度
|
||||
* @param isCommitDetail 标记是否提交明细。需要提交明细时设置为YES,否则为NO
|
||||
*/
|
||||
+ (void)registerWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint measureSet:(AppMonitorMeasureSet *)measures dimensionSet:(AppMonitorDimensionSet *)dimensions isCommitDetail:(BOOL)detail;
|
||||
|
||||
/**
|
||||
* 提交多维度,多指标
|
||||
* @param module 监控模块
|
||||
* @param monitorPoint 监控点名称 Page+monitorPoint必须唯一
|
||||
* @param dimensionValues 维度值集合
|
||||
* @param measureValues 指标值集合
|
||||
*/
|
||||
+ (void)commitWithModule:(NSString*) module monitorPoint:(NSString *)monitorPoint dimensionValueSet:(AppMonitorDimensionValueSet *)dimensionValues measureValueSet:(AppMonitorMeasureValueSet *)measureValues;
|
||||
|
||||
/**
|
||||
* 提交多维度单指标
|
||||
* @param module 监控模块
|
||||
* @param monitorPoint 监控点名称 Page+monitorPoint必须唯一
|
||||
* @param dimensionValues 维度值集合
|
||||
* @param value 指标值
|
||||
*/
|
||||
|
||||
+ (void)commitWithModule:(NSString*) module monitorPoint:(NSString *)monitorPoint dimensionValueSet:(AppMonitorDimensionValueSet *)dimensionValues value:(double)value;
|
||||
|
||||
/**
|
||||
* 提交单指标
|
||||
* @param module 监控模块
|
||||
* @param monitorPoint 监控点名称 Page+monitorPoint必须唯一
|
||||
* @param value 指标值
|
||||
*/
|
||||
+ (void)commitWithModule:(NSString*) module monitorPoint:(NSString *)monitorPoint value:(double)value;
|
||||
|
||||
/**
|
||||
*开始事件,适合不存在并发的跨多线程事件(比如常见的UI加载渲染)<br/>
|
||||
*如果事件跨多线程多并发执行,请使用beginTransaction-endTransaction方法对,此场景较少见
|
||||
* @param module 监控模块
|
||||
* @param monitorPoint 监控点名称 module+monitorPoint必须唯一
|
||||
*/
|
||||
+ (void)beginWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint measureName:(NSString *)measureName;
|
||||
|
||||
/**
|
||||
*结束事件,适合不存在并发的跨多线程事件(比如常见的UI加载渲染)<br/>
|
||||
*如果事件跨多线程多并发执行,请使用beginTransaction-endTransaction方法对,此场景较少见
|
||||
* @param module 监控模块
|
||||
* @param monitorPoint 监控点名称 module+monitorPoint必须唯一
|
||||
*/
|
||||
+ (void)endWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint measureName:(NSString *)measureName;
|
||||
|
||||
/**
|
||||
* 埋点事务,可以通过调用事务的begin-end方法对来统计耗时指标的值
|
||||
*
|
||||
* @param module 模块
|
||||
* @param monitorPoint 监控点
|
||||
* @return 返回埋点事务实例
|
||||
*/
|
||||
|
||||
+ (AppMonitorStatTransaction *)createTransactionWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
//
|
||||
// AppMonitorStat2.h
|
||||
// AppMonitor
|
||||
//
|
||||
// Created by sugar on 7/8/15.
|
||||
// Copyright (c) 2015 君展. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// 数据格式以下图为例:
|
||||
// 启动性能 - 启动时间监控
|
||||
// 启动方式 | cpu | 机型 | 网络类型| 总计
|
||||
// ----------------------------------
|
||||
// 冷启动耗时 |arm7 | 4s | 2G | 5s (约束2-10)
|
||||
// 热启动耗时 |arm7s| 5s | 4G | 3s (约束1-3)
|
||||
|
||||
// step 1: 创建一个模块空间;monitorForScheme
|
||||
// step 2: 在空间下面创建表
|
||||
// step 3: 添加对应的值的约束,不在约束范围内的点将一噪点方式上报
|
||||
// step 4: 更新表数据
|
||||
//
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@interface AppMonitorTable : NSObject
|
||||
|
||||
// BEGIN Add by 玄叶
|
||||
+ (void)registerWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint columns:(NSArray *)cols rows:(NSArray * )rows aggregate:(BOOL)aggregate;
|
||||
|
||||
+ (void)addConstraintWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint name:(NSString *)name min:(double)min max:(double)max defaultValue:(double)value;
|
||||
|
||||
+ (BOOL)commitWithModule:(NSString *)module monitorPoint:(NSString *)monitorPoint columns:(NSDictionary *)cols rows:(NSDictionary *)rows;
|
||||
// END
|
||||
|
||||
// 创建一个表的模块空间
|
||||
+ (instancetype)monitorForScheme:(NSString *)scheme tableName:(NSString *)tableName;
|
||||
|
||||
// 新建一张表, 行,列,数据是否聚合
|
||||
- (void)registerTableWithRows:(NSArray * )rows columns:(NSArray *)cols aggregate:(BOOL)yn;
|
||||
|
||||
// 添加约束
|
||||
- (void)addConstraintWithName:(NSString *)name range:(NSRange)range defaultValue:(NSNumber *)number;
|
||||
|
||||
// 添加约束
|
||||
- (void)addConstraintWithName:(NSString *)name min:(double)min max:(double)max defaultValue:(double)value;
|
||||
|
||||
// 更新表 行的名字,列的名字,行的数据,列的数据
|
||||
- (BOOL)updateTableForColumns:(NSDictionary *)cols rows:(NSDictionary *)rows;
|
||||
|
||||
// 更新表,不区分行列名字。此接口不允许行列同名,性能偏低,慎用!
|
||||
- (BOOL)updateTableWithDictionary:(NSDictionary *)dict;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// UT.h
|
||||
// miniUTSDK
|
||||
//
|
||||
// Created by 宋军 on 15/5/19.
|
||||
// Copyright (c) 2015年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface UT : NSObject
|
||||
|
||||
////=====================================h5&Native接口=====================================
|
||||
/**
|
||||
* @brief h5&Native打通
|
||||
*
|
||||
* @warning 调用说明:由windwave封装,供aplus_wap.js调用
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param dataDict aplus_wap.js采集的h5信息都通过该字典传进来,该字典中必须有key(funcType)
|
||||
* 用来区分采集的是哪个事件信息,比如funcType=2001,则h5UT内部会调用
|
||||
* pageEnter来处理,funcType=2101,则调用ctrlClicked处理
|
||||
*
|
||||
*/
|
||||
+(void) h5UT:(NSDictionary *) dataDict view:(UIView *) pView viewController:(UIViewController *) pViewController;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,145 @@
|
||||
//
|
||||
// UTAnalytics.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14-10-14.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "UTTracker.h"
|
||||
#import "UTIRequestAuthentication.h"
|
||||
#import "UTICrashCaughtListener.h"
|
||||
|
||||
@interface UTAnalytics : NSObject
|
||||
|
||||
|
||||
+ (void) turnOnDev2;
|
||||
|
||||
/**
|
||||
* 单例初始化时,不再会从安全图片和指令plist读取appkey
|
||||
*
|
||||
* @return 返回UTAnalytics单例
|
||||
*
|
||||
*/
|
||||
+(UTAnalytics *) getInstance;
|
||||
|
||||
|
||||
/**
|
||||
* 老接口兼容:接口方式设置主app级appkey/appsecret对
|
||||
* 重复设置抛异常
|
||||
*
|
||||
* @param appKey 主app级的appkey
|
||||
*
|
||||
* @param secret 主app级的appsecret
|
||||
*
|
||||
*/
|
||||
- (void)setAppKey:(NSString *)appKey secret:(NSString *)secret;
|
||||
|
||||
|
||||
/**
|
||||
* 新接口1:从安全图片读取出appkey后,塞給ut,作为主app级的appkey
|
||||
* 重复设置抛异常
|
||||
*
|
||||
* @param appKey 主app级的appkey
|
||||
*
|
||||
* @param authocode 多图片时的后缀;为nil时,对应默认图片
|
||||
*
|
||||
*/
|
||||
- (void)setAppKey4APP:(NSString *)appKey authcode:(NSString *)authcode;
|
||||
|
||||
|
||||
/**
|
||||
* 新接口2:接口方式设置SDK级appkey/appsecret对
|
||||
* !!!请注意:只设置了SDK级appkey,埋点方法(UTTracker *) getTracker:(NSString *) pTrackId将不起作用
|
||||
* !!!请注意:一定要先设置了主app级appkey,埋点方法(UTTracker *) getTracker:(NSString *) pTrackId才会作用
|
||||
*
|
||||
* @param appKey SDK级的appkey
|
||||
*
|
||||
* @param secret SDK级的appsecret
|
||||
*
|
||||
*/
|
||||
- (void)setAppKey4SDK:(NSString *)appKey secret:(NSString *)secret;
|
||||
|
||||
|
||||
/**
|
||||
* 新接口3:从安全图片读取出appkey后,塞給ut,作为SDK级的appkey
|
||||
* !!!请注意:只设置了SDK级appkey,埋点方法(UTTracker *) getTracker:(NSString *) pTrackId将不起作用
|
||||
* !!!请注意:一定要先设置了主app级appkey,埋点方法(UTTracker *) getTracker:(NSString *) pTrackId才会作用
|
||||
*
|
||||
* @param appKey SDK级的appkey
|
||||
*
|
||||
* @param authocode 多图片时的后缀;为nil时,对应默认图片
|
||||
*
|
||||
*/
|
||||
- (void)setAppKey4SDK:(NSString *)appKey authcode:(NSString *)authcode;
|
||||
|
||||
|
||||
+ (void)setDailyEnvironment __deprecated;
|
||||
|
||||
/**
|
||||
* 老接口:对主app级的appkey设置appversion
|
||||
*
|
||||
* @param pAppVersion app级的appversion
|
||||
*
|
||||
*/
|
||||
-(void) setAppVersion:(NSString *) pAppVersion;
|
||||
|
||||
|
||||
-(void) setChannel:(NSString *) pChannel;
|
||||
|
||||
-(void) updateUserAccount:(NSString *) pNick userid:(NSString *) pUserId;
|
||||
|
||||
-(void) userRegister:(NSString *) pUsernick;
|
||||
|
||||
-(void) updateSessionProperties:(NSDictionary *) pDict;
|
||||
|
||||
|
||||
/**
|
||||
* 老接口兼容:获取默认的UTTracker.
|
||||
* 如果设置了app级的appkey,默认的tracker对应app级的生产者
|
||||
* 如果只设置了sdk级的appkey,默认的tracker为空,返回第一个设置appkey的对应生产者
|
||||
*
|
||||
* @return 默认的UTTracker
|
||||
*
|
||||
*/
|
||||
-(UTTracker *) getDefaultTracker;
|
||||
|
||||
|
||||
/**
|
||||
* 老接口兼容:返回trackid对应的UTTracker.
|
||||
* 只能已经设置主app级appkey的前提下,才能有效设置并返回
|
||||
*
|
||||
* @param pTrackId 主app级的trackid
|
||||
*
|
||||
* @return 返回trackid对应的UTTracker
|
||||
*
|
||||
*/
|
||||
-(UTTracker *) getTracker:(NSString *) pTrackId;
|
||||
|
||||
|
||||
/**
|
||||
* 新接口:获取sdk级对应的UTTracker.
|
||||
* 只有已经设置对应的sdk级的appkey的前提下,才能有效返回
|
||||
*
|
||||
* @param pAppkey SDK级的appkey
|
||||
*
|
||||
* @return sdk级对应的UTTracker
|
||||
*
|
||||
*/
|
||||
-(UTTracker *) getTracker4SDK:(NSString *) pAppkey;
|
||||
|
||||
-(void) turnOnDebug;
|
||||
|
||||
-(void) turnOnDev;
|
||||
|
||||
// 以下接口功能已废弃,接口保留
|
||||
-(void) setRequestAuthentication:(id<UTIRequestAuthentication>) pRequestAuth __deprecated;
|
||||
|
||||
- (void)onCrashHandler;
|
||||
|
||||
-(void) turnOffCrashHandler;
|
||||
|
||||
-(void) setCrashCaughtListener:(id<UTICrashCaughtListener>) aListener;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// BaseRequestAuthentication.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14-10-17.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "UTIRequestAuthentication.h"
|
||||
|
||||
@interface UTBaseRequestAuthentication : NSObject<UTIRequestAuthentication>
|
||||
|
||||
-(id) initWithAppKey:(NSString *) pAppKey appSecret:(NSString *) pSecret;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// UTCustomHitBuilder.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14-10-17.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import "UTHitBuilder.h"
|
||||
|
||||
@interface UTCustomHitBuilder : UTHitBuilder
|
||||
|
||||
-(void) setEventLabel:(NSString *) pEventId;
|
||||
|
||||
-(void) setEventPage:(NSString *) pPageName;
|
||||
|
||||
-(void) setDurationOnEvent:(long long) durationOnEvent;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// UTBaseMapBuilder.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14-10-14.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
|
||||
@interface UTHitBuilder : NSObject
|
||||
|
||||
|
||||
-(NSDictionary *) build;
|
||||
|
||||
-(void) setProperty:(NSString *) pKey value:(NSString *) pValue;
|
||||
|
||||
-(void) setProperties:(NSDictionary *) pPageProperties;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// UTICrashCaughtListener.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14/10/28.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@protocol UTICrashCaughtListener <NSObject>
|
||||
|
||||
-(NSDictionary *) onCrashCaught:(NSString *) pCrashReason CallStack:(NSString *)callStack;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// IRequestAuthentication.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14-10-17.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@protocol UTIRequestAuthentication <NSObject>
|
||||
|
||||
-(NSString *) getAppKey;
|
||||
|
||||
-(NSString *) getSign:(NSString*) pToBeSignStr;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// UTOirginalCustomHitBuilder.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14/10/28.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "UTHitBuilder.h"
|
||||
@interface UTOirginalCustomHitBuilder : UTHitBuilder
|
||||
|
||||
-(void) setPageName:(NSString *) pPage;
|
||||
|
||||
-(void) setEventId:(NSString *) pEventId;
|
||||
|
||||
-(void) setArg1:(NSString *) pArg1;
|
||||
|
||||
-(void) setArg2:(NSString *) pArg2;
|
||||
|
||||
-(void) setArg3:(NSString *) pArg3;
|
||||
|
||||
-(void) setArgs:(NSDictionary *) pArgs;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// UTMapBuilder.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14-10-14.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import "UTHitBuilder.h"
|
||||
|
||||
@interface UTPageHitBuilder : UTHitBuilder
|
||||
|
||||
-(void) setPageName:(NSString *) pPageName;
|
||||
|
||||
-(void) setReferPage:(NSString *) pReferPageName;
|
||||
|
||||
-(void) setDurationOnPage:(long long ) durationTimeOnPage;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// SecuritySDKRequestAuthentication.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14-10-17.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "UTIRequestAuthentication.h"
|
||||
|
||||
@interface UTSecuritySDKRequestAuthentication : NSObject<UTIRequestAuthentication>
|
||||
|
||||
-(id) initWithAppKey:(NSString *) pAppKey;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// UTTeamWork.h
|
||||
// UTMini
|
||||
//
|
||||
// Created by ljianfeng on 2019/9/29.
|
||||
// Copyright © 2019 alibaba. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface UTTeamWork : NSObject
|
||||
/**
|
||||
* @brief 自定义https上传域名
|
||||
*
|
||||
* @param url 指定的https上传域名,比如以https://开头
|
||||
*
|
||||
* @warning 调用说明:需要在初始化UT之前调用(setAppkey之前)
|
||||
*/
|
||||
+ (void)setHttpsUploadUrl:(NSString *)url;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,143 @@
|
||||
//
|
||||
// UTTracker.h
|
||||
// miniUTInterface
|
||||
//
|
||||
// Created by 宋军 on 14-10-14.
|
||||
// Copyright (c) 2014年 ___SONGJUN___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
//#import <UIKit/UIViewController.h>
|
||||
//#import <UIKit/UIWebView.h>
|
||||
@class UTDSDKInfo;
|
||||
|
||||
typedef enum _UTPageStatus{
|
||||
UT_H5_IN_WebView//设置容器中的H5页面事件的eventid为2001,不设置默认为2006
|
||||
} UTPageStatus;
|
||||
|
||||
@interface UTTracker : NSObject
|
||||
|
||||
@property (readonly,copy) UTDSDKInfo * mSdkinfo;
|
||||
|
||||
-(id) initWithTrackId:(NSString *) pTrackId __deprecated;
|
||||
|
||||
-(id) initWithAppKey:(NSString *) pAppkey
|
||||
appsecret:(NSString *) pAppSecret
|
||||
authcode:(NSString *) pAuthCode
|
||||
securitySign:(BOOL) securitySign;
|
||||
|
||||
-(id) initWithTracker:(UTTracker *) pTracker trackid:(NSString *) pTrackId;
|
||||
|
||||
-(NSString *) getAppKey;
|
||||
|
||||
-(void) setGlobalProperty:(NSString *) pKey value:(NSString *) pValue;
|
||||
|
||||
-(void) removeGlobalProperty:(NSString *) pKey;
|
||||
|
||||
-(NSString *) getGlobalProperty:(NSString *) pKey;
|
||||
|
||||
-(void) send:(NSDictionary *) pLogDict;
|
||||
|
||||
#pragma mark 页面埋点
|
||||
/**
|
||||
* @brief 页面进入.
|
||||
*
|
||||
* @param pPageObject 页面对象,如viewcontroller指针
|
||||
*
|
||||
* @warning 调用说明:1.必须和pageDisAppear配对使用,否则不会成功埋点
|
||||
* 2.确定页面名称优先级:updatePageName > NSStringFromClass(pObject.class)
|
||||
*
|
||||
* 最佳位置:若是viewcontroller页面,则需在viewDidAppear函数内调用
|
||||
*/
|
||||
-(void) pageAppear:(id) pPageObject;
|
||||
|
||||
/**
|
||||
* @brief 页面进入.
|
||||
*
|
||||
* @param pPageObject 页面对象,如viewcontroller指针
|
||||
* @param pPageName 页面名称,如Page_Detail
|
||||
*
|
||||
* @warning 调用说明:1.必须和pageDisAppear配对使用,否则不会成功埋点
|
||||
* 2.确定页面名称优先级:updatePageName > pPageName > NSStringFromClass(pObject.class)
|
||||
* 若当调用pageAppear时已知页面名称,强烈建议使用该接口
|
||||
* 最佳位置:若是viewcontroller页面,则需在viewDidAppear函数内调用
|
||||
*/
|
||||
-(void) pageAppear:(id) pPageObject withPageName:(NSString *) pPageName;
|
||||
|
||||
/**
|
||||
* @brief 页面离开.
|
||||
*
|
||||
* @param pPageObject 页面对象,如viewcontroller指针
|
||||
*
|
||||
* @warning 调用说明:必须和pageAppear配对使用,否则不会成功埋点
|
||||
*
|
||||
* 最佳位置:若是viewcontroller页面,则需在viewDidDisAppear函数内调用
|
||||
*/
|
||||
-(void) pageDisAppear:(id) pPageObject;
|
||||
|
||||
/**
|
||||
* @brief 更新页面业务参数.
|
||||
*
|
||||
* @param pPageObject 页面对象,如viewcontroller指针
|
||||
* @param pProperties 业务参数,kv对
|
||||
*
|
||||
* @warning 调用说明:必须在pageDisAppear之前调用
|
||||
*
|
||||
* 最佳位置:在pageDisAppear之前调用即可
|
||||
*/
|
||||
-(void) updatePageProperties:(id) pPageObject properties:(NSDictionary *) pProperties;
|
||||
|
||||
/**
|
||||
* @brief 更新页面业务参数.
|
||||
*
|
||||
* @param pProperties 传给下一个页面业务参数,kv对
|
||||
*
|
||||
* @warning 调用说明:必须在下一个页面pageAppear之前调用,否则会携带错误
|
||||
*
|
||||
* 最佳位置:必须在下一个页面pageAppear之前调用
|
||||
*/
|
||||
-(void) updateNextPageProperties:(NSDictionary *) pProperties;
|
||||
|
||||
#pragma mark 页面埋点的辅助函数
|
||||
/**
|
||||
* @brief 更新页面名称.
|
||||
*
|
||||
* @param pPageObject 页面对象,如viewcontroller指针
|
||||
* @param pPageName 更新后的页面名称
|
||||
*
|
||||
* @warning 调用说明:只有当调用pageAppear时还未知页面名称,后续可使用该接口更新
|
||||
*
|
||||
* 最佳位置:在pageDisAppear之前调用
|
||||
*/
|
||||
-(void) updatePageName:(id) pPageObject pageName:(NSString *) pPageName;
|
||||
|
||||
/**
|
||||
* @brief 更新页面url.
|
||||
*
|
||||
* @param pPageObject 页面对象,如viewcontroller指针
|
||||
* @param pUrl 页面对应的url
|
||||
*
|
||||
* @warning 调用说明:如手淘统一导航将每次页面跳转的url塞给对应的viewcontroller
|
||||
*
|
||||
* 最佳位置:在pageDisAppear之前调用
|
||||
*/
|
||||
-(void) updatePageUrl:(id) pPageObject url:(NSURL *) pUrl;
|
||||
|
||||
/**
|
||||
* @brief 更新页面状态.
|
||||
*
|
||||
* @param pPageObject 页面对象,如viewcontroller指针
|
||||
* @param aStatus 页面状态 enum类型
|
||||
*
|
||||
* @warning 调用说明:告知页面处于某些特殊的业务场景,如回退等
|
||||
*
|
||||
* 最佳位置:必须在pageAppear之前调用
|
||||
*/
|
||||
-(void) updatePageStatus:(id) pPageObject status:(UTPageStatus) aStatus;
|
||||
|
||||
|
||||
-(void) skipPage:(id) pPageObject;
|
||||
|
||||
- (void) ctrlClicked:(NSString *)controlName onPage:(NSObject *) pageName args:(NSDictionary *) dict;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>18D109</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>UTMini</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.taobao.junzhan.UTMini</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>UTMini</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>5.2.0.2-appkeys-SNAPSHOT</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>iPhoneOS</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>16B91</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>iphoneos</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>12.1</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>16B91</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>iphoneos12.1</string>
|
||||
<key>DTXcode</key>
|
||||
<string>1010</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>10B61</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>5.0</string>
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
Reference in New Issue
Block a user