Memulai Progressive Web Apps

Terakhir diperbaharui: 02 Jan 2020

Pengantar

Pengalaman offline lengkap, sinkronisasi latar belakang berkala, notifikasi push—fungsi yang biasanya memerlukan aplikasi yang sudah ada di perangkat—akan hadir di web. Service worker menyediakan fondasi teknis yang diperlukan oleh semua fitur ini.

Apa yang dimaksud dengan service worker

Service worker adalah skrip yang dijalankan browser di latar belakang, terpisah dari halaman web, yang membuka pintu ke berbagai fitur yang tidak memerlukan halaman web atau interaksi pengguna. Saat ini, service worker sudah menyertakan berbagai fitur seperti notifikasi push dan sinkronisasi latar belakang. Di masa mendatang, service worker mungkin mendukung fitur lainnya seperti sinkronisasi berkala atau geofencing. Fitur inti yang dibahas dalam tutorial ini adalah kemampuan mencegat dan menangani permintaan jaringan, termasuk mengelola cache respons lewat program.

Service Worker

Siklus hidup service worker

Service worker memiliki siklus hidup yang sepenuhnya terpisah dari halaman web.

Untuk menginstal service worker bagi situs, Anda perlu mendaftarkannya, yang Anda lakukan di JavaScript halaman. Mendaftarkan service worker akan menyebabkan browser memulai langkah penginstalan service worker di latar belakang.

Biasanya selama langkah penginstalan, Anda perlu menyimpan cache beberapa aset statis. Jika semua file berhasil disimpan dalam cache, maka service worker akan terinstal. Jika ada file yang gagal didownload dan disimpan dalam cache, maka langkah penginstalan akan gagal dan service worker tidak akan diaktifkan (yakni tidak akan diinstal). Jika itu terjadi, jangan khawatir, coba lagi lain kali. Namun jika berhasil diinstal, berarti aset statis sudah masuk cache.

Jika sudah terinstal, langkah aktivasi akan menyusul dan ini kesempatan besar untuk menangani manajemen cache lama, yang akan kita bahas di bagian pembaruan service worker.

Setelah langkah aktivasi, service worker akan mengontrol semua halaman yang berada dalam cakupannya, meski halaman yang mendaftarkan service worker untuk pertama kali tidak akan dikontrol hingga dimuat lagi. Setelah dapat dikontrol, service worker akan berada dalam salah satu dari dua keadaan: yaitu service worker akan dihentikan untuk menghemat memori, atau akan menangani peristiwa pengambilan dan pesan yang terjadi saat permintaan jaringan atau pesan dibuat dari halaman Anda.

Android

Android merupakan bahasa pemograman mobile yang sangat populer dan banyak dikembangkan oleh para pengembang perangkat lunak mobile.

Un-ordered list example
  • Lorem ipsum dolor sit amet.
  • Aliquam tincidunt mauris.
  • Ultricies eget vel aliquam libero.
    • Turpis pulvinar
    • Feugiat scelerisque
    • Ut tincidunt
  • Pellentesque habitant morbi.
  • Praesent dapibus, neque id.
Ordered list example
  1. Lorem ipsum dolor sit amet.
  2. Aliquam tincidunt mauris.
  3. Ultricies eget vel aliquam libero.
    • Turpis pulvinar
    • Feugiat scelerisque
    • Ut tincidunt
  4. Pellentesque habitant morbi.
  5. Praesent dapibus, neque id.

iOS

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis.

Code

PrismJS is used as the syntax highlighter here. You can build your own version via their website should you need to.

Useful Tip:

You can use this online HTML entity encoder/decoder to generate your code examples.

[---JavaScript---]

JavaScript merupakan bahasa pemograman yang berbasis client browser. Cara kerjanya, pada saat situs web dijalankan perintah-perintah JavaScript akan dimuat ke browser client. Pada browser client prosedur dan fungsi akan dijalankan serta berkomunikasi ke server menggunakan protocol HTTP. Proses ini populer dengan istilah Asynchronous JavaScript and XML (AJAX). Untuk memenuhi kebutuhan AJAX sudah tersedia libary JavaScript yang sudah teruji dan populer yaitu jQuery. Berikut contoh pemanggilan library jQuery ke halaman web.

