Ionic Framework (Cordova)
Позволяет написать одно приложение подходящие для всех платформ.
Содержание
- Ссылки
- Установка
- Создание нового проекта(шаблона)
- Запуск приложения в браузере
- Запуск и Test приложения на Android Studio
- Подключение и использование Ionic Native - SQLite
- Работа с БД(SQlite)
- Приложение для определенных версий Android (API Level)
- Production (--prod)
- Основные комманды
Ссылки
- Мой пример (+ SQlite)
- Angular 2
- Typescript
- Ionic App(ex.)
- Ionic App(ex.2)
- Ionic App(ex.3)
- Ionic App(ex.4)
Установка
npm i cordova ionic -g
Cordova & Ionic - Для использования Ionic Framework надо установить:
- Cordova - оболочка для приложение, точнее браузер который компилируеться под нужную платформу и показывает приложение как веб-страницы
- Ionic - фреймворк, как bootstrap для веба, правдо имеет свои функции, компоненты и другой функционал.
- Android studio(SDK) - (для запуска на Android) желательно ставить на путь указанный в установке, иначе могуть быть траблы с тестировка приложение на виртуальном телефоне и сборкой под Android.
- Java (JDK) - (для запуска на Девайсе) можно ставить в любое место, только нужно установить правильно системную переменную
JAVA_HOME
путь должен быть к папке jdk.
Создание нового проекта(шаблона)
ionic start myapp blank
Создание нового проекта - пустой шаблон (blank). Так же есть другие варианты - tabs, sidemenu, super, conference, tutorial, aws
Запуск приложение в браузере
После создания проекта, надо добавить платформу ([<platform>]
- android, ios). После запустить для проверки в браузере. Так же можно удалить платформу вместо add
поставить rm
ionic cordova platform add [<platform>]
ionic serve
Запуск и Test приложения на Android Studio
Запустить Andoid Studio, зайти в раздел виртуальных устройств, запустить 1 из доступных. Запустить эмуляции на устройстве.
ionic cordova emulate android --consolelogs
Запустит приложение эмуляции платформы android с выводом console.log из кода.
ionic cordova run android --consolelogs
Запустит приложение на подключеном устройстве или в эмуляторе платформы android с выводом console.log из кода.
Подключение и использование Ionic Native- SQLite
ionic cordova emulate android --consolelogs
чтобы видеть ошибки в консоли.
Отдебажить в браузере не выйдет так плагин работает только на девайсе, поэтому надо юзать andoid studio virtual device + комманда К приложению не нужно подкладывать БД, надо заготовить комманды на создание таблиц и прочего и она сама появиться в приложении.
https://ionicframework.com/docs/native/sqlite/
- Сначала нужно установить модули:
ionic cordova plugin add cordova-sqlite-storage
npm install --save @ionic-native/sqlite
- Добавить плагин в приложение
app.module.ts
import { SQLite } from '@ionic-native/sqlite';
@NgModule({
declarations: [
MyApp,
HomePage,
ListPage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
ListPage
],
providers: [
StatusBar,
SplashScreen,
SQLite, // <!-------------------------- Paste SQLite here
{provide: ErrorHandler, useClass: IonicErrorHandler},
]
})
export class AppModule {}
- Использовать
home.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { SQLite, SQLiteObject } from '@ionic-native/sqlite'; // <!----- Import SQLite and SQLiteObject
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
private db: SQLiteObject; // object to Use SQLite after connection to IT
/**********************************************
* __constructor
*
**********************************************/
constructor(public navCtrl : NavController, private sqlite: SQLite) { // <!---------- Make object of SQLite
this.sqlite.create({ name: 'todo.db', location: 'default'})
.then((db: SQLiteObject) => {
this.db = db;
this.createTable();
})
.catch(e => console.log(e));
}
/**********************************************
* Creates Table "tasks" and inserts 1 test record
*
**********************************************/
createTable(){
this.db.executeSql('CREATE TABLE IF NOT EXISTS tasks(`id` INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, `task` TEXT)', {})
.then(() => console.log('Executed SQL1'))
.catch(e => console.log(JSON.stringify(e)));
this.db.executeSql('INSERT INTO tasks( task ) VALUES("Take a nap")', {})
.then(() => console.log('Executed SQL2'))
.catch(e => console.log(JSON.stringify(e)));
}
}
Приложение для определенных версий Android (API Level)
Каждой версии android соотноситься свой API Level. Соответсвенно чем выше API тем свежее версия android. Указать для какой версии andoroid сделано приложения можно так, правдо работает оно или нет, точно неизвестно.
myapp/config.xml - тут указана целевая версия(APi - 19), и минимальная(API - 16)
<preference ..... />
<preference name="android-minSdkVersion" value="16" />
<preference name="android-targetSdkVersion" value="19" />
Работа с БД(Sqlite)
Разница между обычными запросами и запросами с подстановкой ( ? )
//-------------------> Вот здесь подстановка без знака ?, тут надо использовать - .then().catch;
return new Promise(resolve => {
var query = "DELETE FROM tasks WHERE id = "+ id +"";
this.db.executeSql(query, {}).then((s) => {
console.log('Delete Success...', s);
this.toastCtrl.create({
message: 'Task deleted!',
duration: this.duration_toast,
position: 'top'
}).present();
resolve(true);
}).catch((err) => {
console.log('Deleting Error', err);
});
})
//-------------------> Вот здесь подстановка с помощью знака ?, но при этом тут нельзя использовать тогда - .then().catch
return new Promise(resolve => {
var query = "DELETE FROM tasks WHERE id = ?";
this.db.executeSql(query, [id], (s) => {
console.log('Delete Success...', s);
this.toastCtrl.create({
message: 'Task deleted!',
duration: this.duration_toast,
position: 'top'
}).present();
resolve(true);
}, (err) => {
console.log('Deleting Error', err);
});
})
Production (--prod)
В этом режиме есть отличие от обычныго debug, в нем не рабоают подключенные плагины, такие как SQlite, и другие, по этому нужно запускать свои плагины после готовности приложения в файле app.component.ts
, тогда все работает, полный пример по ссылке "Мой пример".
initializeApp() {
this.platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
this.statusBar.styleDefault();
this.splashScreen.hide();
this.sqlite.openDb(); // <!---- open DB
});
}
Основные комманды
ionic start myapp blank
Создание нового проекта - пустой шаблон (blank). Так же есть другие варианты.
ionic cordova platform add [<platform>]
Добавить платформу [<platform>]
- android, ios
ionic serve
Запускает приложение в браузере
ionic generate [<type>] [<name>]
Генерация элементов - [<types>]
- component, directive, page, pipe, provider, tabs; [<name>]
- --no-module, --constants
ionic cordova emulate [<platform>] [<name>]
Запуск эмуляции на запущеном виртуальном девайсе, например в Android Studio запустить один из Virtual Device. [<platform>]
- android, ios; [<name>]
- --livereload, --consolelogs;
ionic cordova run [<platform>] [<name>]
Запуск приложения на подключеном девайсе, если такого нет, то запуститься в Android Studio в Virtual Device. [<platform>]
- android, ios; [<name>]
- --livereload, --consolelogs;
ionic cordova build [<platform>] [<name>]
Подготовка и компиляция приложения. [<platform>]
- android, ios; [<name>]
- --prod, --release;