Определить тип устройства по серийному номеру/уникальному идентификатору

У нас есть мобильные приложения на iPhone и Android (скоро выйдет Blackberry). Функционал приложения тот же — мы просто поддерживаем несколько разных устройств. Приложение взаимодействует с серверной веб-службой для получения данных.

Теперь в веб-приложении есть ли способ легко определить, какой тип устройства к нему подключается? Вот что у меня есть в наличии:

  1. серийный номер (или уникальный идентификатор) устройства (обратите внимание, что в симуляторе Android это всегда 000000000000, а в симуляторе iphone формат полностью отличается от реального формата iphone)

  2. в приложении для iphone соединения выполняются с помощью NSMutableUrlRequest / NSURLConnection, в Android соединения выполняются с помощью org.apache.http.client.HttpClient

  3. Серверное веб-приложение написано на PHP.

  4. Я готов согласиться на приближение «наилучшего предположения»: если я прав в 95% случаев, этого достаточно для моей цели.

Я не уверен насчет Blackberry, потому что это приложение еще не готово.

Любые идеи/помощь приветствуются. Большое спасибо.


person Aleks G    schedule 03.01.2012    source источник
comment
+1 за вопрос. Даже я искал то же самое   -  person Seshu Vinay    schedule 03.01.2012


Ответы (1)


Вы можете посмотреть на пользовательский агент, который обращается к HTTP API, и понюхать его. Это будет работать по крайней мере в 95% случаев. В приложениях для iOS будет что-то вроде CFNetwork/xxx.xx.x. Для Android / Blackberry просто попробуйте и посмотрите, что они из себя представляют. В качестве альтернативы измените свое приложение, чтобы самостоятельно установить пользовательский агент, чтобы вы точно знали, какая версия вашего приложения и т. д. использует API.

person mattjgalloway    schedule 03.01.2012
comment
Да, обнюхивание пользовательского агента — это то, к чему я склоняюсь. Хотя я могу изменить приложение, чтобы отправлять больше информации, оно не будет работать для уже существующих приложений, которые не отправляют эту информацию. - person Aleks G; 03.01.2012
comment
Впрочем, это не имеет большого значения — текущие приложения для доставки, по крайней мере, будут отправлять пользовательские агенты по умолчанию, что достаточно хорошо, чтобы определить iPhone, Android и Blackberry. - person mattjgalloway; 03.01.2012
comment
по умолчанию http-клиент apache отправляет пользовательский агент Apache-HttpClient/UNAVAILABLE (java 1.4) - по крайней мере, это то, что я получаю от текущего приложения для Android. Не уверен, отправит ли Blackberry (по умолчанию) что-то более разумное, однако на данный момент нет приложения для доставки Blackberry, поэтому мы можем сами указать разумный пользовательский агент. - person Aleks G; 03.01.2012