<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.min.js"></script>

Contoh koneksi ke API server dengan JavaScript

<script> 
//#######################################################################
//# author 	: Zakiman Hamid  (Copy @ 2017)
//# Function JavaScript menjalankan API server menggunakan getJSON. 
//# Code ini bebeas dikembangkan dan dimodifikasi.
//#----------------------------------------------------------------------
//APIs config
var api_key="30f6558a0309f17fabe3b4570b8e9998";
var api_user="platform";
var domain="https://apis.web.id/jsonp";
var sistem_data_gid="platform";

function connectJSONP(params,callback){ 
	$.getJSON(domain+'?callback=?', params, function(data) {
		callback(data);
	});
}   
</script>

Contoh penggunaan fungsi connectJSONP

<script> 
//#######################################################################
//# author 	: Zakiman Hamid  (Copy @ 2017)
//# Function JavaScript menjalankan API server menggunakan getJSON. 
//# Code ini bebeas dikembangkan dan dimodifikasi.
//#----------------------------------------------------------------------
function appsLogout() {
    var params ={
		//parameter kepala sebagai parameter informasi dan authentikasi
		headers:{
			aplikasi:"sistem",
			format:"json",
			case:"user__json_nonlogin_auth_logout",  //module: user  , case module : json_nonlogin_auth_login
			data_http:$.cookie('data_http'), //wajib ketika akses data menggunakan autentikasi
			token_http:$.cookie('token_http'), //wajib ketika akses data menggunakan autentikasi
			sistem_data_gid:sistem_data_gid, //id group data
			api_user:'', // user API
			api_key:'' //key API
			},
		//parameter input untuk disimpan ke database atau sebagai filter data	
		contents:{ },
		//parameter kaki untuk halaman dan batas record tampil tiap halaman	
		footers:{ }
	}; //parameter
    connectJSONP(params,appsLogoutTheme);
}//end logout

function appsLogoutTheme(data){
	if(data.respon.pesan=="sukses"){
		$.cookie('username', 'null', { expires:1 });
		$.cookie('data_http','0', { expires:1 });
		$.cookie('token_http','0', { expires:1 }); 
		window.location="index.html";
	}else if(data.respon.pesan=="gagal"){
		alert(data.respon.text_msg);
	}
}//end theme
</script>
[---PHP---]

Contoh koneksi ke API server dengan PHP

<?php 
//#######################################################################
//# author 	: Zakiman Hamid  (Copy @ 2017)
//# Class PHP untuk menjalankan API server menggunakan metode CURL. 
//# Code ini bebeas dikembangkan dan dimodifikasi.
//#----------------------------------------------------------------------
CLASS JSONP{
	//tentukan url API
	private $url='https://apis.web.id/jsonp'; //http:// or https://
	
	public function connect($params){				
		$ch = curl_init($this->url);
		curl_setopt($ch,CURLOPT_POST,TRUE);
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
		//curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type: application/json'));
		curl_setopt($ch,CURLOPT_POSTFIELDS,$params);
		curl_setopt_array($ch);
		$result = curl_exec($ch);
		$cs=count(json_decode($result));
		//--try pesan--//
		if(empty($cs)){
			$callback['respon']['pesan']="gagal";
			$callback['respon']['text_msg']="Gagal menghubungi server.";
			return json_encode($callback);
		}else{
			return $result;
		}
	}																		
} 
?>
Penggunaan Class
<?php 
#-> 1. Panggil class jsonp
require_once("jsonp.class.php");
#-> 2. Aktifkan class
$JSONP=new JSONP();
#-> 3. Atur parameter
$params=array(
	//parameter kepala sebagai parameter informasi dan authentikasi
	'headers'=>json_encode(array(
		'aplikasi'=>"sistem",
		'format'=>"json",
		'case'=>"user__json_nonlogin_auth_login",  //module: user  , case module : json_nonlogin_auth_login
		'data_http'=>"LOGIN_COOKIE", //wajib ketika akses data menggunakan autentikasi
		'token_http'=>"LOGIN_COOKIE", //wajib ketika akses data menggunakan autentikasi
		'sistem_data_gid'=>"YOUR_gID", //id group data
		'api_user'=>"YOUR_USERID", // user API
		'api_key'=>"YOUR_KEY" //key API
	)),
	//parameter input untuk disimpan ke database atau sebagai filter data
	'contents'=>json_encode(array(
		'USER_EMAIL'=>"YOUR USERNAME",
		'USER_PWD'=>"YOUR PASSWORD",
		'IP'=>null, //optional
		'USER_LOG_OS'=>null, //optional
		'USER_LOG_DEVICE'=>null, //optional
		'USER_LOG_BROWSER'=>null //optional
	)),
	//parameter kaki untuk halaman dan batas record tampil tiap halaman
	'footers'=>json_encode(array(
		'halaman'=>"1",
		'batas'=>"10"
	))
);
#-> 4. jalankan fungsi connect ke server API  
$result=$JSONP->connect($params);
#-> 5. Cetak hasil array
echo "<pre>".print_r(json_decode($result,true),true)."<pre/>";
?>
Respon : SUKSES

