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

phobos 大变动

parent 0a5e09d5
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
@interface Phobos : NSObject @interface Phobos : NSObject
@property (strong, nonatomic) UINavigationController *selectedNavigationController;
/** /**
* @brief 开启Phobos统计,默认以BATCH方式发送log. * @brief 开启Phobos统计,默认以BATCH方式发送log.
* *
...@@ -88,14 +91,14 @@ ...@@ -88,14 +91,14 @@
* *
* @since 0.0.8 * @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处理,在此方法中记录当前页面的停留时间和记录本次埋点事件 * @brief 当页面结束时的PV处理,在此方法中记录当前页面的停留时间和记录本次埋点事件
* *
* @since 0.0.8 * @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 * @author 翟国钧, 16-03-08 11:03:45
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#import <AdSupport/AdSupport.h> #import <AdSupport/AdSupport.h>
#import "PhobosUtil.h" #import "PhobosUtil.h"
#import "PhobosConfig.h" #import "PhobosConfig.h"
#import "UIViewController+Phobos.h"
static Phobos *sharedClient = nil; static Phobos *sharedClient = nil;
static NSString *sdkVersion = @"110"; static NSString *sdkVersion = @"110";
...@@ -27,9 +27,6 @@ static NSString *sdkVersion = @"110"; ...@@ -27,9 +27,6 @@ static NSString *sdkVersion = @"110";
@property (assign, nonatomic) BOOL logEnabled; @property (assign, nonatomic) BOOL logEnabled;
@property (strong, nonatomic) NSString *sessionId; @property (strong, nonatomic) NSString *sessionId;
@property (strong, nonatomic) NSMutableDictionary *pageEnterParam;
@end @end
@implementation Phobos @implementation Phobos
...@@ -90,6 +87,17 @@ static NSString *sdkVersion = @"110"; ...@@ -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 #pragma mark - notification handler
/** /**
...@@ -138,6 +146,7 @@ static NSString *sdkVersion = @"110"; ...@@ -138,6 +146,7 @@ static NSString *sdkVersion = @"110";
phobosLog(@"handleAppInForeground"); phobosLog(@"handleAppInForeground");
[self handleSessionStart]; [self handleSessionStart];
[self fetchDataAndSend]; [self fetchDataAndSend];
[self handlePVEventAppInForeground];
} }
/** /**
...@@ -151,6 +160,7 @@ static NSString *sdkVersion = @"110"; ...@@ -151,6 +160,7 @@ static NSString *sdkVersion = @"110";
phobosLog(@"handleAppInBackgound"); phobosLog(@"handleAppInBackgound");
[self handleSessionOver]; [self handleSessionOver];
[self fetchDataAndSend]; [self fetchDataAndSend];
[self handlePVEventAppInBackgound];
} }
/** /**
...@@ -173,6 +183,30 @@ static NSString *sdkVersion = @"110"; ...@@ -173,6 +183,30 @@ static NSString *sdkVersion = @"110";
[cache removeObjectAtDiskWithkey:PhobosBeginTime]; [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 #pragma mark - track event handler
+ (void)track:(NSString *)eventId{ + (void)track:(NSString *)eventId{
...@@ -222,26 +256,25 @@ static NSString *sdkVersion = @"110"; ...@@ -222,26 +256,25 @@ static NSString *sdkVersion = @"110";
} }
#pragma mark - pv #pragma mark - pv
- (void)onPageStart:(NSString *)pageName businessId:(NSString *)businessId referer:(NSString *)refererPageName{ - (void)onPageStart:(NSString *)pageName businessId:(NSString *)businessId referer:(NSString *)refererPageName inTime:(NSString *)time{
_pageEnterParam = [NSMutableDictionary dictionaryWithObjectsAndKeys: //目前来说,变成了空方法,其主要功能是给当前VC的属性赋值,下个版本优化,挪到UIViewController+Phobos里去
pageName?:@"",@"page_name",
businessId?:@"",@"business_id",
refererPageName?:@"",@"referer",
[self currentTime],@"in",nil];
} }
- (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]; NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
@try { @try {
[dict setObject:[self currentTime] forKey:@"out"]; [dict setObject:[self currentTime] forKey:@"out"];
[dict setObject:@([_pageEnterParam[@"in"] doubleValue])?:@"" forKey:@"in"]; [dict setObject:time?:@"" forKey:@"in"];
[dict setObject:_pageEnterParam[@"page_name"]?:@"" forKey:@"page_name"]; [dict setObject:pageName forKey:@"page_name"];
[dict setObject:_pageEnterParam[@"business_id"]?:@"" forKey:@"business_id"]; [dict setObject:businessId?:@"" forKey:@"business_id"];
[dict setObject:_pageEnterParam[@"referer"]?:@"" forKey:@"referer"]; [dict setObject:refererPageName?:@"" forKey:@"referer"];
[dict setObject:@(0) forKey:@"fake"]; [dict setObject:@(0) forKey:@"fake"];
[Phobos track:@"page_view" attributes:dict]; [Phobos track:@"page_view" attributes:dict];
[_pageEnterParam removeAllObjects];
} }
@catch (NSException *exception) { @catch (NSException *exception) {
phobosLog(exception); phobosLog(exception);
...@@ -259,7 +292,6 @@ static NSString *sdkVersion = @"110"; ...@@ -259,7 +292,6 @@ static NSString *sdkVersion = @"110";
[dict setObject:@(1) forKey:@"fake"]; [dict setObject:@(1) forKey:@"fake"];
[Phobos track:@"page_view" attributes:dict]; [Phobos track:@"page_view" attributes:dict];
[_pageEnterParam removeAllObjects];
} }
@catch (NSException *exception) { @catch (NSException *exception) {
phobosLog(exception); phobosLog(exception);
......
...@@ -34,4 +34,13 @@ ...@@ -34,4 +34,13 @@
* @since 5.9.1 * @since 5.9.1
*/ */
@property (nonatomic, copy, nonnull) NSString *pageName; @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 @end
...@@ -48,4 +48,23 @@ ...@@ -48,4 +48,23 @@
- (void)setBusinessId:(NSString *)businessId { - (void)setBusinessId:(NSString *)businessId {
objc_setAssociatedObject(self, @selector(businessId), businessId, OBJC_ASSOCIATION_COPY); 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 @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