Framework
Edisi 1
Ricko Virnanda
Daftar Isi
Sebelum kita memulai pengembangan aplikasi, maka kita perlu melakukan instalisasi terlebih
dahulu. Nah, mari kita lakukan langkah-langkahnya sampai selesai. Good luck..
1. Install Node JS
Apa itu Node JS? Node JS adalah server side scripting berbasiskan bahasa pemrograman
Javascript. Dengan Node JS ini kita dapat membuat berbagai aplikasi layanan web
maupun platform lainnya menggunakan Javascript. Didalam Node JS terdapat NPM atau
Node Package Manager, yaitu paket library untuk memudahkan pengembangan program
yang akan kita buat. Namun kali ini yang akan saya berikan yaitu instalisasi pada
platform windows, mungkin akan menyusul untuk platform Mac OS, atau linux. Hehe..
1.1 Windows
Untuk instalisasi windows kalian dapat mendownload installer Node JS di
https://nodejs.org/en/download/. Jalankan Installernya dan ikuti panduannya
seperti menginstall aplikasi windows lainnya.
Node JS :
node –v
NPM :
npm –v
Apabila nomor versi muncul maka Node JS dan NPM sudah dapat digunakan.
javac –version
Apabila nomor versi muncul maka jdk sudah terinstall.
Jika belum, maka download di website resmi jdk yaitu buka pada halaman :
http://www.oracle.com/technetwork/java/javase/downloads/index.html.
Kemudian pilih Java SE Downloads , lalu pilihlah JDK. Kemudian akan muncul
tampilan dibawah ini, dan pilih Accept License Agreement, lalu klik link download
sesuai jenis Sistem Operasi kalian.
Jika sudah terdownload maka jalankan installernya dan lakukan seperti instalasi
aplikasi windows lainnya.
3. Install Cordova
Cordova adalah sebuah tools yang digunakan untuk membuild aplikasi Javascript ke
Aplikasi Andoid. Salah satu kelebihan Cordova ini yaitu dengan satu Code Aplikasi
Javascript dapat dijadikan aplikasi ke antar platfrom, bisa Android, IOS, Windows
Phone, dll. Buka aplikasi Terminal atau Command Prompt, lalu ketikkan perintah berikut
:
npm install -g cordova
4. Install Ionic
Ionic adalah sebuah framework Javascript yang kita gunakan untuk memudahkan
pembuatan aplikasi android yang akan kita buat. Didalam Ionic Framework terdapat tools
code yang sudah dapat instan kita gunakan dalam bentuk HTML, style atau CSS, dan
library Javascript. Untuk Action Script, Ionic menggunakan framework Angular, kalian
dapat pelajari Angular ini pada halaman https://angular.io/.
Buka aplikasi Terminal atau Command Prompt, lalu ketikkan perintah berikut :
Setelah seluruh penginstalan aplikasi selesai maka kita akan siap untuk melakukan coding atau
developing aplikasi. Penjelasan pembuatan aplikasinya akan saya jelaskan pada Bab selanjutnya,
semangat.. :D
BAB II
Memulai Pembuatan Aplikasi
Setelah kalian melakukan instalisasi maka kita akan langsung melakukan pembuatan aplikasi.
Nah, apabila kalian belum menyelesaikan instalisasi maka saya tidak mensarankan untuk
langsung lanjut dibagian ini.
Seperti yang kalian tahu sendiri, aplikasi yang akan kita buat ini berbasis pada Web atau hasil
akhirnya adalah Hybrid Apps. Berbeda dengan Native Apps, yang dikembangkan pada bahasa
dasar yang digunakan oleh masing-masing platform, misalnya Android menggunakan Java atau
IOS menggunakan Swift, Hybrid Apps ini kita bersih menggunakan Javascript. Pada Ionic yang
kita gunakan ini menggunakan Angular dan Angular ini menggunakan bahasa Typescript. Nah,
pasti bingung apa lagi itu Typescript ? hehe.. Typescript adalah bahasa pemrograman yang mana
memenuhi standar ECMAScript 6 syntax dan mendukung bahasa Javascript, namun bedanya
pada Typescript ini dapat kita gunakan prinsip OOP(Object Oriented Programming) seperti C++
dan Java sehingga mudah kita gunakan sesuai prinsip OOP yaitu mengurangi duplikasi code
memudahkan integrasi code, pembungkusan, abstraksi, penurunan sifat, dan lain-lain banyak
sekali. Namun, pada tutorial kali ini saya tidak akan berpanjang lebar mengenai Typescript, saya
akan lebih fokus pada praktis pembuatan aplikasi menggunakan Ionic, Okey..
1. Memulai Ionic
Ionic menyediakan berbagai template untuk kita melakukan starting pembuatan aplikasi.
Dari gambar diatas merupakan beberapa template starting Ionic, yaitu seperti blank, tabs,
atau menu sesuai kebutuhan yang ada. Namun untuk lebih gampangnya kita gunakan tabs
untuk permulaan dan kebanyakan kebutuhan aplikasi. Buka aplikasi Terminal atau
Command Prompt, lalu ketikkan perintah berikut :
Maka kita sudah memberikan perintah untuk menjadikan aplikasi kita untuk terhubung ke
IOS atau Android.
Kemudian jika muncul pertanyaan lagi “Install the free Ionic Pro SDK and connect your
app?”, maka pilih “n” karena kita tidak membutuhkan Ionic Pro SDK.
Kemudian jika proses Terminal tadi sudah selesai maka masuk ke direktori proyek
tersebut pada Terminal atau Command Prompt, ketikkan perintah :
cd MyApps
Kemudian jalankan aplikasinya dengan perintah :
ionic serve
Jika berhasil maka akan otomatis terbuka pada browser tampilan seperti ini :
Dan pada Command Prompt atau Terminal akan muncul status seperti berikut :
Jika muncul seperti diatas, berarti aplikasi yang kita buat sudah dapat running,
selanjutnya kita akan kembangkan ke tahap berikutnya.
Pada bagian diatas yang saya lingkari adalah source folder yang mana akan kita lakukan
pengkodean.
Kemudian ada folder assets yaitu bisa gunakan untuk menyimpan berbagai gambar,
fonts, atau plugin yang berguna untuk pengembangan aplikasi.
Selanjutnya folder pages merupakan tempat-tempat page atau halaman aplikasi yang
akan kita gunakan.
Kemudian folder theme digunakan untuk kita menyusun tema yang digunakan untuk
mempercantik tampilan. Kemudian file index.html yaitu file html utama, nantinya ini
bisa kita gunakan untuk men-include plugin-plugin html atau css.
Selain dari pada bagian-bagian diatas, nantinya akan kita bahas pada bab selanjutnya
kegunaannya, namun pengembangan utamanya tidak terlepas dari folder-folder diatas.
BAB III
Page dan Basic Layout
Setelah kita memahami basic struktur dari Ionic, nah kita langsung menuju pada pembuatan
page, dan membuat basic layout.
Pada dasarnya pengaturan page utama dapat kita ubah melalu src/app/app.component.ts
Diatas merupakan pengaturan defaultnya untuk page yang tampil, artinya root page atau main
page yang digunakan adalah TabsPage. Pada gambar diatas yang dibulatkan itu adalah file yang
di include kan ke dalam file ini untuk dijadikan root page dan pada garis merah diatas merupakan
konfigurasinya, atau menset variabel rootPage yaitu adalah TabsPage.
Untuk bagian kali ini saya akan membuat sebuah form Login dan didalamnya akan diisi basic
layout form, button, list dll.
1. Page
Pada kali ini akan kita mulai dari menambahkan page, untuk membuat page ketikkan
perintah berikut pada Command Prompt :
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
LoginPage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
LoginPage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
Kemudian tambahkan kedalam app.module.ts anda sesuai code diatas yang berwarna
merah.
Jika sudah, maka langkah selanjutnya adalah menjadikan LoginPage sebagai page utama
saat aplikasi dijalankan.
Buka file app.component.ts pada text editor anda, berikut adalah codenya :
@Component({
templateUrl: 'app.html'
})
export class MyApp {
// rootPage:any = TabPage;
rootPage:any = LoginPage;
Setelah langkah diatas dilakukan, artinya kita telah menjadikan halaman LoginPage
sebagai page utama saat pertama kali dibuka.
Setelah itu buka browser kembali yang sudah di run Ionic app pada bab sebelumnya.
Maka hasilnya akan seperti berikut ini :
Langkah selanjutnya adalah menambahkan komponen-komponen dasar pada aplikasi. Namun
sebelumnya kita perlu menjadikan jendela browser seperti mobile device. Jika menggunakan
chrome maka akan lebih mudah lagi, dengan cara inspect element kemudian klik button toogle
device toolbar dan kemudian aturlah tampilannya sesuai yang kita inginkan. Contoh yang saya
gunakan adalah dibawah ini :
2. Inputs atau Form Element
Bukalah pada teks editor anda src/pages/login/login.html, berikut codingnya :
<ion-header>
</ion-header>
<ion-content padding>
<ion-list>
<img ion-img src="assets/imgs/sample-logo.jpg">
<ion-item>
<ion-label floating>Username</ion-label>
<ion-input type="text"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Password</ion-label>
<ion-input type="password"></ion-input>
</ion-item>
</ion-list>
</ion-content>
Kemudian tambahkan pada file login.html, ubah seperti diatas. Pada coding diatas
terdapat tag img, maka jangan lupa sebelum coding anda menambahkan sebuah sample
logo dan masukkan file tersebut kedalam direktori src/assets/imgs.
Pada coding diatas terdapat tag ion-list yaitu untuk menjadikan satu blok element
tersebut sebagai list dengan style yang telah diatur pada framework Ionic. Kemudian
sama pula pada ion-item yang berarti item-item dari element list.
page-login {
ion-list{
padding-top:2rem;
text-align:center;
p{
color:#666;
}
img{
height:200px;
}
}
}
Kemudian tambahkan pada file login.scss, ubah seperti diatas. Pada file diatas
menggunakan SASS CSS sebagai stylenya, kemudian saya buat bersarang sesuai dengan
tingkatan tag tiap-tiap element htmlnya.
<ion-header>
</ion-header>
<ion-content padding>
<ion-list>
<img ion-img src="assets/imgs/sample-logo.jpg">
<ion-item>
<ion-label floating>Username</ion-label>
<ion-input type="text"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Password</ion-label>
<ion-input type="password"></ion-input>
</ion-item>
</ion-list>
</ion-content>
Buka lagi file login.html, ubah dan tambahkan blok merah yang ada diatas ini.
/**
* Generated class for the LoginPage page.
*
* See https://ionicframework.com/docs/components/#navigation for more info on
* Ionic pages and navigation.
*/
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
constructor(
public navCtrl: NavController,
public navParams: NavParams,
public alertCtrl: AlertController ) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad LoginPage');
}
showAlert() {
let alert = this.alertCtrl.create({
title: 'Confirmation!',
subTitle: 'Yes, Login Success',
buttons: ['OK']
});
alert.present();
}
}
Kemudian pada file login.ts, ubah dan tambahkan blok merah yang ada diatas ini.
Buatlah halaman register seperti pada tutorial pada bab ini. Berikut adalah contohnya
Lanjutkan ke bab selanjutnya jika sudah membuat form register seperti diatas
BAB IV
Navigation & Storage
Setelah kita memahami bagaimana pembuatan konten ionic sederhana melalui form login dan
register. Kita akan melanjukan ke tahap Navigasi dan Penyimpanan. Pada kali ini kalian harus
menyelesaikan dahulu tutorial pada bab sebelumnya untuk melanjut kesini. Oke lets kita mulai
Buka file login.ts pada text editor yang kalian miliki, kemudian tambahkan baris code
pada baris yang berwarna merah dibawah ini
/**
* Generated class for the LoginPage page.
*
* See https://ionicframework.com/docs/components/#navigation for more info on
* Ionic pages and navigation.
*/
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
constructor(
public navCtrl: NavController,
public navParams: NavParams,
public alertCtrl: AlertController) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad LoginPage');
}
showAlert() {
let alert = this.alertCtrl.create({
title: 'Confirmation!',
subTitle: 'Yes, Login Success',
buttons: ['OK']
});
alert.present();
}
gotoRegister()
{
this.navCtrl.push(RegisterPage);
}
}
Sip, lanjut ketik baris kode diatas dengan hati-hati.
Pada coding diatas pertama kita men-inculde kan atau import file register page sesuai
dengan letak dibawah setting Ionic.
Kemudian pada fungsi gotoRegister() kita menggunakan objek class dari Navigation
Controller atau kita inisialkan dengan navCtrl dan menggunakan method push() artinya
kita akan melakukan push page ke page Register.
Selanjutnya kalian buka file login.html , kemudian tambahkan bagian yang berwarna
merah.
<ion-header>
</ion-header>
<ion-content padding>
<ion-list>
<img ion-img src="assets/imgs/sample-logo.jpg">
<ion-item>
<ion-label floating>Username</ion-label>
<ion-input type="text"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Password</ion-label>
<ion-input type="password"></ion-input>
</ion-item>
</ion-list>
</ion-content>
(click)=””
Merupakan event atau action listener yang kita dapat gunakan, selain itu seperti (focus),
(active) dll. Namun pada event diatas berarti ketika di click maka akan melakukan
sebuah perintah, maka diatas jika di click maka akan menjalankan fungsi gotoRegister()
pada file login.ts .
Kemudian kita akan memberikan navigasi pada Page register, berarti navigasi yang
dilakukan bisa dari register ke login setelah sebelumnya login ke registrer.
Pertama buka file register.ts pada direktori pages/register , kemudian lakukan seperti
halnya page login sebelumnya, atau seperti dibawah ini.
/**
* Generated class for the RegisterPage page.
*
* See https://ionicframework.com/docs/components/#navigation for more info on
* Ionic pages and navigation.
*/
@IonicPage()
@Component({
selector: 'page-register',
templateUrl: 'register.html',
})
export class RegisterPage {
ionViewDidLoad() {
console.log('ionViewDidLoad RegisterPage');
}
gotoLogin()
{
this.navCtrl.push(LoginPage);
}
}
Kemudian buka file register.html pada direktori yang sama dan lakukan hal yang
sebelumnya kita lakukan di login.html.
<ion-header>
</ion-header>
<ion-content padding>
<ion-list>
<img ion-img src="assets/imgs/sample-logo.jpg">
<h3>Daftar</h3>
<ion-item>
<ion-label floating>Nama Lengkap</ion-label>
<ion-input type="text”></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Email</ion-label>
<ion-input type="email"> </ion-input>
</ion-item>
<ion-item>
<ion-label floating>Username</ion-label>
<ion-input type="text"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Password</ion-label>
<ion-input type="password"></ion-input>
</ion-item>
</ion-list>
</ion-content>
Setelah melakukan hal diatas maka kita sudah dapat melakukan pindah dari page satu ke
yang lainnya dengan cara push, kemudian adalagi dengan cara pop.
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
LoginPage,
RegisterPage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
IonicStorageModule.forRoot()
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
LoginPage,
RegisterPage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
/**
* Generated class for the RegisterPage page.
*
* See https://ionicframework.com/docs/components/#navigation for more info on
* Ionic pages and navigation.
*/
@IonicPage()
@Component({
selector: 'page-register',
templateUrl: 'register.html',
})
export class RegisterPage {
namaLengkap:any;
email:any;
username:any;
password:any;
constructor(
public navCtrl: NavController,
public navParams: NavParams,
public storage:Storage) {
this.namaLengkap = "";
this.email = "";
this.username = "";
this.password = "";
}
ionViewDidLoad() {
console.log('ionViewDidLoad RegisterPage');
}
gotoLogin()
{
this.navCtrl.push(LoginPage);
}
submit()
{
// fill storage
this.storage.set('namaLengkap',this.namaLengkap);
this.storage.set('email',this.email);
this.storage.set('password',this.password);
this.storage.set('username',this.username);
console.log(this.namaLengkap);
console.log(this.email);
console.log(this.username);
console.log(this.password);
}
viewData()
{
this.storage.get('namaLengkap').then(
(namalengkap) =>
{
console.log('Nama : '+ namalengkap);
}
);
}}
Pada page diatas kita pertama membuat macam-macam variabel untuk data yang
diketikan di form register, seperti namalengkap, email, username, dan password.
Kemudian kita menambahkan library storage pada file import diatas yaitu storage.
Pada coding diatas, kita menggunakan objek storage, kemudian memanggil method set
untuk menyimpan sebuah data. Parameter pertama untuk nama key, kemudian yang
kedua untuk value atau isi data yang di isi pada key tersebut set(‘key’, value).
Contohnya pada this.storage.set('namaLengkap',this.namaLengkap); artinya kita
menyimpan data namaLengkap dengan key valuenya namaLengkap dan seterusnya.
(namalengkap) => pada baris fungsi disamping adalah parameter, setelah kita melakukan
callback, biasanya objek akan mengembalikan nilai, nah kita gunakan ini sebagai
parameter nilai untuk kita gunakan pada baris program dibawahnya. namaLengkap
digunakan untuk parameter dan programnya di bawahnya.
Setelah melakukan hal diatas, form pada register.html belum bisa terhubung ke
register.ts. untuk mengubungkannya untuk input data maka kita perlu menambahkan
ngModel. Mudahnya kita langsung ketikkan pada dibawah ini, tambahkan sesuai yang
berwarna merah
<ion-header>
</ion-header>
<ion-content padding>
<ion-list>
<img ion-img src="assets/imgs/sample-logo.jpg">
<h3>Daftar</h3>
<ion-item>
<ion-label floating>Nama Lengkap</ion-label>
<ion-input type="text" [(ngModel)]="namaLengkap"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Email</ion-label>
<ion-input type="email" [(ngModel)]="email"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Username</ion-label>
<ion-input type="text" [(ngModel)]="username"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Password</ion-label>
<ion-input type="password" [(ngModel)]="password"></ion-input>
</ion-item>
</ion-list>
</ion-content>
Pada ngModel diatas kita samakan dengan nama variabel pada file register.ts.
Hasil koding pada tutorial ini.
Dan jika tutorial pada kali ini berhasil maka jika kita cek storagenya dapat kelihatan hasil seperti
berikut.
Selamat belajaarr...
Latihan
Buatlah autentikasi login menggunakan data yang telah terdaftar pada storage. Berikan status
jika berhasil atau tidaknya. Contoh seperti pada gambar dibawah ini
BAB V
HTTP GET & Cards
Pada bab kali ini kita akan mempelajari HTTP GET dan Cards. Jadi pada kali ini kita akan
membahas bagaimana melakukan koneksi ke server menggunakan HTTP dan kemudian server
mengirim data yang disebut dengan API (Application Interface) dalam bentuk data file JSON
(JavaScript Object Notation) dan barulah kita tampilkan di aplikasi android kita. Metode itu
disebut juga REST(Representational State Transfer) API.
1. HTTP GET
HTTP GET merupakan suatu metode pemanggilan data menggunakan protokol HTTP
dan kemudian data yang dipassing tertera pada url link tersebut. Pada intinya sih dengan
metode ini kita mengirim data ke server dengan passing parameter melalui link url.
Oke kita mulai pertama kali kita setting pada module terlebih dahulu, untuk
mengaktifkan modul HTTP yang telah disediakan oleh angular. Buka app.module.ts
pada folder app. Kemudian tambahkan seperti yang ditandai dengan warna merah.
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
LoginPage,
RegisterPage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
IonicStorageModule.forRoot(),
HttpModule
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
LoginPage,
RegisterPage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
Selanjutnya buka file app.components.ts pada folder app. Kemudian ganti root page
menjadi TabsPage. Atau ubah sesuai yang bertanda merah dibawah ini. Karena kita akan
menggunakan page home.
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage:any = TabsPage;
Jika sudah maka kita pasang modul HTTP tersebut pada file home.ts pada page home,
seperti yang bertanda merah berikut.
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
}
Pada coding diatas mungkin kalian agak asing dengan import 'rxjs/add/operator/map';
. itu adalah Rxjs yang berfungsi untuk memetakan hasil JSON yang didapat dari
pemanggilan HTTP GET.
Kemudian pada file yang sama yaitu home.ts . Ketik lagi seperti dibawah ini.
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
posts: any;
constructor(public navCtrl: NavController, public http: Http) {
this.posts = null;
let url = 'https://newsapi.org/v2/top-
headlines?country=id&apiKey=012f3abefd3f4fdfa926c69792c6357d';
2. Cards
Cards merupakan bentuk elemen yang menyediakan media gambar, tulisan dan judulnya
seperti layaknya sebuah kartu. Contoh penggunaan ini bisa kalian lihat pada post
Facebook atau Instagram kalian yang seolah-olah seperti kartu setiap postnya.
Pada Cards ini berisi konten-konten, seperti gambar, logo, link, header, text dan lain
sebagainya tergantung pada fungsinya.
Pada Bab ini kita akan menggunakan Cards untuk menampilkan konten lalu HTTP untuk
akses datanya dan data akan di sebarkan dan nantinya dalam bentuk Cards ini.
Oke kita langsung saja. Ketik koding berikut ini pada file home.html pada page home
<ion-header>
</ion-header>
<ion-content padding>
<!-- This is Content of cards -->
<ion-card *ngFor="let post of posts">
<ion-item>
<h2 text-wrap ><b> {{ post.title }} </b></h2>
<p> {{ post.author }} </p>
</ion-item>
<img src="{{post.urlToImage}}">
<ion-card-content>
<p>{{post.description}}</p>
</ion-card-content>
<ion-row>
<ion-col>
<button ion-button color="danger" icon-left clear small>
<div>{{post.source.name}}</div>
</button>
</ion-col>
<ion-col>
<a href="{{post.url}}" ion-button icon-left clear small>
<ion-icon name="open"></ion-icon>
<div>Lihat</div>
</a>
</ion-col>
<ion-col center text-center>
<ion-note>
{{post.publishedAt.substr(0,10)}}
</ion-note>
</ion-col>
</ion-row>
</ion-card>
</ion-content>