ТЕХНОЛОГИИ
Настоящий WAP
Серьезный интерес к WAP-технологии, обеспечивающей доступ в Интернет с мобильных телефонов, в России пока проявляют две небольшие группы пользователей - крупные компании, заинтересованные в создании WAP-сайта (в основном для поддержания своего имиджа), и единичные клиенты, которым доступ в Интернет, прежде всего к электронной почте, необходим в силу профессиональных интересов, например во время нахождения в командировке (клиентов, которым обязательно надо, чтобы “мобила была с настоящим вапом”, в расчет принимать не будем).
Но раз есть спрос - то есть и предложение. Число российских WAP-ресурсов составляет сегодня несколько сотен сайтов, начинают появляться и корпоративные проекты (например, разработка “Интерфаксом” WAP-сайта для “Би Лайна”, соглашение ГУТА-Банка с “Мобильными ТелеСистемами” о предоставлении с осени 2000 г. услуг WAP-банкинга, WAP-проект МФД и Московской службы спасения, интеграция торговой системы Torg.ru с МТС). И не исключено, что через год-другой спрос на WAP-мастеров (дизайнеров, программистов) сравняется со спросом на Web-мастеров. Необходимо заметить, что на Западе сейчас наблюдается настоящий бум в области WAP-телефонии - в ближайшие годы счет подобных устройств пойдет на сотни миллионов. По данным исследования компании Allied Business Intelligence, в 2000 г. доля WAP-совместимых терминалов составит 12% продаж по всему миру, а к 2005 г. достигнет в общей сложности 600 млн. WAP-совместимых устройств (sotovik.ru).
Что же надо, чтобы сделать WAP-сайт? Прежде всего, понять принципы WAP-технологии.
Что такое WAP
WAP (Wireless Application Protocol) - протокол беспроводных приложений, позволяющий обращаться к ресурсам Интернета с мобильного устройства (например, сотового телефона, имеющего WAP-сервис). Как компьютер с браузером и ПО, поддерживающим протокол TCP/IP, через телефонную сеть и модем подключается к Всемирной Сети, получая свой IP-адрес на время “коннекта”, так и WAP-телефон, в который встроен микробраузер и соответствующее ПО, через радиоканал и оборудование оператора сотовой связи (фактически исполняющее роль модема) может обращаться к Интернету, и ему тоже на протяжении сеанса связи присваивается IP-адрес. В этом смысле для разработчика нет разницы между ПК и WAP-телефоном как IP-объектами.
Но зачем был придуман WAP, если есть готовый Интернет-протокол HTTP? К сожалению, современному уровню радиоуслуг свойственно множество недостатков - данные передаются медленно и с большими паузами (даже текст HTML-странички будет загружаться долго, не говоря уже о графике или работе в защищенном режиме), а сам телефон (трубка) обладает скромными вычислительными ресурсами и ограниченной способностью к представлению информации в микробраузере (например, монитор может состоять всего из трех текстовых строчек) и к вводу этой информации (набор короткого слова может потребовать нескольких минут).
WAP снимает большинство этих проблем, добавляя, впрочем, свои. Этот протокол использует компактный двоичный формат для передачи данных, интерпретируемый встроенным в трубку чипом, но требует, чтобы запрашиваемый Интернет-ресурс был полностью сформирован на языке WML (Wireless Markup Language), созданном на основе языка XML. Данный язык немного напоминает HTML и ориентирован на оптимальное представление контента на самых разных текстовых и графических микромониторах, поэтому поддержка картинок в нем минимальная (только монохромные изображения). Существует множество различий в интерпретации двоичного WAP-кода телефонами разных производителей, поэтому даже имея две одинаковые модели телефонов с разными программными прошивками, можно получить разные результаты представления WML-контента на экране. Ни один телефон пока не поддерживает все теги WML, а проверять способ представления на всех моделях телефонов и под все прошивки практически нереально. В этом плане разработка WML-контента сильно отличается от подготовки HTML-контента, более-менее одинаково отображаемого несколькими популярными браузерами.
WAP-протокол был предложен Форумом WAP (www.wapforum.org), основанным компаниями Motorola, Ericsson, Nokia и Phone.com. Его первая версия WAP 1.0 имела определенные недостатки, и в июне 1999 г. Форум выпустил стандарт WAP 1.1 (несовместимый с прежним) - как официально сообщалось, с целью приблизить его к спецификации языка разметки XHTML, предложенного консорциумом W3C (www.w3c.org), а по неофициальной информации - под давлением Nokia, стремившейся опередить конкурентов. И действительно, некоторые модели трубок Siemens, поддерживающие версию WAP 1.0, не могут работать с WAP 1.1. Сейчас WAP-Форум трудится над версией WAP 1.2. Будем надеяться, что на этот раз она окажется совместимой с текущей.
WAP-шлюзы
Так как языка WML обычные браузеры не понимают, то для работы WAP-телефона, очевидно, требуется посредник-транслятор. Кодирование информации из WML в WAP-формат и обратное декодирование - из WAP-запроса с телефона в HTTP-запрос (проще говоря, URL) выполняется специальным WAP-шлюзом (WAP Gateway). Чтобы WAP-телефон мог нормально работать, в его настройках прежде всего необходимо указать IP-адрес этого шлюза (примеры настроек можно посмотреть на страничке www.wapgate.ru/setup/index.html). Операторы мобильной связи предлагают собственные WAP-шлюзы, но есть и бесплатные общедоступные. При этом следует учитывать, что разные шлюзы могут обрабатывать WML-контенты по-разному.
Опять-таки, с точки зрения прикладного разработчика WAP-ресурса (а именно для них в первую очередь предназначена данная статья) приведенная информация полезна в общеразвивающем плане. Все, что ему надо, - это подготовить содержимое своего WAP-сайта в WML-формате и обеспечить поддержку русской кодировки (об этом будет сказано особо).
Программируем на WML
WML во многом напоминает HTML, и изучить его не составляет труда. Однако при использовании WML приходится придерживаться нескольких неформальных рекомендаций.
По WAP-протоколу данные в телефон поступают в виде колод (desks), размер одной колоды невелик - порядка 1,5 Кб. Это сделано для повышения эффективности трафика, и разработчику желательно предварительно компилировать WML-тексты для подбора их оптимальных размеров. Колода состоит из карт (cards), каждая из которых описывает один законченный модуль взаимодействия с пользователем (интерактивный элемент экрана) и определяет способ навигации внутри колоды.
WML-тексты чувствительны к регистру (как тексты на языке Си), и в этом состоит одна из хоть и непринципиальных, но важных в практическом плане особенностей WML. Последовательности символов переводов строки, табуляции, пробелов всегда преобразуются в один пробел.
Все WML-документы имеют расширение .wml и начинаются с трех стандартных строк:
<?xml version=“1.0”?> (номер версии XML)
<!DOCTYPE wml PUBLIC “-//WAPFORUM//
DTD WML 1.1//EN” (идентификатор SGML-описания языка WML)
“http://www.wapforum.org/DTD/wml_1.1.xml”> (Web-адрес DTD-определения WML-документа)
Колода берется в теги
<wml>
...
</wml>
Внутри колоды друг за другом следуют описания карт:
<card>
...
</card>
<card>
...
</card>
...
С помощью специальных шаблонов можно определять дополнительные стандартные действия при обращении к некоторым или ко всем картам колоды.
Каждая карта должна иметь свой идентификатор и название:
<card id=“wap.pcweek.card1” title=“pcweek.ru demonstraciya”>
Здесь надо отметить, что так как далеко не все используемые в нашей стране WAP-телефоны русифицированы, WAP-дизайнеру обязательно надо предлагать несколько видов представления своих ресурсов - в частности, на транслите (латинскими буквами).
Большинство тегов WML - парные, т. е. открывающие и закрывающие, как того требует стандарт XML, за небольшими исключениями, например, кроме тега новой строки <br/>.
Простейший тег <p> описывает один параграф текста:
<p>
Dobro pozhalovat’ na wap-server pcweek.ru!
</p>
Законченная страничка (она может быть, например, сохранена на сайте wap.pcweek.ru как заглавная - index.wml) полностью запишется так:
<?xml version=“1.0”?>
<!DOCTYPE wml PUBLIC “-//
WAPFORUM//DTD WML 1.1//EN”
“http://www.wapforum.org/DTD/wml_1.1.xml”>
<wml>
<card id=“wap.pcweek.card1” title=“pcweek.ru demonstraciya”>
<p>
Dobro pozhalovat’ na wap-server pcweek.ru!
</p>
</card>
</wml>
Вот одно из ее возможных представлений на экране телефона А.
Если выводимый текст не умещается на мониторе трубки, то пользователю придется его скроллировать, поэтому лучше не создавать больших карт и колод, а разбивать их на маленькие составляющие, снабжая продуманными средствами навигации.
Для привязки различных функций к средствам управления телефона служит тег <do>. Его важнейшие атрибуты - type (тип действия; значение accept задает переход к следующей карте, значение prev - к предыдущей), name (идентификатор для связи с данной реализацией тега) и label (название действия, выводимое на экран в область навигации).
Конкретный адрес перехода задается непарным тегом <go href=“URL”/>.
Среди других WML-тегов можно отметить средства захвата пользовательского ввода, создания всевозможных списков, расширенной навигации, форматирования текста. Кроме того, имеются переменные, начинающиеся с символа $ и позволяющие передавать данные между картами.
Следующий пример описывает колоду из двух карт. Первая, с заголовком экрана “Карта 1”, выводит подсказку “Vvedite imya:” (телефон Б), а после ввода и выбора действия “Sled” активизирует вторую карту, которая показывает на экране телефона приветствие с ранее введенным именем и позволяет выполнить переход на сайт wap.zdnet.ru:
<?xml version=“1.0”?>
<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”
“http://www.wapforum.org/DTD/wml_1.1.xml”>
<wml>
<card id=“Card1” title=“Karta 1”>
<do type=“accept” label=“Sled”>
<go href=“#Card2”/>
</do>
<p>
Vvedite imya: <input name=“username”/>
</p>
</card>
<card id=“Card2” title=“Karta 2”>
<do type=“accept” label=“ZdNet.Ru”>
<go href=“http://wap.zdnet.ru”/>
</do>
<p>
Privet, $(username)!
</p>
</card>
</wml> (телефон В).
На WML-страничке можно также размещать небольшие сценарии на языке WMLScript, представляющем собой подмножество JavaScript и оптимизированном для выполнения на мобильных устройствах с малыми вычислительными ресурсами.
Сформированную таким образом WML-страничку можно положить, например, по обычному FTP-протоколу на поддомен wap.pcweek.ru (это стандартная практика - организовывать для WAP-доступа сайты, начинающиеся не с www, а с wap), после чего этот поддомен станет новым российским WAP-ресурсом. 4
С автором статьи можно связаться по адресу: sbo@pcweek.ru.
(Окончание следует)