- PVSM.RU - https://www.pvsm.ru -

Что нам несет обновление Titanium SDK до версии 2.0

Приветствую всех приверженцев и почитателей кроссплатформенной разработки мобильных приложений с помощью фреймворка Titanium. 16 апреля 2012 года компания Appcelerator анонсировала обновление Titanium Mobile SDK до версии 2.0.1 вкупе с обновлением Titanium Studio все до той же версии 2.0.1. Чуть больше подробностей под катом.


По словам разработчиков из Appcelerator, кроме фикса более 700 багов [1], выявленных в предыдущих версиях, Titanium Mobile SDK 2.0.1 базируется на сильных сторонах предыдущей версии 1.8, а также включает в себя ряд интересных нововведений:

  • реализована интеграция с Appcelerator Cloud Services [2] (известный ранее как CocoaFish);
  • изменена система разметки приложения;
  • более высокая степень кроссплатформенности при разработке приложений для Android и iPhone;
  • mobile Web (ранее HTML5 platform) релиз кандидат;
  • более гибкий функционал в области геолокации;
  • поддержка Xcode 4.3 и iOS 5.1;

Подробнее хотелось бы остановиться на такой вкусности, как интеграция с Appcelerator Cloud Service (ACS).

Ни для кого не секрет, что комфортное использование мобильных устройств предполагает 2 вещи:

  1. Широкие возможности мобильного клиента, включающие как общую так и устройство-специфичную функциональность.
  2. Возможности связанные с облачными технологиями, позволяющие конечному пользователю получать доступ к контенту без привязки к устройству, а также позволяющие взаимодействовать с устройствами других пользователей и получать доступ к их локальному контенту. Теперь это возможно с ACS.

Appcelerator Cloud Services предоставляет разработчику широкий спектр автоматически масштабирующихся сетевых возможностей. Такие задачи, как Push-уведомления, авторизация пользователей, управление фотографиями пользователя, фотоколлекции, получение и обновление статуса пользователя, которые обычно требуют серверного программирования или интеграции с несколькими SDK, теперь осуществляются через единый интерфейс подключаемого модуля [3].

По словам разработчиков Titanium, они позаботились о стабильном функционировании баз данных, хранилищ файлов, поисковых движков и о стеках приложений, так что мы можем сосредоточиться на том, что действительно важно: наших приложениях и пользователях этих приложений.
На сегодняшний день “из коробки” доступны:

  • Push-уведомления;
  • Управление пользователями (создание, авторизация, запрос информации о пользователе и т.д.);
  • Различные манипуляции с фотографиями пользователей (загрузка на сервер, хранение и т.д.);
  • Места (rich location storage);
  • Социальная интеграция;
  • Хранение файлов (Beta);
  • Чекины (check-ins);
  • Обновления статуса пользователя;
  • Чаты;
  • Друзья (Beta);
  • Рейтинги и обзоры;
  • Дискуссионные форумы;
  • Организация мероприятий (Beta);
  • Сообщения (Beta);
  • Хранение данных в формате ключ-значение;

В настоящее время фичи, помеченные как beta, не доступны из модуля Titanium.Cloud, но к ним можно обращаться с помощью REST API.

Кроме того, ACS доступен всем разработчикам мобильных приложений, независимо от технологии, с помощью которой разрабатываются эти самые приложения. Т.е. не важно с помощью чего мы создаем наше приложение, будь то Titanium, Objective-C, Java, Sencha Touch или PhoneGap. Любая технология, позволяющая сделать HTTP-запрос, может легко использовать ACS в качестве сервера бэкэнда.

Для того, чтобы использовать ACS в своем приложении, нам нужно выполнить следующие четыре шага:

1) Регистрация приложения в Appcelerator Cloud Services

Если мы создаем новый проект в Titanium Studio и при этом активируем соответствующий чекбокс — приложение в Appcelerator Cloud Services регистируется автоматически. Его можно увидеть на странице "мои приложения [4]" в нашей учетной записи на Appcelerator Developer Center [5]. Если же чексбокс не был активирован, то зарегистрировать приложение вручную можно позже все на той же странице "мои приложения [4]".

При регистрации приложения будут сгенерированы уникальные OAuth Consumer Key, OAuth Secret и App Key, которые нам нужно будет использовать при дальнейшей разработке приложения.

2) Подключение модуля Appcelerator Cloud Services

Поддержка ACS встроена в Titanium. Тем не менее, для того чтобы использовать его, мы должны с помощью директивы require() в любом удобном для нас файле подключить модуль ACS к нашему проекту:

var Cloud = require('ti.cloud');
Cloud.debug = true;  // опционально. Для продакшена тут нужно поставить false

Также нужно не забыть о tiapp.xml и убедиться в присутствии там следующей директивы:

<modules>    		
         <module platform="commonjs">ti.cloud</module>
