\Mobi_Mtld_DA_Device_DeviceApi

The DeviceAtlas device detection API provides a way to detect devices based on the HTTP headers. Using the headers, the API returns device properties such as screen width, screen height, is mobile, vendor, model etc. If you want to use the DeviceAtlas API for web applications then it is recommended to use DeviceApiWeb instead of this library.<br/> The DeviceApiWeb is preferred when you want to get the properties from a real-time detection on user's device in a web application.

The DeviceApi is preferred when you want to get the properties from an off-line user-agent list or header set.

To get the most accurate results: 1- Pass the whole HTTP headers. 2- Use the DeviceAtlas client-side-component and pass the result.

Valid inputs are:
$deviceApi->getProperties((array) headers, string clientSide)
$deviceApi->getProperties((array) headers)
$deviceApi->getProperties(string userAgent, string clientSide)
$deviceApi->getProperties(string userAgent)

Example usage:

$headers = array(
    "user-agent"      => "...",
    "accept-language" => "...",
    // add any other available header...
);

// require_once "/PATH/TO/Api/Device/DeviceApi.php";
$deviceApi = new Mobi_Mtld_DA_Device_DeviceApi();

try {
    $deviceApi->loadDataFromFile("/path/to/datafile.json");

    // get all properties from the headers
    $props = $deviceApi->getProperties($headers);

    // .... use the properties ....
    if ($props->contains("isMobilePhone", true)) {
        // it is a mobile phone
    }

    // check if property exists then get the property value
    $displayWidth = $props->containsKey("displayWidth")?
        $props->get("displayWidth")->asInteger(): 100;

    // the most easy way to get a property value
    $deviceModel = $props->model; // null or string
} catch (...

Summary

Methods
Properties
Constants
__construct()
setConfig()
loadDataFromFile()
loadDataFromString()
getPropertyNames()
getApiVersion()
getDataVersion()
getDataCreationTimestamp()
getDataRevision()
getProperties()
getPropertiesFromUa()
getLookupSource()
No public properties found
API_VERSION
MIN_PHP_VERSION
LOOKUP_SOURCE_TREE
LOOKUP_SOURCE_OPTIMIZED_TREE
LOOKUP_SOURCE_CACHE
No protected methods found
$LANGUAGE_HEADER
$config
$tree
N/A
normaliseKeys()
getPropertyTypeAsByte()
addLanguageProperties()
$PROPERTY_NAME_LANGUAGE
$PROPERTY_NAME_LANGUAGE_LOCALE
N/A

Constants

API_VERSION

API_VERSION = 'DEVICEATLAS_API_VERSION'

Api version.

MIN_PHP_VERSION

MIN_PHP_VERSION = '5.2.3'

Minimum PHP version required for this API to run. *

LOOKUP_SOURCE_TREE

LOOKUP_SOURCE_TREE = 'tree'

LOOKUP_SOURCE_OPTIMIZED_TREE

LOOKUP_SOURCE_OPTIMIZED_TREE = 'optimized tree'

LOOKUP_SOURCE_CACHE

LOOKUP_SOURCE_CACHE = 'cache'

Properties

$LANGUAGE_HEADER

$LANGUAGE_HEADER : 

Type

$config

$config : 

Type

$tree

$tree : 

Type

$PROPERTY_NAME_LANGUAGE

$PROPERTY_NAME_LANGUAGE : 

Type

$PROPERTY_NAME_LANGUAGE_LOCALE

$PROPERTY_NAME_LANGUAGE_LOCALE : 

Type

Methods

__construct()

__construct(\Mobi_Mtld_DA_Device_Config  $config = null) 

Constructs a DeviceApi instance with custom configs.

Parameters

\Mobi_Mtld_DA_Device_Config $config

setConfig()

setConfig(\Mobi_Mtld_DA_Device_Config  $config = null) 

Set new config settings via a new Config object and drop current cache.

Parameters

\Mobi_Mtld_DA_Device_Config $config

loadDataFromFile()

loadDataFromFile(  $jsonDataFilePath) 

Load the DeviceAtlas device detection data into the API from a JSON file.

The JSON data file is provided by the DeviceAtlas web-site.

Parameters

$jsonDataFilePath

Throws

\IOException
\Mobi_Mtld_DA_Exception_DataFileException
\Mobi_Mtld_DA_Exception_DataReadException
\Mobi_Mtld_DA_Exception_JsonException

loadDataFromString()

loadDataFromString(  $data) 

Load the DeviceAtlas device detection data into the API from a string.

The JSON data file is provided by the DeviceAtlas web-site.

Parameters

$data

Throws

\Mobi_Mtld_DA_Exception_DataFileException
\Mobi_Mtld_DA_Exception_JsonException

getPropertyNames()

getPropertyNames() : array

Get a set of available device property names.

Returns

array —

A set of available device property names as PropertyName objects. A PropertyName object holds a property-name and it's data-type

getApiVersion()

getApiVersion() : string

Get DeviceApi version.

Returns

string —

DeviceApi version

getDataVersion()

getDataVersion() : string

Get the device data (JSON file) version.

Returns

string —

The data version

getDataCreationTimestamp()

getDataCreationTimestamp() : string

Get the device data creation (JSON file) timestamp.

Returns

string —

The string data creation timestamp

getDataRevision()

getDataRevision() : integer

Get the device data generation revision.

Returns

integer —

Data generation revision

getProperties()

getProperties(  $headers = null,   $clientSideProperties = null) : \Mobi_Mtld_DA_Properties

Parameters

$headers
$clientSideProperties

Throws

\Mobi_Mtld_DA_Exception_ClientPropertiesException
\Mobi_Mtld_DA_Exception_ClientPropertiesException

Returns

\Mobi_Mtld_DA_Properties

A set of properties (Property objects) wrapped in a Properties object

getPropertiesFromUa()

getPropertiesFromUa(  $userAgent,   $clientSideProperties = null) : \Mobi_Mtld_DA_Properties

Get the properties for a User-Agent merged with the client-side properties (when provided by the DeviceAtlas client side component).

The DeviceAtlas client-side component (JavaScript library) collects the client-side properties and puts them in a cookie. The contents of this cookie must be passed to this method. The client properties will over-ride any properties discovered from the main JSON data file.

Parameters

$userAgent
$clientSideProperties

Throws

\Mobi_Mtld_DA_Exception_ClientPropertiesException

Returns

\Mobi_Mtld_DA_Properties

A set of properties (Property objects) wrapped in a Properties object

getLookupSource()

getLookupSource() : string

Get the source properties fetch source to be used for debugging.

Returns

string —

The value of one this constants: LOOKUP_SOURCE_TREE or LOOKUP_SOURCE_OPTIMIZED_TREE or LOOKUP_SOURCE_CACHE

normaliseKeys()

normaliseKeys(  $keyVals) 

Normalise the HTTP header keys, replaces "_" with "-" and removes any HTTP_ prefix

Parameters

$keyVals

getPropertyTypeAsByte()

getPropertyTypeAsByte(  $typeChar) 

Convert tree property types to interface data types

Parameters

$typeChar

addLanguageProperties()

addLanguageProperties(  $acceptLanguage) 

Get the Accept-Language header and add language properties to the property list

Parameters

$acceptLanguage