Download presentation
Presentation is loading. Please wait.
1
Павло Чупірчук
2
Перші комп’ютери Нові горизонти Персональні комп’ютери Кожному Мобільні пристрої Де завгодно «Піраміда Маслоу». Наші дні
3
Перші комп’ютери Мови низького і високого рівня Персональні комп’ютери Кросплатформенність і орієнтованість на ОС Мобільні пристрої Native vs Web
4
Різноманіття платформ A давай створимо свою мобільну OS? Змагання магазинів І відкриємо свій магазин програмок? Але без мережі – як без води
9
Використання особливостей ОС Економія трафіку Робота без підключення Швидкість роботи програми Незалежність від ОС Не потрібна інсталяція Миттєві оновлення Єдиний код, мова Швидкість розробки програми
10
Відкритий web-рушій Вже є на більшості смартфонів і планшетів В ядрі найпопулярніших браузерів Chrome Safari Основа для багатьох програм Mobile Desktop
11
Studio Android deviceProject dir Java Script API Andrid API apk -file Resources html css java script Resources html css java script Resources html css java script Resources html css java script WebKit Android project
12
Продукт Appcelerator Inc. RIA для мобільних пристроїв Android, iOS, Black Berry, Windows Phone Набір специфічних JavaScript API Titanium SDK + Studio Free
14
Папка Resources Файли з кодом і зображення Підпапки: android, iphone, mobileweb, ui… app.js Точка входу tiapp.xml Конфігурація проекту
16
if (Ti.version < 1.8) { alert('Sorry '); } //add a single variable to the global scope var globals = {}; //create a private scope to prevent further polluting the global object (function() { var AppTabGroup = require('ui/AppTabGroup').AppTabGroup, ListWindow = require('ui/ListWindow').ListWindow, AddWindow = require('ui/AddWindow').AddWindow; // Initialize local storage require('db').createDb(); … if (Ti.version < 1.8) { alert('Sorry '); } //add a single variable to the global scope var globals = {}; //create a private scope to prevent further polluting the global object (function() { var AppTabGroup = require('ui/AppTabGroup').AppTabGroup, ListWindow = require('ui/ListWindow').ListWindow, AddWindow = require('ui/AddWindow').AddWindow; // Initialize local storage require('db').createDb(); …
17
globals.tabs = new AppTabGroup({ title : 'Todo', icon : 'images/KS_nav_ui.png', window : new ListWindow({ title : 'Todo', backgroundColor : '#fff', navBarHidden : false, isDone : 0, activity : { onCreateOptionsMenu : function(e) { var menu = e.menu; var menuItem = menu.add({ title : "Add Task" }); menuItem.setIcon("images/ic_menu_add.png"); menuItem.addEventListener("click", function(e) { new AddWindow().open(); }); } }}) globals.tabs = new AppTabGroup({ title : 'Todo', icon : 'images/KS_nav_ui.png', window : new ListWindow({ title : 'Todo', backgroundColor : '#fff', navBarHidden : false, isDone : 0, activity : { onCreateOptionsMenu : function(e) { var menu = e.menu; var menuItem = menu.add({ title : "Add Task" }); menuItem.setIcon("images/ic_menu_add.png"); menuItem.addEventListener("click", function(e) { new AddWindow().open(); }); } }}) }, { title : 'Done', icon : 'images/KS_nav_views.png', window : new ListWindow({ title : 'Done', backgroundColor : '#fff', navBarHidden : false, isDone : 1 }) }); }, { title : 'Done', icon : 'images/KS_nav_views.png', window : new ListWindow({ title : 'Done', backgroundColor : '#fff', navBarHidden : false, isDone : 1 }) }); globals.tabs.open(); })(); globals.tabs.open(); })();
18
exports.AppTabGroup = function() { var self = Ti.UI.createTabGroup(); for (var i = 0, l = arguments.length; i < l; i++) { var tab = Ti.UI.createTab(arguments[i]); if (i === 0) { self.currentTab = tab; } self.addTab(tab); } self.addEventListener('focus', function(e) { self.currentTab = e.tab; }); return self; }; exports.AppTabGroup = function() { var self = Ti.UI.createTabGroup(); for (var i = 0, l = arguments.length; i < l; i++) { var tab = Ti.UI.createTab(arguments[i]); if (i === 0) { self.currentTab = tab; } self.addTab(tab); } self.addEventListener('focus', function(e) { self.currentTab = e.tab; }); return self; };
19
exports.AddWindow = function() { var db = require('db'); var self = Ti.UI.createWindow({ modal: true, title: 'Add Item', backgroundColor: '#fff' }); //var itemField = … //var addButton = … self.add(itemField); self.add(addButton); return self; }; exports.AddWindow = function() { var db = require('db'); var self = Ti.UI.createWindow({ modal: true, title: 'Add Item', backgroundColor: '#fff' }); //var itemField = … //var addButton = … self.add(itemField); self.add(addButton); return self; }; var itemField = Ti.UI.createTextField({ width: '300dp', height: '45dp', top: '20dp', hintText: 'New Item', borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED, returnKeyType: Ti.UI.RETURNKEY_DONE }); itemField.addEventListener('return', function(e) { addTask(itemField.value, self); }); var itemField = Ti.UI.createTextField({ width: '300dp', height: '45dp', top: '20dp', hintText: 'New Item', borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED, returnKeyType: Ti.UI.RETURNKEY_DONE }); itemField.addEventListener('return', function(e) { addTask(itemField.value, self); });
20
exports.AddWindow = function() { var db = require('db'); var self = Ti.UI.createWindow({ modal: true, title: 'Add Item', backgroundColor: '#fff' }); //var itemField = … //var addButton = … self.add(itemField); self.add(addButton); return self; }; exports.AddWindow = function() { var db = require('db'); var self = Ti.UI.createWindow({ modal: true, title: 'Add Item', backgroundColor: '#fff' }); //var itemField = … //var addButton = … self.add(itemField); self.add(addButton); return self; }; var addButton = Ti.UI.createButton({ title: 'Add', width: '300dp', height: '40dp', top: '80dp' }); addButton.addEventListener('click', function() { addTask(itemField.value, self); }); var addButton = Ti.UI.createButton({ title: 'Add', width: '300dp', height: '40dp', top: '80dp' }); addButton.addEventListener('click', function() { addTask(itemField.value, self); }); var addTask = function(value, win) { if (value === '') { alert('Please enter a task first'); return; } require('db').addItem(value); Ti.App.fireEvent('app:updateTables'); win.close(); }; var addTask = function(value, win) { if (value === '') { alert('Please enter a task first'); return; } require('db').addItem(value); Ti.App.fireEvent('app:updateTables'); win.close(); };
21
var platform = Ti.Platform.osname; if (platform !== 'android') { var addBtn = Ti.UI.createButton({ title:'+' }); addBtn.addEventListener('click', function() {new AddWindow().open();}); if (platform === 'mobileweb') { self.layout = 'vertical'; addBtn.height = 40; addBtn.width = 40; addBtn.top = 0; addBtn.right = 10; self.add(addBtn); self.add(tableview); } else{ self.rightNavButton = addBtn; } var platform = Ti.Platform.osname; if (platform !== 'android') { var addBtn = Ti.UI.createButton({ title:'+' }); addBtn.addEventListener('click', function() {new AddWindow().open();}); if (platform === 'mobileweb') { self.layout = 'vertical'; addBtn.height = 40; addBtn.width = 40; addBtn.top = 0; addBtn.right = 10; self.add(addBtn); self.add(tableview); } else{ self.rightNavButton = addBtn; }
22
Єдина основа Єдина мова JavaScript Доступ до системних особливостей Багато документації Одночасна розробка Не потрібно глибоко вникати в нюанси ОС … o Обов’язкова реєстрація o Сертифікація o Прив’язка до онлайну o Застарілі версії SDK o Потрібно встановлювати SDK o …
23
ІнструментНеобхідні знання ПлатформиЦінаОсобливості Touch 2 HTML, CSS, JavaScript iOS, Android, Blackberry Free Інсталяція, локальний сервер HTML, CSS, jQuery Мобільні браузери FreeМобільні сайти HTML, CSS, JavaScript, XML Android, iOS, Mobile Web $15-$50 на місяць Drag and drop розробка (web) HTML and CSS iOS, Android, Windows Phone $79 на місяць або реклама Контент, програмування C++iOS, Android, WP. FreeEclipse, компіляція Ruby iOS, Android, WP, BB FreeMotorola
24
Proxy objects “bridge” Близькість до ОС швидкість функціональність PhoneGap Web view Простота і портативність Native розширення Не всі webkit-ти однаково корисні Titanium
25
http://docs.appcelerator.com/titanium http://docs.appcelerator.com/titanium Хашими С. «Разработка приложений для Android» T. Poulsen K. Whinnery «Building Mobile Applications with Titanium» http://sixrevisions.com/mobile/cross-platform-mobile- apps/ http://sixrevisions.com/mobile/cross-platform-mobile- apps/ http://mashable.com/2010/08/11/cross-platform-mobile- development-tools/ http://mashable.com/2010/08/11/cross-platform-mobile- development-tools/ http://kevinwhinnery.com/post/22764624253/comparing- titanium-and-phonegap http://kevinwhinnery.com/post/22764624253/comparing- titanium-and-phonegap http://tag.microsoft.com/community/blog/t/the_growth_ of_mobile_marketing_and_tagging.aspx http://tag.microsoft.com/community/blog/t/the_growth_ of_mobile_marketing_and_tagging.aspx
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.