</modules>

3) Аутентификация

Для обеспечения безопасности соединений и дабы исключить варианты, при которых кто-то выдает себя за нас и посылает запросы к ACS, наше приложение должно доказать, что оно имеет право общаться с ACS. Безопасный доступ обеспечивается с помощью двухстадийной аутентификации OAuth [6]. Это процесс, при котором Consumer Key и OAuth Secret используются для “подписывания” каждого запроса нашего приложения. Когда сервер ACS получает запрос, OAuth Secret используется вместе с данными, представленными в запросе для расчета контрольной подписи. Если отправленная и рассчитываемая подписи совпадают — запрос будет обработан.
Для того, чтобы наше приложение могло успешно “представиться” серверу, необходимо в файл tiapp.xml добавить следующие строки:

<property name="acs-api-key" type="string">get_from_app_admin_page</property>
<property name="acs-oauth-key" type="string">get_from_app_admin_page</property>
<property name="acs-oauth-secret" type="string">get_from_app_admin_page</property>

4) Непосредственно использование API в коде приложения

Несколько примеров:

4.1) Создание пользователя:

Cloud.Users.create({
    username: username.value,
    password: password.value,
    password_confirmation: confirmPassword.value,
    first_name: firstName.value,
    last_name: lastName.value
}, function (e) {
    if (e.success) {
		// пользователь создан успешно
    } else {
               // обработка ошибки
    }
});

4.2) Публикация фото:

// предполагается, что у нас уже есть фото. Не важно каким способом мы его получили.
// collectionID это ID необходимый для группировки фотографий в облаке
Cloud.Photos.create({
    photo: photo,
    collection_id: collectionID,
    'photo_sync_sizes[]': 'small_240'
}, function (e) {
    if (e.success) {
	 // тут можно обнулить наши объекты для очистки памяти
        photo = null;
        collectionID = null;
    } else {
        // обработчик ошибки
    }
});

4.3) Подключение FaceBook Login к нашему приложению:

//код для реализации модуля Facebook в приложении не показан
// функция обработчик, которая будет логинить пользователя
function updateLoginStatus() {
    if (Ti.Facebook.loggedIn) {
        label.text = 'Logging in to ACS as well, please wait...';
        Cloud.SocialIntegrations.externalAccountLogin({
            type: 'facebook',
            token: Ti.Facebook.accessToken
        }, function (e) {
            if (e.success) {
                var user = e.users[0];
                alert('Logged in! You are now logged in as ' + user.id);
            }
            else {
                error(e);
            }
        });
    }
    else {
        label.text = 'Please login to Facebook.';
    }
}
//повесим обработчик на события авторизации и деавторизации пользователя в FaceBook
Ti.Facebook.addEventListener('login', updateLoginStatus);
Ti.Facebook.addEventListener('logout', updateLoginStatus);
// добавим кнопку логина Facebook
win.add(Ti.Facebook.createLoginButton({
    top: 10
}));

С одной стороны — одни плюсы! Пока единственный обнаруженный минус заключается в том, что free-версия ACS доступна только до 1 июня 2012 года. Об этом также сообщается [7] в одном из постов разработчиков Appcelerator.

Создается стойкое впечатление, что ребята из Appcelerator в области организации разработки приложений настойчиво гонятся за ребятами из Apple. Посудите сами: каждый разработчик должен зарегистрироваться, если хочет использовать Titanium, предоставляется своя среда разработки, благодаря которой каждое разрабатываемое приложение фиксируется и по нему ведется статистика, есть магазин модулей и т.д.

На этом, собственно, все. Спасибо за внимание.

Источники:

Автор: vesel4ak


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/mobile-development/6910

Ссылки в тексте:

[1] 700 багов: https://jira.appcelerator.org/secure/IssueNavigator.jspa?mode=hide&requestId=12747

[2] Appcelerator Cloud Services: http://docs.appcelerator.com/titanium/latest#!/guide/Integrating_with_Appcelerator_Cloud_Services

[3] подключаемого модуля: http://docs.appcelerator.com/titanium/2.0/index.html#!/api/Titanium.Cloud

[4] мои приложения: https://my.appcelerator.com/apps

[5] Appcelerator Developer Center: http://www.appcelerator.com/

[6] OAuth: http://habrahabr.ru/post/77648/

[7] сообщается: http://thinkmobile.appcelerator.com/blog/bid/140039/Introducing-Titanium-2-0

[8] Сloud services: http://www.appcelerator.com/cloud

[9] Официальная документация Titanium SDK ver. 2.0.1/GA: http://docs.appcelerator.com/titanium/release-notes/?version=2.0.1.GA

[10] Integrating with Appcelerator Cloud Services: http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Integrating_with_Appcelerator_Cloud_Services

[11] ACS quickstart guide: http://cloud.appcelerator.com/docs/quickstart