Непривязанный джейлбрейк iOS 5.0.1 iPhone 4S и iPad 2
[FAQ] Непривязанный джейлбрейк iOS 5.0.1
Книга о Стиве Джобсе по Уолтеру Айзексену для iPhone/iPod Touch/iPad
Как установить взломанные приложения ipa
Как залить видео на iPhone/iPad
Давайте знакомиться, iOS 6!
F.A.Q.: Справочник по ошибкам iTunes!

iPhone-Best.ru » Инструкции, статьи, новости об iPhone/iPad » Разработка для iPhone на PHP и XML

Разработка для iPhone на PHP и XML

Категория: Инструкции, статьи, новости об iPhone/iPad
Я чрезвычайно горд собой: я продержался целых четыре дня, прежде чем купить iPhone. Конечно, меня во многом побудил к покупке тот факт, что мой предыдущий телефон был изрядным хламом. Но что меня действительно подкупило, так это наличие в iPhone встроенного Wi-Fi-блока и — что ещё важнее — отличного браузера. Дело в том, что набор средств разработки ПО (SDK) для iPhone – это стандартный динамический HTML (DHTML), исполняемый в Web-браузере. Так что можно использовать такие привычные клиентские технологии, как HTML, каскадные таблицы стилей (CSS) и асинхронный JavaScript™ + XML (Ajax) в комбинации с любой серверной технологией, какой только пожелаете: PHP, Rails, Java™.

После того как я немного поиграл с моим новым iPhone’ом и проделал пару стандартных вещей: позвонил нескольким людям, побаловался с Google Maps и послушал мелодии с помощью функциональности iPod, я понял: пора разработать что-нибудь специально для моего телефона. Итак, возник вопрос, что именно разработать?

Что ж, одной вещью, которой я лишился, отказавшись от старого телефона, была программа Salling Clicker. Salling Clicker превращал любой телефон в пульт дистанционного управления (ПДУ) для Macintosh (а сегодня он с тем же успехом работает и с Microsoft® Windows®). Используя это приложение, можно запускать на компьютере с ОС Macintosh скрипты AppleScript, осуществляя всевозможные полезные штуки, такие как управление Apple iTunes или KeyNote (Apple-альтернатива Microsoft Office PowerPoint®). На смартфонах это требовало загрузки на телефон небольшого приложения. Но iPhone не позволяет закачивать специальные приложения, потому что в роли SDK выступает Web-браузер Apple Safari. Итак, как же можно использовать Safari для управления Mac’ом?

Я нашёл такое решение: надо задействовать PHP на моей машине с Mac OS X совместно с инструментарием iUI toolkit от Джо Хьюитта (Joe Hewitt). Этот инструментарий (toolkit) формирует на Web-странице интерфейс, напоминающий iPhone. Он также реализует такую же динамику страницы. Например, когда вы движетесь по списку элементов, iUI переходит от края до края страницы, точно так же, как это делает iPhone, когда вы работаете с контакт-листом.

Создание списка команд

оздание приложения начнём с определения некоторого числа команд, которые сможет выполнять наш iPhone как пульт дистанционного управления. Для задания списка команд мы используем XML-файл. Этот файл показан в листинге 1.

Листинг 1. commands.xml
  <br /><commands><br /> <command title="Next Song"><br /> tell application "iTunes" to next track<br /> </command><br /> <command title="Previous Song"><br /> tell application "iTunes" to back track<br /> </command><br /></commands><br />


Файл представляет собой список тегов . У каждого тега есть атрибут, задающий удобочитаемое имя команды (title). В свою очередь, содержимое тега является кодом на AppleScript, который будет выполняться при запросе соответствующей команды. Из-за особенностей формата XML, чтобы использовать в коде AppleScript символы угловых скобок () и амперсанда (&), их необходимо закодировать их как , and &, соответственно.

Для обработки этого XML-файла я создал в PHP 5-й версии класс Command, который считывает этот файл, возвращает имена команд и запускает их на выполнение, используя команду osascript из Mac OS X. Код, описывающий этот класс, представлен в листинге 2

