我正在尝试为我的控制器编写一个辅助方法来确定设备是否是移动的,以便我可以加载适当的模板。这是我到目前为止得到的:
def isMobile[A](implicit request: Request[A]): Boolean = {
request.headers.get("User-Agent").exists(agent =>
if (agent.matches("/(iPhone|webOS|iPod|Android|BlackBerry|mobile|SAMSUNG|IEMobile|OperaMobi)/"))
true
else false)
}
这是行不通的,因为用户代理不仅为我们提供了设备,还为我们提供了一个包含很多好东西的字符串,例如:
Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25
解析此信息的正确方法是什么?我是否应该使用用户代理创建一个字典并查看当前字符串是否包含其中一个?创建一个匹配不同用户代理的主要疯狂正则表达式?也许有一些我没有发现的 scala 库可以做到这一点?
谢谢!