【问题标题】:How to detect device name in Safari on iOS 13 using apache WebSession in Java?如何使用 Java 中的 apache WebSession 在 iOS 13 上的 Safari 中检测设备名称?
【发布时间】:2020-02-11 10:33:28
【问题描述】:

我正在使用 Java 开发 Apache Wicket WebApplication。在这个应用程序中,我有一个使用用户代理来检测用户设备的通用方法。但是,由于 iOS 13 更新,我的检查不再适用于 iPad,因为用户代理为 iPad 和 PC 返回 MacIntel 或 Intel Mac。查了一下发现这里已经讨论过这个问题了:
Link 1
Link 2
Link 3
但这些解决方案仅适用于 JavaScript。我需要在 Java (org.apache.wicket.protocol.http.WebSession) 中处理这个问题。在 WebSession 的属性中,不存在提取触摸点数量的方法。任何人都可以帮助我获得接触点的数量或有其他想法如何解决这个问题。谢谢。

我当前的代码如下所示:



    public static boolean isTablet(WebSession pWebSession) {
        String userAgent = pWebSession.getClientInfo().getUserAgent();
        if (userAgent != null && (userAgent.contains("iPad") 
                || (userAgent.contains("Android") && !userAgent.contains("Mobile")))
                || (userAgent.contains("PlayBook"))) {//BlackBerry tablet
            return true;
        }
        return false;
    }

【问题讨论】:

    标签: java wicket user-agent ios13


    【解决方案1】:

    您可以尝试使用 yauaa 代替 Wicket 内部用户代理,它已经很老了,因此在版本 8 中已被弃用,它将在 9 中被删除。

    【讨论】:

    • 您好安德里亚,谢谢您的提示。我会仔细看看的。但是,这并不能完全解决我的问题。要应用正文链接中描述的修复程序,我需要访问 navigator.maxTouchPoints(JS 代码)。此信息未写入用户代理中。你知道我怎样才能得到这些信息吗?谢谢
    • 如果您正在查看的信息不在用户代理中,那么分析它是无用的。似乎您需要有关仅在浏览器本身中可用的浏览器的信息。这隐含地导致需要客户端代码(即 javascript)来确定浏览器可以做什么。我遇到的可能会产生您正在寻找的工具之一是modernizr.com
    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 2019-06-11
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    相关资源
    最近更新 更多