检查用户是不是在 App 中打开网站

Posted

技术标签:

【中文标题】检查用户是不是在 App 中打开网站【英文标题】:Check user open the site in App or not检查用户是否在 App 中打开网站 【发布时间】:2016-07-13 13:43:37 【问题描述】:

我正在使用以下代码来检查用户是否在 App 中打开了网站

    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
    if(stripos($ua,'android') && stripos($ua,'mobile') !== false) 
    if($_SERVER['HTTP_X_REQUESTED_WITH'] == "apppackagename") 
    echo "Opening with App";
    
   

但这不适用于某些设备,例如。

GT - S7582 Android 版本 4.2.2

有什么解决方案可以在旧版本设备上运行吗?

提前致谢!

【问题讨论】:

你想解决什么问题? @greenapps 请检查我的编辑 您要修复的内容不清楚。 正在显示的错误。或者是否有任何其他方法可以检查网站是否从应用程序打开或没有在 php 中? 使用 phpinfo() 查看该服务器上使用的 php 版本实现了哪些索引。 【参考方案1】:

您可以简单地在顶部包含https://github.com/serbanghita/Mobile-Detect/blob/master/Mobile_Detect.php 这是一个轻量级库,只需要包含一个文件。

例如:

 require_once('Mobile_Detect.php');
 $device = new Mobile_Detect();

 if ($device->isMobile() ) 
   if( isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
       $_SERVER['HTTP_X_REQUESTED_WITH'] == "apppackagename") 
           echo "Opening with App";
       
 

如果你想检测 android 那么你可以输入:

$device->isAndroidOS()

这是检测移动设备的最可靠方法(但也不是防弹的)。使用简单的用户代理检查无法进行可靠的移动检测。

如果查看源代码https://raw.githubusercontent.com/serbanghita/Mobile-Detect/master/Mobile_Detect.php,可以看到支持 GT-S7582。

【讨论】:

【参考方案2】:

我建议使用具有一组稳定的移动/应用检测检查的库。这样做的好处是,您可以期望框架通过简单地升级您的库而不是自己重新编码来支持即将推出的设备。

对于 PHP,似乎有 Mobile-Detect,它是开源的并且有积极的贡献:https://github.com/serbanghita/Mobile-Detect

【讨论】:

感谢您的回复 :)。这很有帮助。但我不想使用库【参考方案3】:

如果你想隐藏你需要在你的代码中使用array_key_exists 的错误,如下所示:

$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if(stripos($ua,'android') && stripos($ua,'mobile') !== false) 
    if(array_key_exists('HTTP_X_REQUESTED_WITH', $_SERVER) 
        if($_SERVER['HTTP_X_REQUESTED_WITH'] == "apppackagename") 
            echo "Opening with App";
        
     else 
        echo "Sorry... I don't see a package!";
    

函数array_key_exists检查给定的键或索引是否存在于数组中”。

也许将来你需要隐藏另一个错误,所以,你可以使用@来 静音错误。 See here.

【讨论】:

以上是关于检查用户是不是在 App 中打开网站的主要内容,如果未能解决你的问题,请参考以下文章

Vue JS:检查用户登录是不是在我的代码中不起作用

PHP - 想要检查用户输入中是不是有网站地址

Jenkinsfile的语法检查(lint)

如何检查元素是不是具有AngularJS的类?

ReactNative:如何检查用户是不是已授予 gps 权限

如何检查用户是不是打开了通知中心