Developer Zone

Basic SDK Control

Once the required configuration is initialized (explained in the SDK Configuration page) and set according to the needs of your application, you may inform the SDK that the application has started. This will allow you to use further methods which expect the application to be running such as :cs:func:`TBApp.KeyCheck` and :cs:func:`TBApp.MessageCheck`.

Caching and Synchronizing

The Trackerbird SDK was designed to minimize network traffic and load on the end user’s machine. In order to do this, all the collected architecture info and runtime tracking data is cached locally and then compressed and sent to the Trackerbird server in batches, at various intervals whenever appropriate. Log data is usually sent at least once for every runtime session (during :cs:func:`TBApp.Stop`), however this may vary based on the type of application and usage activity.

All data is sent over HTTP (port 80) using a proprietary Trackerbird protocol. Using HTTP port 80 is crucial for callhome requests not to be blocked by gateway firewalls, especially when running in corporate networks which are sometimes configured to block HTTPS and other unknown traffic. Only a minor portion of traffic (containing license keys) is encrypted by the protocol. Log data is stored in plaintext and transferred unencrypted. This was designed purposely for the sake of transparency so that security-conscious users can freely sniff whatever is being sent out of their machine so they can confirm that no user-identifiable information is being collected or transmitted.

Forced Synchronization

Under normal conditions, you do not need to instruct the Trackerbird SDK when to synchronize with the cloud server, since this happens automatically at various intervals, and is triggered by your interaction with the API. In a typical runtime session, the SDK will always attempt to synchronize with the server at least once whenever your application calls :cs:func:`TBApp.Stop`.

In order to cater for custom requirements, the API also provides you with the option to forcefully request the SDK to sync all cached data. This is done by calling the :cs:func:`TBApp.Sync` method. In the case where your application runs as a background service or as a webserver where :cs:func:`TBApp.Stop` is rarely called due to the always-on nature of the application, you may opt to use :cs:func:`TBApp.StartAutoSync` and :cs:func:`TBApp.StopAutoSync` which launch a background process that will perform a sync on a regular schedule.