mobilytics 2.0

mobilytics 2.0

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2016年12月

维护者:mashoulei.



  • 马守磊

iOS SDK 使用文档

依赖库

  • AdSupport.framework - 启用 Apple ADID 支持
  • CoreTelephony.framework - 获取运营商
  • Security.framework - 加密支持
  • CoreLocation.framework - 获取定位信息的支持
  • SystemConfiguration.framework - 获取联网方式(wifi, cellular)
  • libsqlite3.dylib - sqlite 支持
  • libz.dylib - gzip 压缩支持

路径:TARGETS -> Build Phases -> Link Binary With Libraries

导入 SDK

将下载包中的 DATracker.h 和 libMobilytics.a 文件添加到您的 App 项目中

启用 API

*AppDelegate.mapplication:didFinishLaunchingWithOptions 方法中调用以下方法,参数依次为 app key,版本和来源渠道。

[[DATracker sharedTracker] startTrackerWithAppKey:@"app-key" appVersion:@"0.1" appChannel:@"AppStore"];

如果要禁用 SDK 自动上传数据的功能,调用

[[DATracker sharedTracker] startTrackerWithAppKey:@"app-key" appVersion:@"0.1" appChannel:@"AppStore" autoUpload:NO];

如果要设置为仅在 wifi 环境下发送数据,调用

[[DATracker sharedTracker] startTrackerWithAppKey:@"app-key" appVersion:@"0.1" appChannel:@"AppStore" autoUpload:YES sendOnWifi:YES];

设置为仅在 WIFI 下发送数据,可能会导致服务器接收数据延迟,可能影响统计系统结果的及时性,不建议使用

如果要使用自定义设备标识(如 UDID),调用

[[DATracker sharedTracker] startTrackerWithAppKey:@"app-key" appVersion:@"0.1" appChannel:@"AppStore" autoUpload:YES sendOnWifi:NO deviceUDID:@"id-set-by-app"];

App Key 可从移动分析系统网站获取,不能为空值或者 null

以下所有调用都必须在 启用 API 之后发生


请调用该方法手动发送数据

[[DATracker sharedTracker] upload];

请调用该方法手动禁用自动上传

[[DATracker sharedTracker] setAutoUploadOn:NO];

请调用该方法手动开启只在 WIFI 下发送数据

[[DATracker sharedTracker] setSendOnWifiOn:YES];

推广跟踪

紧跟在 启用 API 之后调用

[[DATracker sharedTracker] enableCampaign];

获取 Device ID

[[DATracker sharedTracker] getDeviceId];

该 Device ID 并非 Apple UDID,仅用于用户系统本身的设备去重,并且可能根据 Apple 政策做出相应调整,不一定保证长期唯一性

用户帐号管理

在用户登录后,请调用如下接口,参数为用户帐号

- (void)loginUser:(NSString *)userId;

当用户登出后,请调用

- (void)logoutUser;

如果登录发生在需要捕捉事件之后,则该事件无用户信息

用户位置记录

在获取到用户经纬度时,请调用以下接口记录用户位置

- (void)setLocation:(double)latitude andLongitude:(double)longitude

事件捕捉

调用以下方法进行事件捕捉

- (void)trackEvent:(NSString *)eventId;
- (void)trackEvent:(NSString *)eventId withAttributes:(NSDictionary *)attributes;

eventId 为事件标识,如 "login", "buy"

[[DATracker sharedTracker] trackEvent:@"buy"];

attributes 为自定义字段名称,格式如 "{@"money":@"100", @"timestamp":@"1357872572"}"

可以记录事件发生时的其他信息

[[DATracker sharedTracker] trackEvent:@"login"
    withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:@"100", @"money", nil]];

还可以对事件进行分类和标记

- (void)trackEvent:(NSString *)eventId cagtegory:(NSString *)category label:(NSString *)label;
- (void)trackEvent:(NSString *)eventId cagtegory:(NSString *)category label:(NSString *)label withAttributes:(NSDictionary *)attributes;

如果需要记录事件发生持续时间,可以调用以下接口

- (void)trackEvent:(NSString *)eventId costTime:(int)seconds category:(NSString *)category label:(NSString *)label;
- (void)trackEvent:(NSString *)eventId costTime:(int)seconds category:(NSString *)category label:(NSString *)label withAttributes:(NSDictionary *)attributes;

如果需要记录事件发生时的位置信息,可以调用以下接口

- (void)trackEvent:(NSString *)eventId costTime:(int)seconds latitude:(double)latitude longitude:(double)longitude category:(NSString *)category label:(NSString *)label withAttributes:(NSDictionary *)attributes;

以上事件记录只能记录用户会话内的行为,如果需要记录用户会话外行为,如在 App 的 applicationWillEnterForeground 之前的行为,可以调用以下接口 (mustInSession=false)

- (void)trackEvent:(NSString *)eventId costTime:(int)seconds latitude:(double)latitude longitude:(double)longitude category:(NSString *)category label:(NSString *)label withAttributes:(NSDictionary *)attributes mustInSession:(BOOL)mustInSession;

如果需要捕捉的事件具有层级结构,请调用以下接口

- (void)trackEvent:(NSString *)eventId costTime:(int)seconds withMultipleCategories:(NSString *)primaryId, ... NS_REQUIRES_NIL_TERMINATION;

[tracker trackEvent:@"eventId" costTime:0 withMultipleCategories:@"cat1", @"var1", @"cat2", @"var2", @"cat3", @"var3", @"cat4", @"var4", nil];

层级结构需要在移动分析系统内部进行设置,才可使用,按照从高到低的顺序填写,例如:主题 id,主题名,咨询源 id,咨询源名,新闻 id,新闻名 …

事件捕捉调用虽然在任何地方都可以使用,但最好不要在循环或者非主线程中调用,以及最好不要使用很长的 eventID 或者 key value 值,否则会增加 SDK 发送的数据量

异常捕捉

可以在 try-catch 块中进行异常捕捉,传入参数为 NSException (及其子类) 实例

@try {
    [@"str" characterAtIndex:10];
}
@catch (NSException *exception) {
    [[DATracker sharedTracker] trackException:exception];
}

如果还需要记录 Callstack,可以调用

[[DATracker sharedTracker] trackExceptionWithCallstack:exception];

如果需要手动指定异常信息,可以调用

[[DATracker sharedTracker] trackExceptionWithName:@"exception" reason:@"some reason" callstack:@"long callstack"];

如需进行堆栈跟踪捕获,请在启用SDK后尽早调用以下方法来启用此功能,并确保App中未绑定任何signal和未捕获异常处理程序。

  • (void)enableCrashReporting;

屏幕View捕捉

screenName为当前View名称

- (void)trackScreen:(NSString *)screenName;

搜索动作捕捉

keyword为搜索关键词,searchType为搜索类型,例如新闻搜索,视频搜索等

- (void)trackSearch:(NSString *)keyword in:(NSString *)searchType;

分享动作捕捉

content为分享内容,from为分享发生地,to为分享目的地,例如新浪微博,网易微博等

-(void)trackShare:(NSString*)content from:(NSString *)from to:(NSString *)to;

用户任务记录

对用户的任务进行记录,参数为任务id和任务失败原因,可用于用户行为完成,用户行为耗时等统计。

[[DATracker sharedTracker] trackOnMissionBegan:@"mission-1"];
[[DATracker sharedTracker] trackOnMissionAccomplished:@"mission-1"];
[[DATracker sharedTracker] trackOnMissionFailed:@"mission-2" reason:@"no power"];