24
24
import urllib2
25
25
import urllib
26
26
27
- SDK_VERSION = '1.5.3 '
27
+ SDK_VERSION = '1.7.0 '
28
28
29
29
try :
30
30
isinstance ("" , basestring )
@@ -90,7 +90,7 @@ def default(self, obj):
90
90
return obj .strftime (fmt )
91
91
return json .JSONEncoder .default (self , obj )
92
92
93
- def __init__ (self , consumer = None , project_name = None , enable_time_free = False ):
93
+ def __init__ (self , consumer = None , project_name = None , enable_time_free = False ):
94
94
"""
95
95
初始化一个 SensorsAnalytics 的实例。可以选择使用默认的 DefaultConsumer,也可以选择其它的 Consumer 实现。
96
96
@@ -135,7 +135,7 @@ def clear_super_properties(self):
135
135
'$lib_version' : SDK_VERSION ,
136
136
}
137
137
138
- def track (self , distinct_id , event_name , properties = None ):
138
+ def track (self , distinct_id , event_name , properties = None , is_login_id = False ):
139
139
"""
140
140
跟踪一个用户的行为。
141
141
@@ -146,7 +146,7 @@ def track(self, distinct_id, event_name, properties=None):
146
146
all_properties = self ._super_properties .copy ()
147
147
if properties :
148
148
all_properties .update (properties )
149
- self ._track_event ('track' , event_name , distinct_id , None , all_properties )
149
+ self ._track_event ('track' , event_name , distinct_id , None , all_properties , is_login_id )
150
150
151
151
def track_signup (self , distinct_id , original_id , properties = None ):
152
152
"""
@@ -167,7 +167,7 @@ def track_signup(self, distinct_id, original_id, properties=None):
167
167
if properties :
168
168
all_properties .update (properties )
169
169
170
- self ._track_event ('track_signup' , '$SignUp' , distinct_id , original_id , all_properties )
170
+ self ._track_event ('track_signup' , '$SignUp' , distinct_id , original_id , all_properties , False )
171
171
172
172
@staticmethod
173
173
def _normalize_data (data ):
@@ -284,43 +284,43 @@ def _extract_user_time(properties):
284
284
return t
285
285
return None
286
286
287
- def profile_set (self , distinct_id , profiles ):
287
+ def profile_set (self , distinct_id , profiles , is_login_id = False ):
288
288
"""
289
289
直接设置一个用户的 Profile,如果已存在则覆盖
290
290
291
291
:param distinct_id: 用户的唯一标识
292
292
:param profiles: 用户属性
293
293
"""
294
- return self ._track_event ('profile_set' , None , distinct_id , None , profiles )
294
+ return self ._track_event ('profile_set' , None , distinct_id , None , profiles , is_login_id )
295
295
296
- def profile_set_once (self , distinct_id , profiles ):
296
+ def profile_set_once (self , distinct_id , profiles , is_login_id = False ):
297
297
"""
298
298
直接设置一个用户的 Profile,如果某个 Profile 已存在则不设置。
299
299
300
300
:param distinct_id: 用户的唯一标识
301
301
:param profiles: 用户属性
302
302
"""
303
- return self ._track_event ('profile_set_once' , None , distinct_id , None , profiles )
303
+ return self ._track_event ('profile_set_once' , None , distinct_id , None , profiles , is_login_id )
304
304
305
- def profile_increment (self , distinct_id , profiles ):
305
+ def profile_increment (self , distinct_id , profiles , is_login_id = False ):
306
306
"""
307
307
增减/减少一个用户的某一个或者多个数值类型的 Profile。
308
308
309
309
:param distinct_id: 用户的唯一标识
310
310
:param profiles: 用户属性
311
311
"""
312
- return self ._track_event ('profile_increment' , None , distinct_id , None , profiles )
312
+ return self ._track_event ('profile_increment' , None , distinct_id , None , profiles , is_login_id )
313
313
314
- def profile_append (self , distinct_id , profiles ):
314
+ def profile_append (self , distinct_id , profiles , is_login_id = False ):
315
315
"""
316
316
追加一个用户的某一个或者多个集合类型的 Profile。
317
317
318
318
:param distinct_id: 用户的唯一标识
319
319
:param profiles: 用户属性
320
320
"""
321
- return self ._track_event ('profile_append' , None , distinct_id , None , profiles )
321
+ return self ._track_event ('profile_append' , None , distinct_id , None , profiles , is_login_id )
322
322
323
- def profile_unset (self , distinct_id , profile_keys ):
323
+ def profile_unset (self , distinct_id , profile_keys , is_login_id = False ):
324
324
"""
325
325
删除一个用户的一个或者多个 Profile。
326
326
@@ -329,17 +329,17 @@ def profile_unset(self, distinct_id, profile_keys):
329
329
"""
330
330
if isinstance (profile_keys , list ):
331
331
profile_keys = dict ((key , True ) for key in profile_keys )
332
- return self ._track_event ('profile_unset' , None , distinct_id , None , profile_keys )
332
+ return self ._track_event ('profile_unset' , None , distinct_id , None , profile_keys , is_login_id )
333
333
334
- def profile_delete (self , distinct_id ):
334
+ def profile_delete (self , distinct_id , is_login_id = False ):
335
335
"""
336
336
删除整个用户的信息。
337
337
338
338
:param distinct_id: 用户的唯一标识
339
339
"""
340
- return self ._track_event ('profile_delete' , None , distinct_id , None , {})
340
+ return self ._track_event ('profile_delete' , None , distinct_id , None , {}, is_login_id )
341
341
342
- def _track_event (self , event_type , event_name , distinct_id , original_id , properties ):
342
+ def _track_event (self , event_type , event_name , distinct_id , original_id , properties , is_login_id ):
343
343
event_time = self ._extract_user_time (properties ) or self ._now ()
344
344
345
345
data = {
@@ -361,6 +361,9 @@ def _track_event(self, event_type, event_name, distinct_id, original_id, propert
361
361
if self ._enable_time_free :
362
362
data ["time_free" ] = True
363
363
364
+ if is_login_id :
365
+ properties ["$is_login_id" ] = True
366
+
364
367
data = self ._normalize_data (data )
365
368
self ._consumer .send (self ._json_dumps (data ))
366
369
0 commit comments