Array
(
    [respon] => Array
        (
            [pesan] => sukses
            [text_msg] => Loading.... 
        )
)											 
Respon : GAGAL
 
Array
(
    [respon] => Array
        (
            [pesan] => gagal
            [text_msg] => Login gagal sepertinya usernama atau password salah 
        )
)												

Live Demo

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.

Aenean imperdiet

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium <code> , Nemo enim ipsam voluptatem quia voluptas link example sit aspernatur aut odit aut fugit.

Morbi posuere

Nunc hendrerit odio quis dignissim efficitur. Proin ut finibus libero. Morbi posuere fringilla felis eget sagittis. Fusce sem orci, cursus in tortor link example tellus vel diam viverra elementum.

Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Link example aenean commodo ligula eget dolor.

Interdum et malesuada

Morbi eget interdum sapien. Donec sed turpis sed nulla lacinia accumsan vitae ut tellus. Aenean vestibulum Link example maximus ipsum vel dignissim. Morbi ornare elit sit amet massa feugiat, viverra dictum ipsum pellentesque.

Tables

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis.

Basic Table
# First Name Last Name Username
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
Bordered Table
# First Name Last Name Username
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
Striped Table
# First Name Last Name Username
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter

Buttons

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec imperdiet turpis. Curabitur aliquet pulvinar ultrices. Etiam at posuere leo. Proin ultrices ex et dapibus feugiat link example aenean purus leo, faucibus at elit vel, aliquet scelerisque dui. Etiam quis elit euismod, imperdiet augue sit amet, imperdiet odio. Aenean sem erat, hendrerit eu gravida id, dignissim ut ante. Nam consequat porttitor libero euismod congue.

Video

Responsive Video 16:9
Responsive Video 4:3

Icons

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec imperdiet turpis. Curabitur aliquet pulvinar ultrices. Etiam at posuere leo. Proin ultrices ex et dapibus feugiat link example aenean purus leo, faucibus at elit vel, aliquet scelerisque dui. Etiam quis elit euismod, imperdiet augue sit amet, imperdiet odio. Aenean sem erat, hendrerit eu gravida id, dignissim ut ante. Nam consequat porttitor libero euismod congue.

Elegant Icon Font
elegant icons
FontAwesome Icon Font
fontawesome

AppKit - Bootstrap Angular Admin Theme for Developers

AppKit Theme

Love this free documentation theme?

Check out AppKit - an Angular admin theme I created with my developer friend Tom Najdek for developers. AppKit uses modern front-end technologies and is packed with useful components and widgets to speed up your app development.

[Tip for developers]: If your project is Open Source, you can use this area to promote your other projects or hold third party adverts like Bootstrap and FontAwesome do!