Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
GMPhobos
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gengmeiios
GMPhobos
Commits
ca750985
Commit
ca750985
authored
Oct 11, 2016
by
翟国钧
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
phobos 大变动
parent
0a5e09d5
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
83 additions
and
20 deletions
+83
-20
Phobos.h
Pod/Classes/Phobos.h
+5
-2
Phobos.m
Pod/Classes/Phobos.m
+49
-17
UIViewController+Phobos.h
Pod/Classes/UIViewController+Phobos.h
+9
-0
UIViewController+Phobos.m
Pod/Classes/UIViewController+Phobos.m
+20
-1
No files found.
Pod/Classes/Phobos.h
View file @
ca750985
...
...
@@ -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
...
...
Pod/Classes/Phobos.m
View file @
ca750985
...
...
@@ -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
);
...
...
Pod/Classes/UIViewController+Phobos.h
View file @
ca750985
...
...
@@ -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
Pod/Classes/UIViewController+Phobos.m
View file @
ca750985
...
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment