Introduction
These pages show you how to set up and use the 51Degrees device detection API. For more information on how device detection works and can benefit you, please visit our Device Detection Page . If you’re using our cloud based device detection, you should refer to the Cloud API Documentation pages . All source code, and the free Lite data, is licensed under the Mozilla Public License version 2 .
Get Going With Our Tutorials
-
Specify name of the data file and properties the dataset should be
initialised with.
const char* fileName = argv[1]; const char* properties = "IsMobile";
-
Instantiate the 51Degrees provider from the specified data file with
the required properties, number of worksets in the pool and cache of the
specific size.
fiftyoneDegreesInitProviderWithPropertyString( fileName, &provider, properties, 4, 1000);
-
Retrieve a workset from the pool and use it for a single match.
fiftyoneDegreesWorkset *ws = NULL; ws = fiftyoneDegreesProviderWorksetGet(&provider);
-
Match a single HTTP User-Agent string to retrieve the values
associated with the User-Agent for the selected properties.
fiftyoneDegreesMatch(ws, userAgent);
-
Extract the value of the IsMobile property.
requiredPropertyIndex = fiftyoneDegreesGetRequiredPropertyIndex(ws->dataSet,"IsMobile"); fiftyoneDegreesSetValues(ws, requiredPropertyIndex); valueName = fiftyoneDegreesGetString(ws->dataSet, ws->values[0]->nameOffset); isMobile = &(valueName->firstByte);
-
Release the workset back into the pool of worksets to be reused in one
of the next matches.
fiftyoneDegreesWorksetRelease(ws);
-
Finally release the memory taken by the provider.
fiftyoneDegreesProviderFree(&provider);
This example assumes you have compiled with 51Degrees.c and city.c. This will happen automatically if you are compiling as part of the Visual Studio solution. Additionally, when running the program, the location of a 51Degrees data file must be passed as a command line argument if you wish to use Premium or Enterprise data files.
The size of the worksets pool parameter should be set to the maximum (expected) number of concurrent detections to avoid delays related to waiting for free worksets. Workset pool is thread safe. Initially the number of created worksets in the pool is zero. When a workset is retrieved from the pool a new workset is created if no worksets are currently free and the number of worksets already created is less than the maximum size of the workset pool.
For more examples see the tutorial pages.
Implementation
How Does Device Detection Work
51Degrees device detection implementation does not rely on regular expressions, instead our algorithm looks at character positions in the HTTP User-Agent string and picks a set of signatures that represents the closest match. Then a set of four profiles (one for each of the following components: hardware, software, browser and crawler) is derived from those signatures. Properties and the corresponding values are then derived from those profiles. For more information and examples please see the How Device Detection Works page.
Premium and Enterprise data files can benefit from automatic update capabilities. If you're a Lite user you can contact us for a free evaluation to experience the benefits of automatic updates and check out the extra properties and features that come with Premium and Enterprise data files.
The latest Premium and Enterprise data files can be obtained from the downloads area.
Prerequisites and Compatibility
To install the 51Degrees C API you should have Visual Studio or GCC. The entire project has been built and tested in Visual Studio 2013. The examples have been built and confirmed to work for Gcc 4.8.4+