Subject
You may have additional information about your application's environment, current user and so on, which you want to send to Snowplow with each event.
The Subject class has a set of Set...()
 methods to attach extra data relating to the user to all tracked events:
SetUserId
SetScreenResolution
SetViewport
SetColorDepth
SetTimezone
SetLanguage
SetIpAddress
SetUseragent
SetNetworkUserId
SetDomainUserId
Here are some examples:
Subject s1 = new Subject();
s1.SetUserId("Kevin Gleason");
s1.SetLanguage("en-gb");
s1.SetScreenResolution(1920, 1080);
After that, you can add your Subject to your Tracker like so:
Tracker t1 = new Tracker(..., s1)
// OR
t1.SetSubject(s1);
Set user ID with SetUserId
​
You can set the user ID to any string:
s1.SetUserId( "{{USER ID}}" )
Example:
s1.SetUserId("alexd")
Set screen resolution with SetScreenResolution
​
If your C# code has access to the device's screen resolution, then you can pass this in to Snowplow too:
t1.SetScreenResolution( {{WIDTH}}, {{HEIGHT}} )
Both numbers should be positive integers; note the order is width followed by height. Example:
t1.SetScreenResolution(1366, 768)
Set viewport dimensions with SetViewport
​
If your C# code has access to the viewport dimensions, then you can pass this in to Snowplow too:
s.SetViewport( {{WIDTH}}, {{HEIGHT}} )
Both numbers should be positive integers; note the order is width followed by height. Example:
s.SetViewport(300, 200)
Set color depth with SetColorDepth
​
If your C# code has access to the bit depth of the device's color palette for displaying images, then you can pass this in to Snowplow too:
s.SetColorDepth( {{BITS PER PIXEL}} )
The number should be a positive integer, in bits per pixel. Example:
s.SetColorDepth(32)
Set timezone with SetTimezone
​
This method lets you pass a user's timezone in to Snowplow:
s.SetTimezone( {{TIMEZONE}} )
The timezone should be a string:
s.SetTimezone("Europe/London")
Set the language with SetLanguage
​
This method lets you pass a user's language in to Snowplow:
s.SetLanguage( {{LANGUAGE}} )
The language should be a string:
s.SetLanguage('en')
SetIpAddress
​
This method lets you pass a user's IP Address in to Snowplow:
SetIpAddress( {{IP ADDRESS}} )
The IP address should be a string:
subj.SetIpAddress("127.0.0.1");
SetUseragent
​
This method lets you pass a useragent in to Snowplow:
SetUseragent( {{USERAGENT}} )
The useragent should be a string:
subj.SetUseragent("Agent Smith");
SetNetworkUserId
​
This method lets you pass a Network User ID in to Snowplow:
SetNetworkUserId( {{NUID}} )
The network user id should be a string:
subj.SetNetworkUserId("network-id");
SetDomainUserId
​
This method lets you pass a Domain User ID in to Snowplow:
SetDomainUserId( {{DUID}} )
The domain user id should be a string:
subj.SetDomainUserId("domain-id");