【问题标题】:Determine device type from serial number / unique ID根据序列号/唯一 ID 确定设备类型
【发布时间】:2012-01-03 10:03:00
【问题描述】:

我们在 iPhone 和 Android 上提供移动应用程序(不久将发布 Blackberry)。应用程序功能是相同的 - 我们只支持几种不同的设备。该应用与后端 Web 服务通信以接收数据。

现在,在 Web 应用程序中,有什么方法可以轻松确定正在连接的设备类型?这是我可用的:

  1. 设备的序列号(或唯一 ID)(请注意,在 android 模拟器中它始终为 000000000000,而在 iphone 模拟器中,格式与实际 iphone 完全不同)

  2. 在 iphone 应用程序中,使用NSMutableUrlRequest / NSURLConnection 建立连接,在 Android 应用程序中,使用org.apache.http.client.HttpClient 建立连接

  3. 服务器 Web 应用程序是用 PHP 编写的。

  4. 我愿意满足于“最佳猜测”的近似值:如果 95% 的情况我是对的,那么这对我的目的来说已经足够了。

我不确定黑莓的任何东西,因为那个应用程序还没有准备好。

非常感谢任何想法/帮助。非常感谢。

【问题讨论】:

  • +1 表示问题。即使我也在寻找相同的

标签: android iphone types device


【解决方案1】:

您可以查看访问 HTTP API 的用户代理并嗅探它。这将在至少 95% 的时间内起作用。 iOS 应用程序中将包含 CFNetwork/xxx.xx.x 之类的内容。对于 Android / Blackberry,只需尝试一下,看看它们是什么。或者更改您的应用程序以自己设置用户代理,以便您确切知道您的应用程序的版本等正在访问 API。

【讨论】:

  • 是的,我倾向于使用用户代理嗅探。虽然我可以更改应用程序以发送更多信息,但它不适用于已经存在不发送此信息的应用程序。
  • 不过没关系 - 当前的发货应用程序至少会发送默认用户代理,这足以确定 iPhone、Android 和黑莓。
  • 默认情况下,apache http 客户端发送用户代理 Apache-HttpClient/UNAVAILABLE (java 1.4) - 至少这是我从当前的 android 应用程序中得到的。不确定黑莓是否会(默认情况下)发送更合理的东西,但是目前没有发布的黑莓应用,所以我们可以自己指定一个合理的用户代理。
猜你喜欢
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
相关资源
最近更新 更多