Skip to content

Commit 867a220

Browse files
authored
Merge pull request #49 from mixpanel/gdpr-support-latest
Gdpr support latest
2 parents 894c6eb + c8a1092 commit 867a220

26 files changed

+710
-57
lines changed

.gitignore

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ MixpanelSDK.bundle.meta
3636
*.userprefs
3737
*.a
3838
*.apk
39-
*.dll
4039
*.ipa
4140
*.lib
4241
*.pyc
@@ -46,6 +45,9 @@ Android.meta
4645
armeabi-v7a.meta
4746
Assets.meta
4847
deployments/combined
48+
deployments/UnityMixpanel/Library
49+
deployments/UnityMixpanel/ProjectSettings
50+
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX.meta
4951
deployments/UnityMixpanel/Assets/Mixpanel/detail/Mixpanel.cs.meta
5052
deployments/UnityMixpanel/Assets/Mixpanel/detail/MixpanelSDKPINVOKE.cs.meta
5153
deployments/UnityMixpanel/Assets/Mixpanel/detail/Value.cs.meta
@@ -84,21 +86,3 @@ native/tests/.idea
8486
post_process.py.meta
8587
Sample.unity.meta
8688
x86.meta
87-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/AssetCatalog.cs.meta
88-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/JsonParser.cs.meta
89-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX.meta
90-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBXProject.cs.meta
91-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/jectData.cs.meta
92-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PlistParser.cs.meta
93-
deployments/UnityMixpanel/Assets/Mixpanel/detail/SWIGTYPE_p_Value.cs.meta
94-
deployments/UnityMixpanel/Assets/Mixpanel/detail/PE_p_std__wstring.cs.meta
95-
deployments/UnityMixpanel/ProjectSettings/*.asset
96-
deployments/UnityMixpanel/Assets/Mixpanel/detail/SWIGTYPE_p_std__wstring.cs.meta
97-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Elements.cs.meta
98-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Lexer.cs.meta
99-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Objects.cs.meta
100-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Parser.cs.meta
101-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Sections.cs.meta
102-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Serializer.cs.meta
103-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Utils.cs.meta
104-
deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBXProjectData.cs.meta

deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Elements.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Lexer.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Objects.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Parser.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Sections.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Serializer.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBX/Utils.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBXProject.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/UnityMixpanel/Assets/Mixpanel/Editor/Mixpanel/PBXProjectData.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/UnityMixpanel/Assets/Mixpanel/Mixpanel.cs

Lines changed: 83 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,66 @@ public static bool StartTimedEventOnce(string eventName)
200200
return false;
201201
}
202202

203+
/// <summary>
204+
/// Opt out tracking.
205+
/// </summary>
206+
public static void OptOutTracking()
207+
{
208+
#if !DISABLE_MIXPANEL
209+
if (tracking_enabled)
210+
instance.opt_out_tracking();
211+
#endif
212+
}
213+
214+
/// <summary>
215+
/// Opt in tracking.
216+
/// </summary>
217+
public static void OptInTracking()
218+
{
219+
#if !DISABLE_MIXPANEL
220+
if (tracking_enabled)
221+
instance.opt_in_tracking("", new Value());
222+
#endif
223+
}
224+
225+
/// <summary>
226+
/// Opt in tracking.
227+
/// </summary>
228+
/// <param name="distinct_id">the distinct id for events. Behind the scenes,
229+
/// <code>Identify</code> will be called by using this distinct id.</param>
230+
public static void OptInTracking(string distinct_id)
231+
{
232+
#if !DISABLE_MIXPANEL
233+
if (tracking_enabled)
234+
instance.opt_in_tracking(distinct_id, new Value());
235+
#endif
236+
}
237+
238+
/// <summary>
239+
/// Opt in tracking.
240+
/// </summary>
241+
/// <param name="distinct_id">the distinct id for events. Behind the scenes,
242+
/// <code>Identify</code> will be called by using this distinct id.</param>
243+
/// <param name="properties">A JSONObject containing the key value pairs of the properties
244+
/// to include in $opt_in event. Pass null if no extra properties exist.
245+
/// </param>
246+
public static void OptInTracking(string distinct_id, Value properties)
247+
{
248+
#if !DISABLE_MIXPANEL
249+
if (tracking_enabled)
250+
instance.opt_in_tracking(distinct_id, properties);
251+
#endif
252+
}
253+
254+
/// <summary>
255+
/// Return true if the current device has opted out tracking, false if the current device has opted in tracking.
256+
/// </summary>
257+
public static bool hasOptedOut() {
258+
if (tracking_enabled)
259+
return instance.has_opted_out();
260+
return false;
261+
}
262+
203263
/// <summary>
204264
/// Tracks an event.
205265
/// </summary>
@@ -302,6 +362,13 @@ public void Increment(string property, Value by)
302362
#endif
303363
}
304364

365+
private void SetAutomaticPeopleProperties()
366+
{
367+
#if UNITY_ANDROID && !UNITY_EDITOR
368+
mixpanel.people.set("$android_app_version_string", (detail.Value)platform.MixpanelUnityPlatform.get_android_version_name());
369+
mixpanel.people.set("$android_app_build_number", (detail.Value)platform.MixpanelUnityPlatform.get_android_version_code());
370+
#endif
371+
}
305372

306373
/// <summary>
307374
/// Set a collection of properties on the identified user all at once.
@@ -314,7 +381,10 @@ public void Set(Value properties)
314381
{
315382
#if !DISABLE_MIXPANEL
316383
if (tracking_enabled)
384+
{
317385
mixpanel.people.set_properties(properties);
386+
SetAutomaticPeopleProperties();
387+
}
318388
#endif
319389
}
320390

@@ -327,7 +397,10 @@ public void Set(string property, Value to)
327397
{
328398
#if !DISABLE_MIXPANEL
329399
if (tracking_enabled)
400+
{
330401
mixpanel.people.set(property, (detail.Value)to);
402+
SetAutomaticPeopleProperties();
403+
}
331404
#endif
332405
}
333406

@@ -340,7 +413,10 @@ public void SetOnce(string property, Value to)
340413
{
341414
#if !DISABLE_MIXPANEL
342415
if (tracking_enabled)
416+
{
343417
mixpanel.people.set_once(property, to);
418+
SetAutomaticPeopleProperties();
419+
}
344420
#endif
345421
}
346422

@@ -352,7 +428,10 @@ public void SetOnce(Value properties)
352428
{
353429
#if !DISABLE_MIXPANEL
354430
if (tracking_enabled)
431+
{
355432
mixpanel.people.set_once_properties(properties);
433+
SetAutomaticPeopleProperties();
434+
}
356435
#endif
357436
}
358437

@@ -598,7 +677,8 @@ void Awake()
598677
#endif
599678
distinct_id:mixpanel.platform.MixpanelUnityPlatform.get_distinct_id(),
600679
storage_directory:mixpanel.platform.MixpanelUnityPlatform.get_storage_directory(),
601-
enable_log_queue:true
680+
enable_log_queue:true,
681+
opt_out:false
602682
);
603683
mp_interface.set_minimum_log_level(minLogLevel);
604684
mp_interface.set_maximum_queue_size((uint)(maxQueueSizeInMB * 1024 * 1024));
@@ -611,9 +691,6 @@ void Awake()
611691
#if UNITY_ANDROID && !UNITY_EDITOR
612692
Register("$app_build_number", platform.MixpanelUnityPlatform.get_android_version_code());
613693
Register("$app_version_string", platform.MixpanelUnityPlatform.get_android_version_name());
614-
615-
people.Set("$android_app_version_string", platform.MixpanelUnityPlatform.get_android_version_name());
616-
people.Set("$android_app_build_number", platform.MixpanelUnityPlatform.get_android_version_code());
617694
#endif
618695

619696
#if UNITY_IOS
@@ -646,7 +723,7 @@ void Awake()
646723
}
647724

648725
mp_interface.set_flush_interval((uint)flushInterval);
649-
726+
650727
TrackIntegrationEvent();
651728
}
652729
}
@@ -659,13 +736,12 @@ void OnDestroy()
659736
}
660737
}
661738

739+
detail.Mixpanel.LogEntry le = new mixpanel.detail.Mixpanel.LogEntry();
662740
NetworkReachability reachability = NetworkReachability.ReachableViaLocalAreaNetwork;
663741
void Update()
664742
{
665743
if (tracking_enabled)
666744
{
667-
detail.Mixpanel.LogEntry le = new mixpanel.detail.Mixpanel.LogEntry();
668-
669745
while (mp_interface.get_next_log_entry(le))
670746
{
671747
string msg = string.Format("Mixpanel[{0}]: {1}", le.level, le.message);

deployments/UnityMixpanel/Assets/Mixpanel/Sample/MixpanelExample.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,32 @@ void Update () {
2727
void OnGUI() {
2828
GUI.skin = this.skin;
2929

30-
GUILayout.BeginArea(new Rect(Screen.width * 0.3f, Screen.height * 0.45f, Screen.width * 0.4f, Screen.height * 0.5f));
30+
GUILayout.BeginArea(new Rect(Screen.width * 0.3f, Screen.height * 0.35f, Screen.width * 0.4f, Screen.height * 2.5f));
3131

32-
if (GUILayout.Button("Track")) // a simple tracking call
32+
if (GUILayout.Button("Track"))
33+
{
34+
// a simple tracking call
3335
Mixpanel.Track("The Button Was Clicked");
36+
}
3437

3538
if (GUILayout.Button("Engage")) // an engage call
39+
{
3640
Mixpanel.people.Increment("clicks", 1);
41+
}
42+
43+
if (GUILayout.Button("Opt Out Tracking")) // an engage call
44+
{
45+
Mixpanel.OptOutTracking();
46+
}
47+
48+
if (GUILayout.Button("Opt In Tracking")) // an engage call
49+
{
50+
Mixpanel.OptInTracking();
51+
// var args1 = new Value();
52+
// args1["test"] = 100;
53+
// args1["me"] = 101;
54+
// Mixpanel.OptInTracking("newDisctinctId2", args1);
55+
}
3756

3857
GUILayout.EndArea();
3958
}

0 commit comments

Comments
 (0)