我已经能够通过CodeIgniter检测用户正在使用的移动设备,但我无法检测当前移动设备正在运行的操作系统。
假设某人正在使用在Android上运行的三星移动设备,而另一个人正在使用仍然是三星的普通Java移动操作系统。如何查看每个用户所在的操作系统?
答案 0 :(得分:19)
从http://mobiledetect.net下载库 将Mobile_Detect.php放入'libraries'
在主控制器内
public function index() {
$this -> load -> library('Mobile_Detect');
$detect = new Mobile_Detect();
if ($detect->isMobile() || $detect->isTablet() || $detect->isAndroidOS()) {
header("Location: ".$this->config->item('base_url')."/mobile"); exit;
}
}
查找有关http://dwij.co.in/mobile-os-detection-in-php-codeigniter
的文档答案 1 :(得分:5)
我借用/偷走了从phpexcel codeigniter集成加载类的方法。
从http://mobiledetect.net下载库,但将Mobile_Detect.php放入' third_party'然后在'库中创建MobileDetect.php'并将以下代码放入其中:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once APPPATH."third_party/Mobile_Detect.php";
class MobileDetect extends Mobile_Detect {
public function __construct() {
parent::__construct();
}
}
现在您可以在控制器中使用它,如下所示:
$this->load->library('MobileDetect');
if ($this->mobiledetect->isMobile()) {
//do something cool;
}
我确定还有其他(更好的)方法可以将mobiledetect整合到codeigniter中,我只想分享我做的方式,希望它有所帮助。
几点说明:
1)如果你将Mobile_Detect.php直接放在&#39; libraries&#39;中,你就不必使用存根文件MobileDetect.php。您仍然可以在没有$detect = new Mobile_Detect();
的情况下使用它,而是调用喜欢此功能:$this->mobile_detect->isMobile()
2)只要遵循CodeIgniter准则,存根文件类的名称就可以是您想要的任何名称。例如,您可以使用&#39; MD&#39;作为类名,然后使用$this->md->isMobile()
3)我建议在Mobile_Detect.php打开if ( ! defined('BASEPATH')) exit('No direct script access allowed');
之后添加<?php
,以防止直接访问该类。
答案 2 :(得分:4)
加载lib。
$this->load->library('user_agent');
使用此功能检测是否为移动
$mobile=$this->agent->is_mobile();
if($mobile){
//your code
}
答案 3 :(得分:1)
从https://github.com/serbanghita/Mobile-Detect下载图书馆 将Mobile_Detect.php复制到third_party目录中 在codeigniter中创建一个帮助器类 //此功能将返回用户代理电话或平板电脑或计算机
if(!function_exists('is_MTC')):
function is_MTC()
{
require(APPPATH .'third_party/Mobile_Detect.php');
$detect = new Mobile_Detect;
return ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');
}
endif;
在视图中您可以直接调用is_MTC函数并检查用户代理
//这将打印用户代理
<?php echo is_MTC(); ?>
了解有关codeigniter helper函数https://ellislab.com/codeigniter/user-guide/general/helpers.html
的更多信息答案 4 :(得分:0)
如果您使用会话类,则会在。user_agent
答案 5 :(得分:0)
CodeIgniter内置了对browser or agent detection in codeigniter
的支持内部控制器使用以下示例代码:
$this->load->library('user_agent');
if ($this->agent->is_mobile()) {
// Is a mobile browser
} else {
// Is a Desktop/Bot User Agent
}