progressive mobile web apps

60

Upload: dynamis-

Post on 06-Jan-2017

2.692 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Progressive Mobile Web Apps
Page 3: Progressive Mobile Web Apps
Page 4: Progressive Mobile Web Apps
Page 8: Progressive Mobile Web Apps
Page 9: Progressive Mobile Web Apps
Page 17: Progressive Mobile Web Apps
Page 19: Progressive Mobile Web Apps
Page 20: Progressive Mobile Web Apps
Page 21: Progressive Mobile Web Apps
Page 22: Progressive Mobile Web Apps
Page 23: Progressive Mobile Web Apps
Page 24: Progressive Mobile Web Apps
Page 25: Progressive Mobile Web Apps
Page 26: Progressive Mobile Web Apps
Page 27: Progressive Mobile Web Apps
Page 30: Progressive Mobile Web Apps
Page 34: Progressive Mobile Web Apps
Page 35: Progressive Mobile Web Apps
Page 37: Progressive Mobile Web Apps

if ('serviceWorker' in navigator) { navigator.serviceWorker.register('sw.js') .then(function(registration) { console.log('Service Worker 登録できた!'); }); }

if ('serviceWorker' in navigator) { var options = {scope: 'sw/'}; navigator.serviceWorker.register('sw.js', options) .then(function(registration) { console.log('sw/ 配下の URL に登録できた!'); }); }

Page 38: Progressive Mobile Web Apps

var CACHE_NAME = 'my-site-cache-v1'; var urlsToCache = [ '/', '/style.css', '/script.js'];

self.addEventListener('install', function(event) { // Perform install steps event.waitUntil( caches.open(CACHE_NAME) .then(function(cache) { console.log('Opened cache'); return cache.addAll(urlsToCache); }) ); });

Page 40: Progressive Mobile Web Apps
Page 42: Progressive Mobile Web Apps

var urlsToCache = [ '/', '/style.css', '/script.js'];self.addEventListener('fetch', function(event) { event.respondWith( caches.match(event.request) .then(function(response) { // Cache hit - return response if (response) { return response; } return fetch(event.request); } ) ); });

Page 46: Progressive Mobile Web Apps
Page 47: Progressive Mobile Web Apps
Page 48: Progressive Mobile Web Apps

{ "short_name": "れっさーもふもふ", "name": "レッサーパンダのもふもふ素敵アプリ!", "icons": [ { "src": "launcher-icon-3x.png", "sizes": "144x144", "type": "image/png" } ], "start_url": "index.html", "display": "standalone" }

Page 50: Progressive Mobile Web Apps
Page 52: Progressive Mobile Web Apps

async function registerForPush() { // Service Worker を登録、 let registration = await navigator.serviceWorker.register('sw.js') // プッシュ通知を購読済みか確認、 let subscription = await registration.pushManager.getSubscription() // 未購読であれば購読リクエスト if (!subscription) { subscription = await registration.pushManager.subscribe() } // サーバ側にも記録 await fetch('/save-push-endpoint', { method: 'post', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(subscription) }) // あとは必要時に subscription.endpoint に POST でプッシュ通知! }

Page 53: Progressive Mobile Web Apps
Page 55: Progressive Mobile Web Apps
Page 56: Progressive Mobile Web Apps
Page 57: Progressive Mobile Web Apps
Page 58: Progressive Mobile Web Apps

HTML5

CSS3

WebGLECMA6

DOM4 HTTP/2

IndexedDB

ServiceWorkers

WAI-ARIA

WebRTC

Presentation

TCP

asm.js

SVG

Audio

Push

ManifestWebVR

DNT

Page 59: Progressive Mobile Web Apps
Page 60: Progressive Mobile Web Apps