Листинг 2. commands.php
<br /><?php<br />class Commands<br />{<br /> private $_commands;<br /><br /> function __construct()<br /> {<br /> $this->_commands = array();<br /><br /> $doc = new DOMDocument();<br /> $doc->load('commands.xml');<br /> $cmds = $doc->getElementsByTagName( 'command' );<br /> foreach( $cmds as $cmd )<br /> {<br /> $this->_commands []= array( <br /> 'title' => $cmd->getAttribute('title'),<br /> 'command' => $cmd->firstChild->nodeValue<br /> );<br /> }<br /> }<br /><br /> function getCommands()<br /> {<br /> $cmds = array();<br /> foreach( $this->_commands as $cmd )<br /> {<br /> $cmds []= $cmd['title'];<br /> }<br /> return $cmds;<br /> }<br /><br /> function runCommand( $id )<br /> {<br /> $ph = popen( "osascript", "w" );<br /> fwrite( $ph, $this->_commands[$id]['command'] );<br /> fclose( $ph );<br /> }<br />}<br />?><br />


Конструктор класса первым делом считывает файл commands.xml, используя PHP-класс DomDocument. Далее он извлекает все элементы command с помощью метода getElementsByTagName. Затем, сформировав массив элементов, полученных из , конструктор определяет переменную экземпляра класса _commands, записывая в неё имена команд и соответствующие им AppleScript-команды.

В классе также определены два дополнительных метода:
-Метод getCommands(), который просто возвращает список имён команд
-Метод runCommand(), который выполняет команду, заданную порядковым номером, используя для этого osascript - консольный интерпретатор AppleScript-кода.

Создание интерфейса

После того как мы создали XML-файл со списком команд и описали PHP-класс Commands пора бы реализовать к ним некоторый интерфейс. Просто чтобы проверить, что всё нормально работает, создадим пока довольно примитивный интерфейс. Он показан в листинге 3.

Листинг 3. Скрипт, создающий простой интерфейс
<br /><html><body><br /><?php<br />require_once('commands.php');<br />$cmds = new Commands();<br />?><br /><?php<br />$id = 0;<br />foreach( $cmds->getCommands() as $cmd ) {<br />?><br /><a href="do.php?id=<?php echo($id);?>"><?php echo( $cmd ); ?></a><br/><br /><?php $id++; } ?><br /></body></html><br />


Сначала скрипт создаёт объект экземпляра класса Command и с помощью метода getCommands() запрашивает список команд. Далее скрипт формирует набор ссылок на страницу do.php, используя порядковый номер команды и имя команды, которое возвращается классом Commands.
Открыв эту страницу в браузере Safari

Рисунок 1. Примитивный интерфейс
Разработка для iPhone на PHP и XML

Я мог бы уже использовать эту страницу как интерфейс для моего iPhone, и всё бы работало. Но при этом не было бы той динамики, которая есть в iPhone. Так что следующее, что мы должны сделать – это улучить наш интерфейс, воспользовавшись инструментарием iUI. В листинге 4 приведён код, который это делает.

Листинг 4. index.php
<br /><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <br /> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><br /><html xmlns="http://www.w3.org/1999/xhtml"><head><br /><title>Mac Controller</title><br /><meta name="viewport"<br /> content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;"/><br /><style type="text/css" media="screen">@import "iui/iui.css";</style><br /><script type="application/x-javascript" src="iui/iui.js"></script><br /></head><br /><body><br /><div class="toolbar"><br /> <h1 id="pageTitle"></h1><br /> <a id="backButton" class="button" href="#"></a><br /></div><br /><?php<br />require_once('commands.php');<br />$cmds = new Commands();<br />?><br /><ul title="Commands" selected="true"><br /><?php<br />$id = 0;<br />foreach( $cmds->getCommands() as $cmd ) {<br />?><br /><li><br /><a href="do.php?id=<?php echo($id);?>"><?php echo( $cmd ); ?></a><br /></li><br /><?php $id++; } ?><br /></ul><br /></body></html><br />


