• About Us
  • Blog
  • Basket
  • Account
  • Sign In
  •  

Perl API

What's Covered

This tutorial illustrates how to return a match for a Device Id. It shows how to first get the Device Id from a match, then get a match for that Device Id and return the value of the IsMobile property. This can be useful to look at devices that have already been matched at a previous date.

Code and Explanation

Match for device id example of using 51Degrees device detection. The example shows how to:

  1. Set the various settings for 51Degrees detector

    my $filename = "51Degrees-LiteV3.2.dat";
    my $propertyList = "IsMobile"
    my $cacheSize = 10000;
    my $poolSize = 20;
    

  2. Instantiate the 51Degrees device detection provider with these properties

    my $provider = new FiftyOneDegrees::PatternV3::Provider(
    	$dataFile,
    	$properties,
    	$cacheSize,
    	$poolSize);
    

  3. Produce a match for a single device id

    my $match = $provider->getMatchForDeviceId($userAgent)
    

  4. Extract the value of the IsMobile property

    $match->getValue('IsMobile')
    

This example assumes you are running from the original subdirectory i.e. Device-Detection/perl/examples/ and the 51Degrees Perl module is installed.

Full Source File
use FiftyOneDegrees::PatternV3;
use feature qw/say/;

my $filename = "../../data/51Degrees-LiteV3.2.dat";
my $propertyList = "";
my $cacheSize = 10000;
my $poolSize = 20;

# User-Agent string of an iPhone mobile device.
my $mobileUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) ".
"AppleWebKit/537.51.2 (KHTML, like Gecko) 'Version/7.0 ".
"Mobile/11D167 Safari/9537.53";

# User-Agent string of Firefox Web browser version 41 on desktop.
my $desktopUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) ".
"Gecko/20100101 Firefox/41.0";

# User-Agent string of a MediaHub device.
my $mediaHubUserAgent = "Mozilla/5.0 (Linux; Android 4.4.2; X7 Quad Core ".
"Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 ".
"Chrome/30.0.0.0 Safari/537.36";


#Initialises the device detection provider with settings from the settings
#file. By default this will use the included Lite data file For more info
#see:
#<a href="https://51degrees.com/compare-data-options">compare data options
#</a>

my $provider = new FiftyOneDegrees::PatternV3::Provider(
    $filename,
    $propertyList,
    $cacheSize,
    $poolSize);


say "Starting Match With Device Id Example.";

# Fetches device id for mobile User-Agent.
my $match = $provider->getMatch($mobileUserAgent);
my $mobileDeviceId = $match->getDeviceId();

# Fetches device id for desktop User-Agent.
my $match = $provider->getMatch($desktopUserAgent);
my $desktopDeviceId = $match->getDeviceId();

# Fetches device id for MediaHub User-Agent.
my $match = $provider->getMatch($mediaHubUserAgent);
my $mediaHubDeviceId = $match->getDeviceId();

# Carries out a match with a mobile device id.
say "\nMobile Device Id: $mobileDeviceId";
my $match = $provider->getMatchForDeviceId($mobileDeviceId);
my $isMobile =  $match->getValue("IsMobile");
say "   IsMobile: $isMobile";

# Carries out a match with a desktop device id.
say "\nDesktop Device Id: $desktopDeviceId";
my $match = $provider->getMatchForDeviceId($desktopDeviceId);
my $isMobile =  $match->getValue("IsMobile");
say "   IsMobile: $isMobile";

# Carries out a match with a MediaHub device id.
say "\nMobile Device Id: $mediaHubDeviceId";
my $match = $provider->getMatchForDeviceId($mediaHubDeviceId);
my $isMobile =  $match->getValue("IsMobile");
say "   IsMobile: $isMobile";

Full Source File

Summary

In this tutorial you have seen how to use the detector to retrieve the IsMobile property for a pre-defined Device ID string. The example can easily be modified to retrieve the value of any other property. Premium and Enterprise data files provide considerably more properties such as IsCrawler, PriceBand, HardwareVendor and ScreenInchesWidth. For a full list of properties and the data files they exist in please see the Property Dictionary.