Един от основните проблеми, които компаниите срещат при създаването на приложение за смартфон, е мултипликативната цена на изграждане на собствено приложение на различни платформи . Докато хитроумни предни разработчици сме се настроили за разработването на няколко хибридни платформи, които обещават да помогнат за решаването на този проблем, Йонна рамка и Firebase са динамично дуо, което наистина наистина ни дава невероятна гъвкавост при изграждането на приложения за смартфони в реално време, използвайки JavaScript и HTML5.
Този урок представя възможностите на тези многоплатформени инструменти за мобилно развитие и дори предоставя някои примери за Ionic и Firebase.
(Забележка: Тази статия предполага известно запознаване с основите на рамката AngularJS. Ето a страхотна уводна публикация на AngularJS за тези без този опит.)
Йонната рамка се състои от три основни компонента:
Йонийската рамка също е пълна с много полезни CSS компоненти извън кутията.
Поздрави за Ionic за предоставяне на обширна документация, примери и начални видеоклипове, за да опрости кривата на обучение и да накара разработчиците да стартират и работят бързо.
Firebase е бекенд като услуга система без данни за схема, която осигурява синхронизиране на данни в реално време, без да се изисква писане на персонализиран код. Firebase прави голяма част от вашето back-end развитие остаряло, като по този начин значително намалява времето за разработка на няколко платформи.
хакнати номера на кредитни карти с cvv и пощенски код 2017
Основните характеристики и предимства включват:
Firebase предлага и облачни услуги за хостване на предния код, които могат да отделят значително време за внедряване и поддръжка.
Също така си струва да се отбележи това Firebase е придобита от Google този изминал октомври, който му даде значително повече внимание и видимост.
Съквартирантите често споделят разходи и разчитат един на друг по време на нужда. Така че, нека помогнем на съквартирантите да проследят разходите си и да им помогнем да се помирят в края на месеца.
За да направим нещата още по-интересни, нека създадем мултиплатформено мобилно приложение, което ще предоставя актуализации в реално време, така че всеки да може да следи разходите, когато възникнат.
колко прави грим индустрията на година
След като решихме какво искаме да изградим и се запознахме с инструментите, нека да започнем!
Първото нещо, което трябва да направим, е да инсталираме Ionic. Следвайте инструкциите за инсталиране, предоставени на Ionic Приготвяме се да започнем страница. (Имайте предвид, че Ionic има зависимост от NodeJS , така че инструкциите ще изискват да инсталирате и това, ако все още не го имате на машината си).
The 5-минутен урок за AngularFire е чудесно място да започнете да се запознавате с Firebase. И ако сте „калайджия“ или тактилен ученик като мен, може да искате да дърпате моето изпълнение от GitHub и започнете да играете с кода.
За този урок ще използваме пробата tabs
приложение, предоставено като част от йонийската инсталация като основа за нашето приложение. (Можете да стартирате примерното приложение с командата ionic start myApp tabs
.)
Отворете пробата tabs
приложение в любимата ви IDE (използвам Уеб буря ) и нека започнем да го модифицираме, за да създадем приложението ни за съквартиранти.
За примерното ни приложение Ionic и Firebase ще са ни необходими следните три екрана:
![]() | ![]() | ![]() |
Преди да създадем тези екрани, нека премахнем „Екран с подробности за приятели“, предоставен по подразбиране с примерното приложение, както следва:
www/templates/friend-detail.html
файл.www/js/app.js
премахнете (или коментирайте) състоянието на friend-detail.html
.www/js/controllers.js
премахнете FriendDetailCtrl
контролер, който е посочен в състоянието, което сме изтрили.Сега нека променим икони и текстът на селекторите на раздели в долната част на нашия екран да бъде следният:
Това се прави просто, като направите следните промени в www/templates/tabs.html
:
expenses
Преди да свържем данните си с Firebase, нека създадем списък и го обвържем с масив, наречен www/templates/tab-dash.html
чрез добавяне на следния код към {{expense.label}} {{expense.cost}} Total Spent {{getTotal()}} Add
:
DashCtrl
Също така ще трябва да удължим www/js/controllers.js
в expenses
да включва addExpense
масив, както и getTotal
метод и .controller('DashCtrl', function($scope) { $scope.expenses = [{ by: ‘email’, label: ’test’, cost: 10 }]; $scope.addExpense = function(e) { $scope.expenses.push({ by: label: $scope.label, cost: $scope.cost }); $scope.label = ''; $scope.cost = 0; }; $scope.getTotal = function() { var rtnTotal = 0; for (var i = 0; i <$scope.expenses.length; i++) { rtnTotal += $scope.expenses[i].cost; } return rtnTotal; }; })
метод, както следва:
как да уча C++
expenses
addExpense()
array е това, което съхранява елементите в списъка с разходи, expenses
метод добавя нова стойност към getTotal()
масив и tab-friends.html
метод ни дава общата сума на всички елементи в масива.
Подобен набор от промени сега трябва да бъде направен на https://.firebaseio.com
. Опитайте да направите това сами, но ако срещнете проблеми или искате да проверите дали сте направили това правилно, можете да се обърнете към моето изпълнение на GitHub.
Ще ви трябва акаунт във Firebase. Можете да се регистрирате тук за безплатен Firebase „Хакерски план“.
Ако се регистрирате, ще получите своя корен URL , което ще изглежда нещо като www/index.html
.
Активирането на Firebase в нашето приложение изисква два малки мода за нашето приложение.
Първо, трябва да включим Firebase скриптовете в приложението 'firebase'
файл, както следва:
'starter'
След това трябва да добавим модула Firebase към нашето приложение, като добавим angular.module('starter', ['ionic', 'starter.controllers', 'starter.services', 'firebase'])
към списъка в нашия AngularJS www/js/services.js
модул:
.factory('fireBaseData', function($firebase) { var ref = new Firebase('https://luminous-fire-3429.firebaseio.com/'), refExpenses = new Firebase('https://luminous-fire-3429.firebaseio.com/expenses'), refRoomMates = new Firebase('https://luminous-fire-3429.firebaseio.com/room-mates'); return { ref: function() { return ref; }, refExpenses: function() { return refExpenses; }, refRoomMates: function() { return refRoomMates; } } });
Firebase вече е активиран, точно както всеки друг модул AngularJS.
The 5-минутен урок за AngularFire ще ви научи да създавате препратки към данни в контролери. За нашето демонстрационно приложение обаче реших да запазя тези референции в отделна услуга (тъй като това улеснява много поддръжката и актуализацията, ако основният URL адрес се промени). За да създадете тази услуга, добавете следното към expenses
:
room-mates
Горният код добавя три референтни URL адреса. Един за корен и два за колекции, които сме нарекли expenses
и https://.firebaseio.com/expenses
.
Добавянето на нова колекция към Firebase се извършва просто чрез добавяне на името й в края на вашата корен URL . Така че, за да създадете expenses
колекция, която ще ни е необходима, трябва ни само следното:
DashCtrl
Това ще създаде www/js/controllers.js
колекция и след това можем да започнем да добавяме обекти към нея.
Добре, сега можем да включим събирането на разходи от Firebase, за да заменим масива от фиктивни разходи, който създадохме по-рано. Това става чрез модифициране на .controller('DashCtrl', function($scope, fireBaseData, $firebase) { $scope.expenses = $firebase(fireBaseData.refExpenses()).$asArray(); $scope.addExpense = function(e) { $scope.expenses.$add({ by: , label: $scope.label, cost: $scope.cost }); $scope.label = ''; $scope.cost = 0; }; $scope.getTotal = function() { var rtnTotal = 0; for (var i = 0; i <$scope.expenses.length; i++) { rtnTotal += $scope.expenses[i].cost; } return rtnTotal; }; })
в FriendsCtrl
както следва:
ionic run android
Подобен набор от промени трябва да се направи на ionic emulate ios
. Отново препоръчвам да опитате да направите това сами, но ако срещнете проблеми или искате да проверите дали сте направили това правилно, можете да се обърнете към моето изпълнение на GitHub.
За да проверите дали работи, докато стартирате приложението на два различни клиента, добавете нов разход и вижте, че той се показва в списъка и на двата клиента. Ако работи ... у-у-у! Вече успешно свързахте приложението си Ionic с Firebase!
Можете да тествате своето мултиплатформено приложение на различни устройства, като свържете устройство към вашата система и стартирате { 'rules': { '.read': 'auth != null', '.write': 'auth != null' } }
или www/templates/tab-account.html
. Обърнете се към документацията за йони за повече информация относно тествате приложението си .
Въпреки че основната функционалност вече работи, един сериозен проблем е, че нашето приложение в момента е напълно несигурно. Целият свят може да види разходите ви, без да са необходими разрешения или влизания. Това очевидно трябва да бъде разгледано.
Firebase предоставя мощна, но проста рамка за удостоверяване, използвайки „правила“. Има много неща, които могат да бъдат направени с помощта на езика за правила на Firebase. (Вижте Документация за защита на Firebase за повече подробности.)
В нашия случай ще напишем много просто правило, за да блокираме неупълномощените потребители да имат достъп до нашите данни. За да направите това, отворете главния си URL адрес, щракнете върху „Сигурност и правила“ в лявата лента за действие, поставете кода по-долу във вашите правила и щракнете върху Запазване.
как да използвате команди на бот на discord
Email Password Login You are logged in as {{user.password.email}} Logout
Ако стартирате приложението си сега, ще забележите, че няма данни. Можете дори да опитате да проверите заявката си, като използвате инструменти на браузъра, и трябва да видите съобщение в конзолата си, в което се посочва, че не сте упълномощени да преглеждате данните.
Можете да удостоверите вашите потребители, като им позволите да създадат своя собствена комбинация от имейл / парола, или да използват някой от съществуващите им идентификационни данни за вход в Google, Facebook, Twitter или Github. За удостоверяване на имейл / парола, Firebase предлага пълен набор от API методи за промяна на парола, нулиране и др. Повече информация за удостоверяване чрез Firebase можете да намерите в ръководството за Firebase.
За нашето демонстрационно приложение ще създадем два потребителски акаунта чрез интерфейса на Firebase. Това може да стане, като отидете на основния си URL адрес на Firebase и направите следното:
За да активирате интерфейса за вход за вашите потребители, първо добавете следния код към AccountCtrl
:
www/controller.js
След това добавете следното към .controller('AccountCtrl', function($scope, fireBaseData) { $scope.showLoginForm = false; //Checking if user is logged in $scope.user = fireBaseData.ref().getAuth(); if (!$scope.user) { $scope.showLoginForm = true; } //Login method $scope.login = function (em, pwd) { fireBaseData.ref().authWithPassword({ email : em, password : pwd },function(error, authData) { if (error === null) { console.log('User ID: ' + authData.uid + ', Provider: ' + authData.provider); $scope.user = fireBaseData.ref().getAuth(); $scope.showLoginForm = false; $scope.$apply(); } else { console.log('Error authenticating user:', error); } }); }; // Logout method $scope.logout = function () { fireBaseData.ref().unauth(); $scope.showLoginForm = true; }; });
в var r = $firebase(fireBaseData.refRoomMates()).$asArray(); // NOTE: Substitute the email addresses of your two user accounts in the line below r.$add([' [email protected] ',' [email protected] ']);
:
dashCtrl
Едно важно нещо, което трябва да знаете от гледна точка на сигурността, е това Входните данни на Firebase са постоянни по подразбиране . Следователно, ако искате вашият потребител да трябва да влиза всеки път, когато приложението се стартира, ще трябва да промените съответно конфигурацията на Firebase. За да направите това, просто един път след успешно влизане изпълнете следния код:
www/js/controllers.js
Можете да добавите това в контролера на акаунта след успешно влизане или да поставите точка на прекъсване след успешно влизане и да го стартирате в инспектора на конзолата.
Мултиплатформеното мобилно приложение все още липсва една важна функция. Искаме да разграничим разходите ви от тези на вашия съквартирант. След като създадохме два акаунта, просто трябва да филтрираме данните за нашите възгледи.
Първо трябва да модифицираме .controller('DashCtrl', function($scope, fireBaseData, $firebase) { $scope.expenses = $firebase(fireBaseData.refExpenses()).$asArray(); $scope.user = fireBaseData.ref().getAuth(); // ADD MESSAGE METHOD $scope.addExpense = function(e) { $scope.expenses.$add({ by: $scope.user.password.email, label: $scope.label, cost: $scope.cost }); $scope.label = ''; $scope.cost = 0; }; $scope.getTotal = function () { var rtnTotal = 0; for (var i = 0; i <$scope.expenses.length; i++) { rtnTotal += $scope.expenses[i].cost; } return rtnTotal; }; })
в www/templates/tab-dash.html
за да (a) получите данните за текущия потребител в $ scope и (b) да спестите всички допълнителни разходи за текущия потребител:
www/templates/tab-friends.html
След това трябва да добавим филтър в FriendsCtrl
за да покажете само текущите разходи на потребителя:
www/controllers.js
Добре, началният екран вече е перфектен. Потребителят може да вижда и добавя само собствените си разходи.
Последната и последна стъпка е да се даде възможност за споделяне на пълния списък с разходите между съквартирантите. За да направите това, променете .controller('FriendsCtrl', function($scope, fireBaseData, $firebase) { $scope.user = fireBaseData.ref().getAuth(); $scope.expenses = $firebase(fireBaseData.refExpenses()).$asArray(); $scope.roomies = $firebase(fireBaseData.refRoomMates()).$asArray(); $scope.roomies.$loaded().then(function(array) { //array = [[set1_rm1_email, set1_rm2_email], [set2_rm1_email, set2_rm2_email] ...] for (var i = 0; i
кои са 8-те принципа на дизайна
След това модифицирайте
|_+_|в
|_+_|както следва:
Това е! Инсталирайте / актуализирайте приложението както на вашето устройство, така и на устройството на вашия съквартирант и трябва да сте готови!
Нашият прост пример само започва да надрасква повърхността на това, което може да се постигне - и колко лесно може да се постигне - използвайки Ionic и Firebase. Те наистина са мощно дуо за създаване на мултиплатформени приложения за смартфони в реално време, използващи JavaScript и HTML5.
Свързани: Урок за ъглови 6: Нови функции с нова мощност (Пример за пълен стек, включително заден край на Firebase)