【问题标题】: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 版本实现了哪些索引。

标签: php android


【解决方案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.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2018-11-06
      • 2013-06-17
      • 1970-01-01
      相关资源
      最近更新 更多