Device Detection adalah fitur yang memungkinkan aplikasi mendeteksi dan merespons secara berbeda berdasarkan perangkat yang digunakan oleh pengguna. NexaController menyediakan berbagai method untuk mendeteksi jenis perangkat, browser, dan platform, sehingga Anda dapat menyesuaikan pengalaman pengguna sesuai dengan karakteristik perangkat mereka.
NexaController menggunakan class NexaAgent untuk mendeteksi dan menganalisis user agent. Anda dapat
mengakses instance NexaAgent dengan method getAgent()
:
// Mendapatkan instance NexaAgent
$agent = $this->getAgent();
// Menggunakan NexaAgent untuk mendapatkan informasi perangkat
$browser = $agent->getBrowser();
$platform = $agent->getPlatform();
$device = $agent->getDevice();
NexaController menyediakan beberapa method untuk mendeteksi jenis perangkat:
// Memeriksa apakah perangkat adalah mobile
$isMobile = $this->isMobile();
// Memeriksa apakah perangkat adalah tablet
$isTablet = $this->isTablet();
// Memeriksa apakah perangkat adalah desktop
$isDesktop = $this->isDesktop();
// Memeriksa apakah request berasal dari bot
$isBot = $this->isBot();
// Contoh penggunaan dalam controller
public function index(): void
{
if ($this->isMobile()) {
// Render tampilan mobile
$this->render('mobile/index');
} elseif ($this->isTablet()) {
// Render tampilan tablet
$this->render('tablet/index');
} else {
// Render tampilan desktop
$this->render('desktop/index');
}
}
NexaController menyediakan method autoDetectDeviceType()
untuk otomatis mendeteksi
jenis perangkat dan mengatur device type yang sesuai:
// Auto detect device type
$this->autoDetectDeviceType();
// Contoh penggunaan dalam controller
public function index(): void
{
// Otomatis mendeteksi jenis perangkat dan mengatur device type
$this->autoDetectDeviceType();
// Render template (akan menggunakan template sesuai device type)
$this->render('index');
}
Method ini akan otomatis mengatur device type menjadi 'mobile', 'tablet', atau 'desktop' berdasarkan hasil deteksi. Kemudian, saat merender template, NexaController akan mencari template yang sesuai dengan device type tersebut.
Anda juga dapat mengatur device type secara manual dengan method setDeviceType()
:
// Mengatur device type secara manual
$this->setDeviceType('mobile');
// Contoh penggunaan dalam controller
public function index(): void
{
// Mengatur device type berdasarkan parameter
$deviceType = $this->getParam('device', 'desktop');
$this->setDeviceType($deviceType);
// Render template (akan menggunakan template sesuai device type)
$this->render('index');
}
Anda dapat mendapatkan device type saat ini dengan method getDeviceType()
:
// Mendapatkan device type saat ini
$deviceType = $this->getDeviceType();
// Contoh penggunaan dalam controller
public function index(): void
{
// Auto detect device type
$this->autoDetectDeviceType();
// Mendapatkan device type hasil deteksi
$deviceType = $this->getDeviceType();
// Assign device type ke template
$this->assignVar('device_type', $deviceType);
// Render template
$this->render('index');
}
NexaController menyediakan beberapa method untuk mendapatkan informasi browser dan platform:
// Mendapatkan informasi browser
$browserInfo = $this->getBrowserInfo();
// Mendapatkan informasi browser (detail)
$browser = $this->getBrowser();
// Mendapatkan informasi platform
$platform = $this->getPlatform();
// Mendapatkan informasi perangkat
$device = $this->getDevice();
// Mendapatkan IP client
$ip = $this->getRealIP();
// Mendapatkan informasi IP
$ipInfo = $this->getIPInfo();
// Contoh penggunaan dalam controller
public function deviceInfo(): void
{
// Mendapatkan informasi perangkat
$browserInfo = $this->getBrowserInfo();
$platform = $this->getPlatform();
$device = $this->getDevice();
$ip = $this->getRealIP();
// Assign informasi ke template
$this->assignVars([
'browser_info' => $browserInfo,
'platform' => $platform,
'device' => $device,
'ip' => $ip
]);
// Render template
$this->render('device_info');
}
Anda dapat mendapatkan informasi tentang kemampuan perangkat dengan method getDeviceCapabilities()
:
// Mendapatkan kemampuan perangkat
$capabilities = $this->getDeviceCapabilities();
// Contoh penggunaan dalam controller
public function features(): void
{
// Mendapatkan kemampuan perangkat
$capabilities = $this->getDeviceCapabilities();
// Assign kemampuan ke template
$this->assignVar('capabilities', $capabilities);
// Render template
$this->render('features');
}
Anda dapat mendapatkan informasi keamanan dengan method getSecurityInfo()
:
// Mendapatkan informasi keamanan
$securityInfo = $this->getSecurityInfo();
// Contoh penggunaan dalam controller
public function security(): void
{
// Mendapatkan informasi keamanan
$securityInfo = $this->getSecurityInfo();
// Assign informasi ke template
$this->assignVar('security_info', $securityInfo);
// Render template
$this->render('security');
}
Untuk mendapatkan analisis lengkap tentang perangkat, browser, platform, dan lainnya, gunakan
method getFullAnalysis()
:
// Mendapatkan analisis lengkap
$analysis = $this->getFullAnalysis();
// Contoh penggunaan dalam controller
public function analysis(): void
{
// Mendapatkan analisis lengkap
$analysis = $this->getFullAnalysis();
// Assign analisis ke template
$this->assignVar('analysis', $analysis);
// Render template
$this->render('analysis');
}
Anda dapat menetapkan data agent ke template dengan method assignAgentData()
:
// Menetapkan data agent ke template
$this->assignAgentData();
// Menetapkan data agent ke template dengan prefix kustom
$this->assignAgentData('device_');
// Menetapkan data agent ke template dengan analisis lengkap
$this->assignAgentData('agent_', true);
// Contoh penggunaan dalam controller
public function deviceInfo(): void
{
// Menetapkan data agent ke template
$this->assignAgentData('device_');
// Render template
$this->render('device_info');
}
Di template, data agent akan tersedia sebagai variabel dengan prefix yang ditentukan:
<div class="device-info">
<h2>Device Information</h2>
<p><strong>Browser:</strong> {{device_browser_name}} {{device_browser_version}}</p>
<p><strong>Platform:</strong> {{device_platform_name}} {{device_platform_version}}</p>
<p><strong>Device:</strong> {{device_device_type}}</p>
<p><strong>Mobile:</strong> {{#if device_is_mobile}}Yes{}No{{/if}}</p>
<p><strong>Tablet:</strong> {{#if device_is_tablet}}Yes{}No{{/if}}</p>
<p><strong>Desktop:</strong> {{#if device_is_desktop}}Yes{}No{{/if}}</p>
<p><strong>Bot:</strong> {{#if device_is_bot}}Yes{}No{{/if}}</p>
</div>
Anda dapat mendapatkan data agent dalam format JSON dengan method getAgentJson()
:
// Mendapatkan data agent dalam format JSON
$agentJson = $this->getAgentJson();
// Mendapatkan data agent dalam format JSON dengan pretty print
$agentJson = $this->getAgentJson(true);
// Contoh penggunaan dalam controller
public function apiDeviceInfo(): void
{
// Mendapatkan data agent dalam format JSON
$agentJson = $this->getAgentJson(true);
// Output JSON
header('Content-Type: application/json');
echo $agentJson;
exit;
}
Untuk debugging, Anda dapat menggunakan method debugAgent()
:
// Debug agent
$this->debugAgent();
// Debug agent dengan headers
$this->debugAgent(true);
// Contoh penggunaan dalam controller
public function debug(): void
{
if ($this->getParam('debug') === '1') {
// Debug agent dengan headers
$this->debugAgent(true);
exit;
}
// Render template
$this->render('debug');
}
Anda dapat membuat instance NexaAgent kustom dengan method createCustomAgent()
:
// Membuat instance NexaAgent kustom
$customAgent = $this->createCustomAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1');
// Contoh penggunaan dalam controller
public function testAgent(): void
{
// Membuat instance NexaAgent kustom
$customAgent = $this->createCustomAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1');
// Mendapatkan informasi dari custom agent
$browser = $customAgent->getBrowser();
$platform = $customAgent->getPlatform();
$device = $customAgent->getDevice();
// Assign informasi ke template
$this->assignVars([
'browser' => $browser,
'platform' => $platform,
'device' => $device
]);
// Render template
$this->render('test_agent');
}
Anda dapat membandingkan dua user agent dengan method compareAgents()
:
// Membandingkan dua user agent
$comparison = $this->compareAgents('Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1');
// Contoh penggunaan dalam controller
public function compareAgents(): void
{
// Mendapatkan user agent dari parameter
$otherUserAgent = $this->getParam('user_agent', '');
if ($otherUserAgent) {
// Membandingkan dengan user agent saat ini
$comparison = $this->compareAgents($otherUserAgent);
// Assign hasil perbandingan ke template
$this->assignVar('comparison', $comparison);
}
// Render template
$this->render('compare_agents');
}
Anda dapat memeriksa kompatibilitas browser dengan method getBrowserCompatibility()
:
// Mendapatkan informasi kompatibilitas browser
$compatibility = $this->getBrowserCompatibility();
// Contoh penggunaan dalam controller
public function compatibility(): void
{
// Mendapatkan informasi kompatibilitas browser
$compatibility = $this->getBrowserCompatibility();
// Assign informasi ke template
$this->assignVar('compatibility', $compatibility);
// Render template
$this->render('compatibility');
}
Berikut adalah beberapa praktik terbaik dalam menggunakan device detection:
autoDetectDeviceType()
untuk otomatis mendeteksi jenis perangkatassignAgentData()
untuk menetapkan data agent ke template