Commit ca750985 authored by 翟国钧's avatar 翟国钧

phobos 大变动

parent 0a5e09d5
......@@ -10,6 +10,9 @@
@interface Phobos : NSObject
@property (strong, nonatomic) UINavigationController *selectedNavigationController;
/**
* @brief 开启Phobos统计,默认以BATCH方式发送log.
*
......@@ -88,14 +91,14 @@
*
* @since 0.0.8
*/
- (void)onPageStart:(NSString *)pageName businessId:(NSString *)businessId referer:(NSString *)refererPageName;
- (void)onPageStart:(NSString *)pageName businessId:(NSString *)businessId referer:(NSString *)refererPageName inTime:(NSString *)time;
/**
* @brief 当页面结束时的PV处理,在此方法中记录当前页面的停留时间和记录本次埋点事件
*
* @since 0.0.8
*/
- (void)onPageEnd;
- (void)onPageEnd:(NSString *)pageName businessId:(NSString *)businessId referer:(NSString *)refererPageName inTime:(NSString *)time;
/**
* @author 翟国钧, 16-03-08 11:03:45
......
......@@ -11,7 +11,7 @@
#import <AdSupport/AdSupport.h>
#import "PhobosUtil.h"
#import "PhobosConfig.h"
#import "UIViewController+Phobos.h"
static Phobos *sharedClient = nil;
static NSString *sdkVersion = @"110";
......@@ -27,9 +27,6 @@ static NSString *sdkVersion = @"110";
@property (assign, nonatomic) BOOL logEnabled;
@property (strong, nonatomic) NSString *sessionId;
@property (strong, nonatomic) NSMutableDictionary *pageEnterParam;
@end
@implementation Phobos
......@@ -90,6 +87,17 @@ static NSString *sdkVersion = @"110";
}
}
- (UINavigationController *)selectedNavigationController{
if ([[UIApplication sharedApplication].keyWindow.rootViewController isKindOfClass:[UITabBarController class]]) {
UITabBarController *tabbar = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
UINavigationController *navigationController = (UINavigationController *)tabbar.selectedViewController;
return navigationController;
}else{
NSAssert(0, @"获取不到 selectedNavigationController %@", NSStringFromClass([UIApplication sharedApplication].keyWindow.rootViewController.class));
return nil;
}
}
#pragma mark - notification handler
/**
......@@ -138,6 +146,7 @@ static NSString *sdkVersion = @"110";
phobosLog(@"handleAppInForeground");
[self handleSessionStart];
[self fetchDataAndSend];
[self handlePVEventAppInForeground];
}
/**
......@@ -151,6 +160,7 @@ static NSString *sdkVersion = @"110";
phobosLog(@"handleAppInBackgound");
[self handleSessionOver];
[self fetchDataAndSend];
[self handlePVEventAppInBackgound];
}
/**
......@@ -173,6 +183,30 @@ static NSString *sdkVersion = @"110";
[cache removeObjectAtDiskWithkey:PhobosBeginTime];
}
/**
APP从后台到前台的时候,重新初始化pagename等信息
@author zhaiguojun 16-10-11 in (null)
*/
- (void)handlePVEventAppInForeground {
NSString *pageName = self.selectedNavigationController.visibleViewController.pageName;
NSString *businessId = self.selectedNavigationController.visibleViewController.businessId;
NSString *regerer = self.selectedNavigationController.visibleViewController.referer;
self.selectedNavigationController.visibleViewController.inTime = [self currentTime];
[self onPageStart:pageName businessId:businessId referer:regerer inTime:[self currentTime]];
}
/**
APP进到后台的时候,把当前pageview时间结束
@author zhaiguojun 16-10-11 in (null)
*/
- (void)handlePVEventAppInBackgound {
NSString *pageName = self.selectedNavigationController.visibleViewController.pageName;
NSString *businessId = self.selectedNavigationController.visibleViewController.businessId;
NSString *referer = self.selectedNavigationController.visibleViewController.referer;
NSString *inTime = self.selectedNavigationController.visibleViewController.inTime;
[self onPageEnd:pageName businessId:businessId referer:referer inTime:inTime];
}
#pragma mark - track event handler
+ (void)track:(NSString *)eventId{
......@@ -222,26 +256,25 @@ static NSString *sdkVersion = @"110";
}
#pragma mark - pv
- (void)onPageStart:(NSString *)pageName businessId:(NSString *)businessId referer:(NSString *)refererPageName{
_pageEnterParam = [NSMutableDictionary dictionaryWithObjectsAndKeys:
pageName?:@"",@"page_name",
businessId?:@"",@"business_id",
refererPageName?:@"",@"referer",
[self currentTime],@"in",nil];
- (void)onPageStart:(NSString *)pageName businessId:(NSString *)businessId referer:(NSString *)refererPageName inTime:(NSString *)time{
//目前来说,变成了空方法,其主要功能是给当前VC的属性赋值,下个版本优化,挪到UIViewController+Phobos里去
}
- (void)onPageEnd{
- (void)onPageEnd:(NSString *)pageName businessId:(NSString *)businessId referer:(NSString *)refererPageName inTime:(NSString *)time{
if (![self isNonEmpty:pageName]) {
return;
}
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
@try {
[dict setObject:[self currentTime] forKey:@"out"];
[dict setObject:@([_pageEnterParam[@"in"] doubleValue])?:@"" forKey:@"in"];
[dict setObject:_pageEnterParam[@"page_name"]?:@"" forKey:@"page_name"];
[dict setObject:_pageEnterParam[@"business_id"]?:@"" forKey:@"business_id"];
[dict setObject:_pageEnterParam[@"referer"]?:@"" forKey:@"referer"];
[dict setObject:time?:@"" forKey:@"in"];
[dict setObject:pageName forKey:@"page_name"];
[dict setObject:businessId?:@"" forKey:@"business_id"];
[dict setObject:refererPageName?:@"" forKey:@"referer"];
[dict setObject:@(0) forKey:@"fake"];
[Phobos track:@"page_view" attributes:dict];
[_pageEnterParam removeAllObjects];
}
@catch (NSException *exception) {
phobosLog(exception);
......@@ -259,7 +292,6 @@ static NSString *sdkVersion = @"110";
[dict setObject:@(1) forKey:@"fake"];
[Phobos track:@"page_view" attributes:dict];
[_pageEnterParam removeAllObjects];
}
@catch (NSException *exception) {
phobosLog(exception);
......
......@@ -34,4 +34,13 @@
* @since 5.9.1
*/
@property (nonatomic, copy, nonnull) NSString *pageName;
@property (nonatomic, copy, nonnull) NSString *inTime;
/**
为当前viewcontrolller存储各种埋点需要的参数
@author zhaiguojun 16-10-11 in (null)
*/
@property (nonatomic, strong, nonnull) NSMutableDictionary *pageEnterParam;
@end
......@@ -26,7 +26,7 @@
if (refererIndex < 0 ) {
return @"";
}
UIViewController *controller = navigationPool[refererIndex];
return controller.pageName == nil ? @"" : controller.pageName;
}
......@@ -48,4 +48,23 @@
- (void)setBusinessId:(NSString *)businessId {
objc_setAssociatedObject(self, @selector(businessId), businessId, OBJC_ASSOCIATION_COPY);
}
- (void)setInTime:(NSString *)inTime {
objc_setAssociatedObject(self, @selector(inTime), inTime, OBJC_ASSOCIATION_COPY);
}
- (NSString *)inTime {
NSString *inTime = objc_getAssociatedObject(self, @selector(inTime));
return inTime;
}
- (void)setPageEnterParam:(NSMutableDictionary *)pageEnterParam {
objc_setAssociatedObject(self, @selector(pageEnterParam), pageEnterParam, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (NSMutableDictionary *)pageEnterParam {
NSMutableDictionary *dict = objc_getAssociatedObject(self, @selector(pageEnterParam));
return dict;
}
@end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment