Новости

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

  1. Додайте developerWorks в свій iPhone
  2. Створення списку команд
  3. Лістинг 1. commands.xml
  4. Лістинг 2. commands.php
  5. створення інтерфейсу
  6. Лістинг 3. Скрипт, що створює простий інтерфейс
  7. Малюнок 1. Примітивний інтерфейс
  8. Лістинг 4. index.php
  9. Малюнок 2. Сторінка index.php, відкрита в Safari
  10. Лістинг 5. do.php
  11. телекінез
  12. Малюнок 3. Інтерфейс iPhone Remote
  13. висновок
  14. Ресурси для скачування

Розробка власних програм для iPhone

Я надзвичайно гордий собою: я протримався цілих чотири дні, перш ніж купити iPhone. Звичайно, мене багато в чому спонукав до покупки той факт, що мій попередній телефон був неабияким мотлохом. Але що мене дійсно підкупило, так це наявність в iPhone вбудованого Wi-Fi-блоку і - що ще важливіше - відмінного браузера. Справа в тому, що набір засобів розробки (SDK) для iPhone - це стандартний динамічний HTML (DHTML), що виконується в Web-браузері. Так що можна використовувати такі звичні клієнтські технології, як HTML, каскадні таблиці стилів (CSS) і асинхронний JavaScript ™ + XML (Ajax) в комбінації з будь-серверної технологією, який тільки побажаєте: PHP, Rails, Java ™.

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

Додайте developerWorks в свій iPhone

Не пропустіть єдину в своєму роді стрічку developerWorks. Виберіть тему, розділ, бренд, статтю, прочитайте анотацію або відвідайте сам сайт за допомогою свого iPhone і цього посилання: http://www.ibm.com/developerWorks/iphone .

Що ж, однією річчю, яку я втратив, відмовившись від старого телефону, була програма 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

<Commands> <command title = "Next Song"> tell application "iTunes" to next track </ command> <command title = "Previous Song"> tell application "iTunes" to back track </ command> </ commands>

Файл представляє собою список тегів <command>. У кожного тега є атрибут, що задає удобочитаем ім'я команди (title). У свою чергу, вміст тега <command> є кодом на AppleScript, який буде виконуватися при запиті відповідної команди. Через особливості формату XML, щоб використовувати в коді AppleScript символи кутових дужок (<або>) і амперсанда (&), їх необхідно закодувати їх як & lt ;, & gt ;, and & amp ;, відповідно.

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

Лістинг 2. commands.php

<? Php class Commands {private $ _commands; function __construct () {$ this -> _ commands = array (); $ Doc = new DOMDocument (); $ Doc-> load ( 'commands.xml'); $ Cmds = $ doc-> getElementsByTagName ( 'command'); foreach ($ cmds as $ cmd) {$ this -> _ commands [] = array ( 'title' => $ cmd-> getAttribute ( 'title'), 'command' => $ cmd-> firstChild-> nodeValue); }} Function getCommands () {$ cmds = array (); foreach ($ this -> _ commands as $ cmd) {$ cmds [] = $ cmd [ 'title']; } Return $ cmds; } Function runCommand ($ id) {$ ph = popen ( "osascript", "w"); fwrite ($ ph, $ this -> _ commands [$ id] [ 'command']); fclose ($ ph); }}?>

Конструктор класу насамперед зчитує файл commands.xml, використовуючи PHP-клас DomDocument. Далі він витягує всі елементи command за допомогою методу getElementsByTagName. Потім, сформувавши масив елементів, отриманих з <command>, конструктор визначає змінну примірника класу _commands, записуючи в неї імена команд і відповідні їм AppleScript-команди.

У класі також визначено два додаткові методи:

  • Метод getCommands (), який просто повертає список імен команд
  • Метод runCommand (), який виконує команду, задану порядковим номером, використовуючи для цього osascript - консольний інтерпретатор AppleScript-коду.

створення інтерфейсу

Після того як ми створили XML-файл зі списком команд і описали PHP-клас Commands пора б реалізувати до них деякий інтерфейс. Просто щоб перевірити, що все нормально працює, створимо поки досить примітивний інтерфейс. Він показаний в лістингу 3 .

Лістинг 3. Скрипт, що створює простий інтерфейс

<Html> <body&gt; <? Php require_once ( 'commands.php'); $ Cmds = new Commands (); ?&gt; <? Php $ id = 0; foreach ($ cmds-> getCommands () as $ cmd) {?> <a href="do.php?id=<?php echo($id);?> "&gt; <? php echo ($ cmd); ?> </a> <br/&gt; <? Php $ id ++; }?> </ Body> </ html>

Спочатку скрипт створює об'єкт екземпляра класу Command і за допомогою методу getCommands () запитує список команд. Далі скрипт формує набір посилань на сторінку do.php, використовуючи порядковий номер команди та ім'я команди, яке повертається класом Commands.

Відкривши цю сторінку в браузері Safari, можна побачити щось на зразок малюнка 1 .

Малюнок 1. Примітивний інтерфейс
Розробка власних програм для iPhone   Я надзвичайно гордий собою: я протримався цілих чотири дні, перш ніж купити iPhone

Я міг би вже використовувати цю сторінку як інтерфейс для мого iPhone, і все б працювало. Але при цьому не було б тієї динаміки, яка є в iPhone. Так що наступне, що ми повинні зробити - це покращити наш інтерфейс, скориставшись інструментарієм iUI. В лістингу 4 приведений код, який це робить.

Лістинг 4. index.php

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

Спочатку ми підключаємо CSS-файл з iUI, який містить всі ті стилі, які і надають сторінці iPhone-подібний вид. Далі підключаємо JavaScript-файл з iUI, повністю реалізує динаміку додатки. Після цього за допомогою класу Commands отримуємо список команд і формуємо на його основі невпорядкований список (<ul>), що містить елементи списку (<li>) для кожного елемента. Ні, це не настільки жахливо, наскільки звучить. Насправді ви можете тепер відкрити цю сторінку в Safari, і вона буде мати точно такий же вигляд, як і в самому iPhone (див. малюнок 2 .

Малюнок 2. Сторінка index.php, відкрита в Safari

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

Останнє, що ми повинні зробити - це створити файл do.php, до якого звертається index.php для виконання власне самих команд. Цей файл показаний в лістингу 5 .

Лістинг 5. do.php

<? Php require_once ( 'commands.php'); $ Cmds = new Commands (); $ Cmds-> runCommand ($ _GET [ 'id']); ?>

Тепер можна відкрити сторінку в Safari на своєму ж комп'ютері і поклацати по посиланнях, щоб перевірити, що додаток працює. Якщо все в порядку, iTunes буде включати наступну або попередню пісню відповідно до командою, яку ви вибрали.

У моїй системі мені довелося підредагувати один файл: /etc/httpd/httpd.conf. Треба було змінити User на моє ім'я користувача, і Group - на staff. Потім я перезапустив сервер Apache, виконавши консольную команду:

% Apachectl graceful

після чого iTunes став перемикати треки вперед і назад, коли я клацав по посиланнях. Тепер можна включити iPhone і отримати доступ до додатка, запустивши Safari і відкривши в ньому сторінку по IP-адресою мого локального комп'ютера. І все це буде відмінно працювати, поки мої лептоп і iPhone будуть знаходитися в одній Wi-Fi-мережі.

телекінез

Коли я виконував невелике дослідження для цієї статті, я виявив, що ця концепція віддаленого управління Mac'ом за допомогою iPhone вже реалізована - причому на більш високому рівні. проект називається telekinesis (Телекінез), і його сайт розміщений на Google Code. Відповідний додаток отримало назву iPhone Remote і запускається під Mac OS X як додаток з графічним призначеним для користувача інтерфейсом (GUI-додаток).

Якщо запустити iPhone Remote, то він відкриє в браузері Safari сторінку, яка буде виглядати точно так само як в iPhone і як показано на малюнку 3 .

Малюнок 3. Інтерфейс iPhone Remote

Звідси можна керувати програмами та запускати їх, переглядати документи, віддалено використовувати iTunes і навіть переміщатися по екрану і виконувати консольні команди-і все це можна з iPhone.

iPhone Remote запитує ім'я користувача та пароль, тому стороння людина не зможе скористатися вашим Mac'ом, коли ви встановили це додаток. Так що iPhone можна використовувати як пристрій для захищеної роботи з даними в віртуальної робочої мережі (VNC - virtual network computing) вашого Mac'а.

висновок

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

Ресурси для скачування

Схожі теми

  • оригінал статті iPhone development with PHP and XML (EN) .
  • iPhone : Загляньте на сайт Apple, присвячений iPhone, - відмінний ресурс для пошуку інформації про iPhone. (EN)
  • Домашня сторінка PHP : Відвідайте цю сторінку, щоб більше дізнатися про PHP. (EN)
  • iUI toolkit : Загляньте на сайт Джо Хьюїтта і дізнайтеся більше про інструментарій iUI. (EN)
  • Salling Clicker : Дізнайтеся більше про програму Salling Clicker, що надихнула автора на створення цієї статті. Вона зберігає в собі ще багато фантастичних можливостей для тих, хто хоче використовувати свій мобільний телефон для управління Mac'ом або PC. (EN)
  • iPhone Remote : Вивчіть програму iPhone Remote проекту «telekenesis» - повну версію наведеного тут прикладу. (EN)
  • Сертифікація IBM XML : Дізнайтеся, як отримати від IBM Сертифікат розробника в XML і суміжних з XML областях. (EN)
  • У вас є iPhone? : Тепер ви з гарантією не пропустите жодної статті з стрічки developerWorks. Виберіть тему, розділ, бренд, статтю, прочитайте анотацію або відвідайте сам сайт. Все це можна зробити за допомогою вашого iPhone і цього посилання: http://www.ibm.com/developerWorks/iphone . (EN)
  • Пробна версія програмного забезпечення від IBM : Використовуйте у вашому наступному проекті програмне забезпечення, яке можна завантажити безпосередньо з developerWorks. (EN)

Підпишіть мене на повідомлення до коментарів

Отже, виникло питання, що саме розробити?
Отже, як же можна використовувати Safari для управління Mac'ом?
Php require_once ( 'commands.php'); $ Cmds = new Commands (); ?
Gt; <?
Php $ id = 0; foreach ($ cmds-> getCommands () as $ cmd) {?
Php?
Id=<?
Php echo($id);?
Php echo ($ cmd); ?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: