@@ -156,17 +156,13 @@ var ArrayProto = Array.prototype,
156156 slice = ArrayProto . slice ,
157157 toString = ObjProto . toString ,
158158 hasOwnProperty = ObjProto . hasOwnProperty ,
159- LIB_VERSION = '1.14.16 ' ,
159+ LIB_VERSION = '1.14.17 ' ,
160160 LIB_NAME = 'MiniProgram' ;
161161
162162var source_channel_standard = 'utm_source utm_medium utm_campaign utm_content utm_term' ;
163163var latest_source_channel = [ '$latest_utm_source' , '$latest_utm_medium' , '$latest_utm_campaign' , '$latest_utm_content' , '$latest_utm_term' , '$latest_sa_utm' ] ;
164164var latest_share_info = [ '$latest_share_distinct_id' , '$latest_share_url_path' , '$latest_share_depth' , '$latest_share_method' ] ;
165165
166- var sa_referrer = '直接打开' ;
167-
168- sa . status . referrer = '直接打开' ;
169-
170166var mpshow_time = null ;
171167
172168var query_share_depth = 0 ;
@@ -179,6 +175,7 @@ var wxSDKVersion = '';
179175sa . lib_version = LIB_VERSION ;
180176
181177var globalTitle = { } ;
178+ var page_route_map = [ ] ;
182179
183180( function ( ) {
184181 var nativeBind = FuncProto . bind ,
@@ -686,11 +683,22 @@ _.rot13defs = function(str) {
686683 return _ . rot13obfs ( str , n - key ) ;
687684} ;
688685
686+ _ . getCurrentPage = function ( ) {
687+ var obj = { }
688+ try {
689+ var pages = getCurrentPages ( ) ;
690+ obj = pages [ pages . length - 1 ]
691+ } catch ( error ) {
692+ logger . info ( error ) ;
693+ }
694+
695+ return obj
696+ } ;
697+
689698_ . getCurrentPath = function ( ) {
690699 var url = '未取到' ;
691700 try {
692- var pages = getCurrentPages ( ) ;
693- var currentPage = pages [ pages . length - 1 ] ;
701+ var currentPage = _ . getCurrentPage ( )
694702 url = currentPage . route ;
695703 } catch ( e ) {
696704 logger . info ( e ) ;
@@ -1025,8 +1033,80 @@ try {
10251033 } )
10261034} catch ( err ) {
10271035 logger . info ( err ) ;
1036+ } ;
1037+
1038+ _ . setRefPage = function ( ) {
1039+ var _refInfo = {
1040+ route : '' ,
1041+ title : ''
1042+ } ;
1043+
1044+ try {
1045+
1046+ var pages = getCurrentPages ( ) ;
1047+ if ( pages && pages . length === 1 ) {
1048+
1049+ var current_path = pages [ pages . length - 1 ] . route ;
1050+ var current_title = _ . getPageTitle ( current_path ) ;
1051+ var currentPageInfo = {
1052+ title : current_title ,
1053+ route : current_path
1054+ } ;
1055+
1056+ if ( page_route_map . length >= 2 ) {
1057+ if ( page_route_map [ page_route_map . length - 1 ] . route !== currentPageInfo . route ) {
1058+ page_route_map . push ( currentPageInfo ) ;
1059+ page_route_map . shift ( ) ;
1060+ } ;
1061+ } else {
1062+ page_route_map . push ( currentPageInfo ) ;
1063+ }
1064+ }
1065+
1066+ } catch ( error ) {
1067+ logger . info ( error ) ;
1068+ }
10281069}
10291070
1071+ _ . getRefPage = function ( ) {
1072+ var _refInfo = {
1073+ route : '直接打开' ,
1074+ title : ''
1075+ } ;
1076+
1077+ try {
1078+ var pages = getCurrentPages ( ) ;
1079+ if ( pages && pages . length >= 2 ) {
1080+ _refInfo . route = pages [ pages . length - 2 ] . route ;
1081+ _refInfo . title = _ . getPageTitle ( _refInfo . route ) ;
1082+ } else if ( pages && pages . length >= 1 ) {
1083+ if ( page_route_map . length >= 2 ) {
1084+ var refPages = page_route_map ;
1085+ _refInfo . route = refPages [ refPages . length - 2 ] . route ;
1086+ _refInfo . title = _ . getPageTitle ( _refInfo . route ) ;
1087+ } ;
1088+
1089+ if ( _refInfo . route === pages [ pages . length - 1 ] . route ) {
1090+ _refInfo = {
1091+ title : '' ,
1092+ route : '直接打开'
1093+ } ;
1094+ } ;
1095+ }
1096+ } catch ( error ) {
1097+ logger . info ( error ) ;
1098+ }
1099+ return _refInfo ;
1100+ } ;
1101+
1102+ _ . setPageRefData = function ( prop ) {
1103+ var refPage = _ . getRefPage ( ) ;
1104+ if ( _ . isObject ( prop ) ) {
1105+ prop . $referrer = refPage . route ;
1106+ prop . $referrer_title = refPage . title ;
1107+ } ;
1108+ } ;
1109+
10301110_ . getPageTitle = function ( route ) {
10311111 if ( route === '未取到' || ! route ) {
10321112 return false ;
@@ -1172,6 +1252,7 @@ _.info = {
11721252 }
11731253 }
11741254
1255+
11751256 function getSystemInfo ( ) {
11761257 wx . getSystemInfo ( {
11771258 "success" : function ( t ) {
@@ -1296,13 +1377,22 @@ sa.prepareData = function(p, callback) {
12961377
12971378 data . properties . $is_first_day = _ . getIsFirstDay ( ) ;
12981379
1299- }
1380+ var refPage = _ . getRefPage ( ) ;
1381+ if ( ! data . properties . hasOwnProperty ( '$referrer' ) ) {
1382+ data . properties . $referrer = refPage . route ;
1383+ } ;
1384+
1385+ if ( ! data . properties . hasOwnProperty ( '$referrer_title' ) ) {
1386+ data . properties . $referrer_title = refPage . title ;
1387+ } ;
1388+
1389+ } ;
13001390 if ( data . properties . $time && _ . isDate ( data . properties . $time ) ) {
13011391 data . time = data . properties . $time * 1 ;
13021392 delete data . properties . $time ;
13031393 } else {
13041394 data . time = ( new Date ( ) ) * 1 ;
1305- }
1395+ } ;
13061396
13071397 _ . parseSuperProperties ( data . properties ) ;
13081398
@@ -2155,12 +2245,11 @@ sa.autoTrackCustom = {
21552245 } ) ;
21562246
21572247 prop . $url_query = _ . setQuery ( para . query ) ;
2158-
2248+ _ . setPageRefData ( prop ) ;
21592249 if ( not_use_auto_track ) {
21602250 prop = _ . extend ( prop , not_use_auto_track ) ;
21612251 sa . track ( '$MPLaunch' , prop ) ;
21622252 } else if ( sa . para . autoTrack && sa . para . autoTrack . appLaunch ) {
2163-
21642253 sa . autoTrackCustom . trackCustom ( 'appLaunch' , prop , '$MPLaunch' ) ;
21652254 }
21662255 } ,
@@ -2197,6 +2286,7 @@ sa.autoTrackCustom = {
21972286
21982287 _ . setLatestChannel ( utms . pre2 ) ;
21992288 _ . setSfSource ( para , prop ) ;
2289+ _ . setPageRefData ( prop ) ;
22002290 sa . registerApp ( {
22012291 $latest_scene : prop . $scene
22022292 } ) ;
@@ -2214,7 +2304,8 @@ sa.autoTrackCustom = {
22142304 prop . $url_path = _ . getCurrentPath ( ) ;
22152305 if ( mpshow_time && ( current_time - mpshow_time > 0 ) && ( ( current_time - mpshow_time ) / 3600000 < 24 ) ) {
22162306 prop . event_duration = ( current_time - mpshow_time ) / 1000 ;
2217- }
2307+ } ;
2308+ _ . setPageRefData ( prop ) ;
22182309 if ( not_use_auto_track ) {
22192310 prop = _ . extend ( prop , not_use_auto_track ) ;
22202311 sa . track ( '$MPHide' , prop ) ;
@@ -2288,7 +2379,7 @@ sa.appLaunch = function(option, prop) {
22882379 } ) ;
22892380
22902381 obj . $url_query = _ . setQuery ( option . query ) ;
2291-
2382+ _ . setPageRefData ( prop ) ;
22922383 if ( _ . isObject ( prop ) ) {
22932384 obj = _ . extend ( obj , prop ) ;
22942385 }
@@ -2326,6 +2417,7 @@ sa.appShow = function(option, prop) {
23262417 $latest_scene : obj . $scene
23272418 } ) ;
23282419 obj . $url_query = _ . setQuery ( option . query ) ;
2420+ _ . setPageRefData ( obj ) ;
23292421 if ( _ . isObject ( prop ) ) {
23302422 obj = _ . extend ( obj , prop ) ;
23312423 }
@@ -2338,7 +2430,8 @@ sa.appHide = function(prop) {
23382430 obj . $url_path = _ . getCurrentPath ( ) ;
23392431 if ( mpshow_time && ( current_time - mpshow_time > 0 ) && ( ( current_time - mpshow_time ) / 3600000 < 24 ) ) {
23402432 obj . event_duration = ( current_time - mpshow_time ) / 1000 ;
2341- }
2433+ } ;
2434+ _ . setPageRefData ( obj ) ;
23422435 if ( _ . isObject ( prop ) ) {
23432436 obj = _ . extend ( obj , prop ) ;
23442437 }
@@ -2366,18 +2459,15 @@ sa.pageShow = function(prop) {
23662459 if ( title ) {
23672460 obj . $title = title ;
23682461 } ;
2369- obj . $referrer = sa_referrer ;
23702462 obj . $url_path = router ;
2371- sa . status . last_referrer = sa_referrer ;
23722463 obj . $url_query = currentPage . sensors_mp_url_query ? currentPage . sensors_mp_url_query : '' ;
23732464 obj = _ . extend ( obj , _ . getUtmFromPage ( ) ) ;
23742465 _ . setPageSfSource ( obj ) ;
2466+ _ . setPageRefData ( obj ) ;
23752467 if ( _ . isObject ( prop ) ) {
23762468 obj = _ . extend ( obj , prop ) ;
23772469 }
23782470 sa . track ( '$MPViewScreen' , obj ) ;
2379- sa_referrer = router ;
2380- sa . status . referrer = router ;
23812471}
23822472
23832473
0 commit comments