Вначале мы подключаем CSS-файл из iUI, который содержит все те стили, которые и придают странице iPhone-подобный вид. Далее подключаем JavaScript-файл из iUI, полностью реализующий динамику приложения. После этого с помощью класса Commands получаем список команд и формируем на его основе неупорядоченный список (
    ), содержащий элементы списка (
  • ) для каждого элемента. Нет, это не настолько ужасно, насколько звучит. На самом деле вы можете теперь открыть эту страницу в Safari, и она будет иметь точно такой же вид, как и в самом iPhone

    Рисунок 2. Страница index.php, открытая в Safari
    Разработка для iPhone на PHP и XML

    Ничего страшного, если вы работаете под Windows: сегодня есть версии Safari и для Windows, и для Mac. Конечно, PHP-скрипт, который выполняет этот код, должен работать под Mac, так как он запускает osascript для выполнения AppleScript-кода. Однако если вы захотите сделать приложение под DOS или UNIX® вы можете использовать системные команды этих операционных систем.

    Последнее, что мы должны сделать – это создать файл do.php, к которому обращается index.php для выполнения собственно самих команд. Этот файл показан в листинге 5.

    Листинг 5. do.php
    <br /><?php<br />require_once('commands.php');<br /><br />$cmds = new Commands();<br />$cmds->runCommand( $_GET['id'] );<br />?><br />


    Теперь можно открыть страницу в Safari на своём же компьютере и пощёлкать по ссылкам, чтобы проверить, что приложение работает. Если всё в порядке, iTunes будет включать следующую или предыдущую песню в соответствии с командой, которую вы выбрали.

    В моей системе мне пришлось подредактировать один файл: /etc/httpd/httpd.conf. Надо было изменить User на моё имя пользователя, и Group - на staff. Затем я перезапустил сервер Apache, выполнив консольную команду:

    % apachectl graceful


    после чего iTunes стал переключать треки вперёд и назад, когда я щёлкал по ссылкам. Теперь можно включить iPhone и получить доступ к приложению, запустив Safari и открыв в нём страницу по IP-адресу моего локального компьютера. И всё это будет отлично работать, пока мои лэптоп и iPhone будут находиться в одной Wi-Fi-сети.

    Телекинез

    реализована – причем на более высоком уровне. Проект называется telekinesis (телекинез), и его сайт размещён на Google Code. Соответствующее приложение получило название iPhone Remote и запускается под Mac OS X как приложение с графическим пользовательским интерфейсом (GUI-приложение).

    Если запустить iPhone Remote, то он откроет в браузере Safari страницу, которая будет выглядеть точно так же как в iPhone

    Рисунок 3. Интерфейс iPhone Remote
    Разработка для iPhone на PHP и XML

    Отсюда можно управлять приложениями и запускать их, просматривать документы, удалённо использовать iTunes и даже перемещаться по экрану и выполнять консольные команды—и всё это можно с iPhone.

    iPhone Remote запрашивает имя пользователя и пароль, поэтому посторонний человек не сможет воспользоваться вашим Mac’ом, когда вы установили это приложение. Так что iPhone можно использовать как устройство для защищённой работы с данными в виртуальной рабочей сети (VNC - virtual network computing) вашего Mac’а.

    Заключение

    Разрабатывать под iPhone очень легко. Реклама утверждает , что iPhone предоставляет доступ к «настоящему» Интернету, а не к его мобильной версии, и это правда: с помощью iPhone можно просматривать обычные страницы так, как если бы они были открыты на Mac’е или PC. А такие инструментарии для создания интерфейса, как iUI помогают придать приложению более похожий на iPhone внешний вид и динамику, удобные для работы с приложениями, подобными приведенному здесь приложению iPhone-ПДУ, сделанному на XML и PHP.

    Об авторе

    Джек Д. Херрингтон (Jack D. Herrington) - главный инженер-программист с более чем двадцатилетним опытом работы. Он автор трех книг: " Генерирование кода в действии ", " Podcasting Hacks " и " PHP Hacks ". Написал более 30 статей. Вы можете связаться с Джеком по адресу jherr@pobox.comp.

Все файлы листинга скачать можно ниже !




Скачать Разработка для iPhone на PHP и XML



Как установить взломанные приложения ipa
Как залить видео на iPhone/iPad

Привет, Уважаемый! Думаю, ты понимаешь, что зашел простым гостем и пользоваться всеми привелегиями "своего" человека на сайте не сможешь?
Стань "своим" для лучшего сайта для iPhone, iPod Touch и iPad, зарегистрировавшись, или же поспеши войти в свою учетную запись!

Прокомментируй новость: