Это руководство познакомит вас с WURFL и продемонстрирует, как его можно использовать для обнаружения устройств и кроссплатформенной мобильной веб-разработки.
Что такое WURFL?
WURFL — это репозиторий описания устройств (DDR), который служит центральным источником информации об устройствах для мобильных веб-приложений. Он содержит описания тысяч мобильных устройств, которые можно использовать в любом приложении, бесплатном или коммерческом
ScientiaMobile — компания, стоящая за проектом, который расшифровывается как Wireless Universal Resource File. WURFL признан де-факто стандартом в области репозиториев описания устройств. Проект начался в 2002 году с целью решения проблем фрагментации мобильных устройств. Он стремится к этому, предоставляя разработчикам по всему миру общий набор информации об устройствах.
WURFL имеет следующие издания:
- Java Edition
- PHP Edition
- .Net Edition (также называется NuGet)
- Издание базы данных
WURFL доступен как проект с открытым исходным кодом, а также с коммерческими лицензиями. Бесплатная версия обычно используется проектами с открытым исходным кодом, тогда как сайты, принадлежащие лицензиатам, используют коммерческую версию.
Библиотека беспроводной абстракции (WALL)
WALL (Wireless Abstraction Library) — это библиотека тегов JSP, которая позволяет разработчику создавать мобильные страницы, похожие на обычный HTML, при этом передавая WML, C-HTML или мобильный профиль XHTML на устройство, с которого исходит HTTP-запрос. Правильный формат выбирается в зависимости от реальных возможностей устройства, отправляющего запрос.
На рисунке слева показаны разные языки разметки. Поскольку кодеры разрабатывают приложение для поддержки всех доступных устройств, доступная область для кодирования является областью пересечения. В связи с появлением все большего количества устройств и различий в поддержке и функциях устройств этот регион обычно становится все меньше и меньше.
WURFL решает эту проблему путем определения типа устройства и последующей доставки подходящей разметки. На рисунке справа показан доступный диапазон разметки для разработчиков, который является суммой всех областей разметки.
WURFL содержит более 7 000 уникальных устройств и тысячи вариантов прошивок, представляющих практически все мобильные устройства на рынке по всему миру!
WURFL Flow
Как только запрос приложения от устройства достигает веб-сервера, среда WURFL определяет тип устройства и создает разметку, сгенерированную специально для устройства. На диаграмме ниже показан поток запросов для веб-приложений с включенной интеграцией WURFL:
WURFL Структура
Файлы конфигурации для WURFL написаны на XML и состоят из списка устройств с их возможностями. WURFL.mxl содержит список всех доступных устройств, а также функции, встроенные в сам файл. Другие файлы различаются в зависимости от версии WURFL.
Диаграмма выше представляет структуру WURFL для версии Java. Файл конфигурации находится в корневой папке веб-серверов, где находится приложение. Поэтому все страницы веб-сервера могут легко использовать WURFL.
Чтобы начать работать с WURFL, вам необходимо скачать файл конфигурации с сайта WURFL . Этот файл конфигурации должен быть размещен непосредственно в корневой папке веб-сервера (как показано на рисунке выше).
Группы и возможности
Группа в WURFL — это набор похожих функций, объединенных в одну. Например, группа может включать разметку, формат изображения, формат звука, отображение, поддержку Ajax, поддержку кэша, CSS, SMS, MMS и т. Д. Для определенного подмножества устройств.
Возможность — это уникальная функция, которая определяет отдельные функции, поддерживаемые мобильным устройством.
WURFL Функциональность
Пример кода ниже взят из файла репозитория WURFL (WURFL.xml), который содержит группы и возможности для устройства:
1
2
3
4
5
6
|
<device user_agent=»Nokia3650″ actual_device_root=»true» fall_back=»nokia_generic_series60″ id=»nokia_3650_ver1″><br/>
<group id=»image_format»><br/>
<capability name=»bmp» value=»true»/><br/>
<capability name=»colors» value=»4096″/><br/>
</group><br/>
</device>
|
Это файл конфигурации, который запрашивается для получения информации об устройстве. Итак, если на рынке появилось новое устройство, нам нужно добавить информацию в этот файл.
Функциональность WURFL можно объяснить в два этапа:
- Обнаружение устройства: при поступлении запроса от устройства в файл репозитория WURFL запрашивается значение USER_AGENT . Это уникальное значение для каждого устройства.
- Возвращаемое значение возможности: Как только USER_AGENT получен, репозиторий снова запрашивается и получают соответствующие группы и возможности. Затем создается разметка для запрашивающего устройства, которая соответствует значениям возможностей. Если возможности не найдены в идентификаторе для USER_AGENT , возможности получаются после наследования с использованием идентификатора из значения FALL_BACK . Цепочка наследования продолжается до тех пор, пока значения возможностей не станут доступны для разметки.
Включая WURFL
WURFL может быть включен в различные форматы, такие как PHP, JSP и .NET.
Пример ниже показывает, как мы включаем репозиторий WURFL на страницу JSP.
Страница с поддержкой WURFL должна включать два файла:
- /WEB-INF/tld/wall.tld : эта страница дескриптора библиотеки тегов включена вверху страницы.
- /WEB-INF/tld/c.tld : эта страница находится чуть выше тега body
Пример ниже демонстрирует, как работает WURFL, и показывает, как может выглядеть страница JSP с поддержкой WURFL, размещенная на веб-сервере:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
<%@ taglib uri="/WEB-INF/tld/wall.tld" prefix="wall" %>
<wall:document>
<wall:xmlpidtd />
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<wall:load_capabilities />
<wall:body>
<wall:body>
<wall:block>
<c:choose>
<c:when test="${capabilities.resolution_width >= 700}">
<iframe frameborder="0" scrolling="no" src="pageA.html" ></iframe>
</c:when>
<c:otherwise>
<iframe frameborder="0" scrolling="no" src="pageB.html"></iframe>
</c:otherwise>
</c:choose>
</wall:block>
</wall:body>
</wall:document>
|
В этом примере, если страница запрашивается веб-браузером, ширина разрешения которого превышает 700, первая часть условия будет выполнена, и в iframe появится pageA.html. В противном случае, pageB.html появится.
Точно так же мы можем использовать возможности для запроса свойств устройства и предоставления разметки, стилей отображения, изображений, а также манипулировать контентом в зависимости от типа устройства.
Кто использует WURFL?
В настоящее время большое количество компаний используют WURFL для разработки мобильных сайтов. К ним относятся компании, которые являются крупными и средними поставщиками контента, но наиболее популярное использование WURFL в компаниях, которые являются небольшими поставщиками контента. Одними из самых популярных компаний, которые используют WURFL, являются Vodafone, Mobile Galleries и Pepsi UK.