ã¦ã§ã vs ãã¤ãã£ã
åãæ©è½ãæä¾ããã¢ããªã±ã¼ã·ã§ã³ã§ã、ã¹ãã¼ããã©ã³ä¸ã®ãã©ã¦ã¶ã§åä½ããã®ã、ããã¨ãåä½ã®ã½ããã¦ã§ã¢ã¨ãã¦åä½ããã®ãã¯、大ããªãã¼ãã¨ãã¦ããæ°å¹´è°è«ããã¦ãã¾ãã。
ãã¹ã¯ãããã§ã¯、ãã©ã¦ã¶ã ãã§æ§ã
ãªãã¨ãããªããã®ã¯ããå½ããåã§ã。Chrome OS ã®ããã«、ãã©ã¦ã¶ãã®ãã®ã OS ã«ãã¦ãã¾ããããã®çºå±ã、ã¦ã§ãæè¡ã¯éãã¦ããçµæã¨è¨ãã¾ã。
ããã§ã¯ã¢ãã¤ã«ã§ã¯ã©ãã§ãããã?
ãã㯠Flurry ãè¡ã£ã
調æ»çµæ ã§ã。
ã¢ã¡ãªã«ã®ã¹ãã¼ããã©ã³ ã¦ã¼ã¶ã¼ã使ç¨æéã®å®ã« 80% 以ä¸ããã¤ãã£ã ã¢ããªã±ã¼ã·ã§ã³ã«è²»ãã、ããã«æ¯ã¹ãã¨ã¦ã§ãã®å©ç¨æéã¯ããå
ãã§ãããã¨ããããã¾ã。å©ç¨æéã ããåºæºã«ããã°、è°è«ã®ä½å°ããªããã¤ãã£ã ã¢ããªã±ã¼ã·ã§ã³ã®å§åã«è¦ãã¾ã。
ä¸ä½ãªããªã®ã§ããã?
ç§ãå人çã«ç«ã¦ã仮説ã¯ããã§ã。
ãã¹ã¯ãããã¯åºå¤§ãªæµ·、ã¹ãã¼ããã©ã³ã¯å°ããªå®å®
ãã¹ã¯ãããã§ã¢ããªã±ã¼ã·ã§ã³ã使ãé、ã¦ã¼ã¶ã¼ã¯é常、ãã¼ãã¼ãã¨ãã¦ã¹ã使ãã¾ã。ãã¹ã¯ãããã®ä¸çã§ã¯、ãã¼ãã¼ãããã¦ã¹ãã使ãããªããã°、åºå¤§ãªã¤ã³ã¿ã¼ãããã¨ããæµ·ã®ä¸ãã、èªåã欲ããæ
å ±ããµã¼ãã¹ãèªå¨ã«æ¢ãå½ã¦ããã¨ãã§ãã¾ã。
ããã«å¯¾ãã¹ãã¼ããã©ã³ã§ã¯、æå
1 ã¤ã§æ§ã
ãªãã¨ãããªããªããã°ãªãã¾ãã。ã½ããã¦ã§ã¢ ãã¼ãã¼ãã§æåãæã¤ã ãã§ãã¡ãã£ã¨ããä½æ¥ãªãã、æ¤ç´¢ããã®ã楽ãªä½æ¥ã§ã¯ããã¾ãã。使ãããæ©è½ãã¯ã³ã¿ããã§ããã«ç«ã¡ä¸ããã¨ããã、ã©ãã»ã©æ¥½ã§ããã?
ã¤ã¾ã、ãã¼ãã¼ãã¨ãã¦ã¹ã§ã®æä½ãæ³å®ããããã¹ã¯ããããã、ã¿ããã§ã®æä½ãæ³å®ãããã¹ãã¼ããã©ã³ã¸ã®æé©åããã¤ãã£ã ãã©ãããã©ã¼ã ã®æ¹ãæ©ãé²ãã ããã§ã¯ãªãã、ã¨ãã仮説ã§ã。
ããã§ã¯、ã¦ã§ããããã¢ãã¤ã« ãã¬ã³ããªã¼ã«ãã¦ããããã«、æã
ãã§ãããã¨ã¯ãªãã§ãããã?Chrome ããã©ã¦ã¶ã¨ãã¦æä¾ã§ããæ°ããæ©è½、ã¿ãªãããéçºè
ã¨ãã¦å®è£
ã§ããæ°ããæ©è½ã
ã¨ã¯ã¹ããªã¨ã³ã¹
ã¹ãã¼ãã¨ãªãã©ã¤ã³
ã¨ã³ã²ã¼ã¸ã¡ã³ã
ã¨ãã 3 ã¤ã®ãã¼ãã«åãã¦ãç´¹ä»ãã¦ããã¾ã。
ã¨ã¯ã¹ããªã¨ã³ã¹
ã¦ã§ãã¨ãã¤ãã£ããæ¯è¼ããé、æã大ããç°ãªãã®ã¯ãã®ã¢ã¯ã»ã¹æ¹æ³ã§ã。
ã¦ã§ãã§ã¯æåã®ã¢ã¯ã»ã¹ã®é、æ¤ç´¢ããªã³ã¯ã辿ããã¨ã§ãµã¼ãã¹ã«å°éãã¾ã。ãã¤ãã£ãã§ã¯ãã¼ã±ãããã¬ã¤ã¹ã§ã¤ã³ã¹ãã¼ã«ãããã¨ã«ãã、ãµã¼ãã¹ã«å°éãã¾ã。
ããã§ã¯äºåç®ä»¥éã¯ã©ãã§ãããã?ã¦ã§ãã§ã¯、ããã¯ãã¼ã¯ãã¦ããªãéã、æ¤ç´¢ããªã³ã¯ãããä¸åº¦è¾¿ãå¿
è¦ãããã¾ã。ããã¯ãã¼ã¯ãã¦ããã¨ããã§、ãã©ã«ãæ§é ã辿ããªã©ãããã、æä½ã§ãæ°ã¿ãããå¿
è¦ã§ã。éã«ãã¤ãã£ãã®å ´å、ã¤ã³ã¹ãã¼ã«æ¸ã¿ã®ã¢ããªã±ã¼ã·ã§ã³ã¯ãã¼ã ç»é¢ã«ãããã、ã¢ã¤ã³ã³ãä¸åº¦ã¿ããããã ãã§æ¸ã¿ã¾ã。
ã¤ã³ã¹ãã¼ã«ã®ãã¼ãã«ãé«ãã¨ã¯ãã、ãªãã¼ããã¦ããããã¨ãèããã°、ã¹ãã¼ããã©ã³ã«ããã¦、ãã¤ãã£ãã¢ããªã®ãããªã¢ã¯ã»ã¹æ¹æ³ãçæ³çãªã®ã¯æããã§ãã。ã¦ã§ãã§ãããå®ç¾ãããã¨ã¯ã§ããªããã®ã§ãããã?
ãã¼ã ç»é¢ã«è¿½å
æ¢ã« Chrome ã§å©ç¨ã§ããæ©è½ã«「ãã¼ã ç»é¢ã«è¿½å 」ã¨ãããã®ãããã¾ã。ãããé¸æãããã¨ã§、ã¦ã§ããµã¤ãã®ããã¯ãã¼ã¯ããã¼ã ç»é¢ã«è¿½å ãã、ã¦ã¼ã¶ã¼ã¯ã¯ã³ã¿ããã§ãã©ã¦ã¶ãéã、ã¢ã¯ã»ã¹ã§ããããã«ãªãã¾ã。
ããã«、ããä¸å·¥å¤«å ãããã¨ã§、ããããããã¤ãã£ãã«è¿ãã¨ã¯ã¹ããªã¨ã³ã¹ã«ãããã¨ãã§ãã¾ã。ããã§ç»å ´ããã®ã Web Manifest ã§ã。
manifest.json
{
"name": "Kinlan's Amazing Application ++",
"short_name": "Kinlan's Amaze App",
"icons": [
{
"src": "launcher-icon-3x.png",
"sizes": "144x144",
"type": "image/png"
}
],
"start_url": "index.html",
"display": "standalone"
}
index.html
<link rel="manifest" href="/manifest.json">
Web Manifest 㯠JSON ã§è¨è¿°ãããã¦ã§ããµã¤ãã®ã¡ã¿ ãã¼ã¿ã§、ãµã¼ãã¼ä¸ã«é
ç½®ãããã®ã HTML ãã
link[rel="manifest"]
ã§åç
§ãããã¨ã«ããå¹åãçºæ®ãã¾ã。ä¸è¨ã®ä¾ã§ã¯ã¢ããªã®æ£å¼å称(
name
)、ãã¼ã ç»é¢ã«è¿½å ãããéã®ã·ã§ã¼ããã¼ã (
short_name
)、ã¢ã¤ã³ã³ã®æå®(
icons
)(ç»é¢ãµã¤ãºã«å¿ãã¦è¤æ°æå®å¯è½)、ã¢ã¤ã³ã³ãã¿ããããéã«éã URL(
start_url
)、表示ã¢ã¼ã(
display
)、ãæå®ãã¦ãã¾ã。ãã® Web Manifest ã«ãã、ã¦ã§ããµã¤ãããã¼ã ç»é¢ã«è¿½å ããéã®æåã、ããã¢ãã¤ã« ãã¬ã³ããªã¼ãªãã®ã¸ã¨å¤ãããã¨ãã§ããã®ã§ã。
åè URL ã¯ãã¡ã:
ãã«ã¹ã¯ãªã¼ã³
Web Manifest ã®
display
ã
standalone
ã¨ãããã¨ã§、ãã¼ã ç»é¢ã®ã¢ã¤ã³ã³ããèµ·åããéã« URL ãã¼ãé ã、ãããã¤ãã£ã ã¢ããªã«è¿ãè¦ãç®ã«ãããã¨ãã§ãã¾ã。
ã¤ã³ã¹ãã¼ã« ããã¼
å®ã¯ããã¾ã§ã®ã¨ã¯ã¹ããªã¨ã³ã¹ã¯、iOS ã® Safari ã§ãåæ§ã®ãã¨ãéåæããã§ãã¦ãã¾ãã。ã¨ã¯ãã、ãã¼ã ç»é¢ã«ã¢ã¤ã³ã³ã追å ãã¦ãããã«ã¯、ã¦ã¼ã¶ã¼ã®è½åçãªã¢ã¯ã·ã§ã³ãå¿
è¦ã§、æä½ã§ã 2 åã®ã¿ãããä¼´ããã、決ãã¦ãã使ãããæ©è½ã§ã¯ããã¾ãã。ãã¼ã ç»é¢ã«è¿½å ãããã¨ãä¿ãããã¼ããã¼ã¸ä¸ã«è¡¨ç¤ºãã¦ãããµã¤ããçããã¯ããã¾ãã。
ãã㧠Chrome ã§ã¯、M42 ãããã®「ãã¼ã ç»é¢ã«è¿½å 」ããã©ã¦ã¶ãèªåçã«ä¿ãã¦ãããæ©è½ã追å ãã¾ãã。
Chrome ã«ãã®ããã¼ã表示ãããããã«ã¯、ããã¤ãã®æ¡ä»¶ãããã¾ã。
ã¦ã¼ã¶ã¼ãã¦ã§ããµã¤ãã 1 é±é以å
ã« 2 å訪å
Web Manifest ãåå¨ãã
Service Worker ã使ã£ã¦ãã
HTTPS ã§ãµã¼ãããã¦ãã
※ ãããã®æ¡ä»¶ã¯ããã¾ã§ç¾æç¹ã®ãã®ã§ãã、ä»å¾å¤æ´ãããå¯è½æ§ããããã¨ã«ã注æãã ãã。
åè URL:
ãã¼ãã«ã©ã¼
Chrome ã§ã¯
meta[name="theme-color"]
ã使ããã¨ã§ URL ãã¼ã®è²ãå¤æ´ãããã¨ãã§ãã¾ã。è²ã¯ hex ã®ã«ã©ã¼ ã³ã¼ãã
content
å±æ§ã§æå®ãã¾ã。
<meta name="theme-color" content="#db5945">
ããã« Android 5.0 以éã§ããã°、æè¿å©ç¨ããã¢ããªä¸è¦§ã表示ããéã®è¡¨ç¤ºãããã§æå®ããè²ã§è¡¨ç¤ºãããããã«ãªãã¾ã。
åè URL ã¯ãã¡ã:
ã¹ãã¼ã・ãªãã©ã¤ã³
ã¦ã§ã ã¢ããªã、ãã¤ãã£ã ã¢ããªã®ããã«ãªã½ã¼ã¹ããã¼ã«ã«ã«æããããã¨ã§、èµ·åé度ãåä¸ãããã¨ãã§ãã¾ã。ä½ãæ¹ã«ãã£ã¦ã¯ãªãã©ã¤ã³ã§ãåä½ããããã¨ãã§ããã¯ãã§ã。
ãåç¥ã®ã¨ãã、ããã¯ã¦ã§ãã«ã¨ã£ã¦åãã¦ã®è©¦ã¿ã§ã¯ããã¾ãã。
Application Cache ã¯ãããå®ç¾ãããã¨ããæåã®æ¨æºä»æ§ã§ããã、
æ§ã
ãªåé¡ç¹ãææããããªã© 、ç¾å¨ãåºã使ããã¦ããæ©è½ã¨ã¯è¨ãã¾ãã。
ããã§ä»£æ¿æè¡ã¨ãã¦ç¾å¨æ³¨ç®ãæµ´ã³ã¦ããã®ã、Service Worker ã§ã。
Service Worker ã¨ã¯
Service Worker ã¯ãªãã©ã¤ã³æè¡ãå¯è½ã«ããããã ãã®ãã®ã§ã¯ããã¾ãã。Service Worker ã¨ã¯、ã²ã¨ãã¨ã§è¨ããªãããã§ã:
ã¦ã¼ã¶ã¼ã«è¦ããã¦ã§ããã¼ã¸ã®è£å´ã§åãããã¤ãã³ãé§åã® JavaScript ç°å¢
ã¦ã§ããã¼ã¸ã§ Service Worker ãç»é²ãããã¨ã§、æ§ã
ãªã¤ãã³ããåãåããããã«ãªã、ããã«ä¼´ãä»»æã®åä½ãããã¯ã°ã©ã¦ã³ãã§è¡ããããã«ãªãã¾ã。ä¾ãã°
ã¦ã§ããã¼ã¸ã®ãªã¯ã¨ã¹ãã横åããã¦、ãã¼ã«ã« ãããã·ã®ããã«åä½。
ã¦ã§ããã¼ã¸ãéãã¦ããªãã¦ã、ã¤ãã³ããåãåã、ã¹ã¯ãªãããå®è¡。
Service Worker ããã¯ã°ã©ã¦ã³ãã§åä½ããã¨è¨ã£ã¦ã、常æåãã¦ããããã§ã¯ããã¾ãã。ã¤ãã³ãé§åã«ãªã£ã¦ãã¾ãã®ã§、å種ã¤ãã³ããçºçããã®ã«ä¼´ã、æ§ã
ãªçãå¦çãè¡ããã¨ãã§ãã¾ã。æ³å®ããã¦ããã¦ã¼ã¹ã±ã¼ã¹ã¯æ§ã
ã§ã:
ãã¼ã«ã« ãããã·
ãªãã©ã¤ã³ ãã£ãã·ã¥
ããã·ã¥éç¥
ããã¯ã°ã©ã¦ã³ãåæ
ã¸ãª ãã§ã³ã·ã³ã°
fetch
ã¤ãã³ãã使ãã¨、ããã¥ã¡ã³ãããçºçãããããããªã¯ã¨ã¹ããã¤ãã³ãã¨ãã¦åãåã、ãã¼ã«ã« ãããã·ã¨ãã¦åä½ããããã¨ãã§ãã¾ã。ããã使ãã°、ä¾ãã°æ¬¡ã®ãããªãã¨ãã§ãã¾ã:
ç»é¢ãµã¤ãºãå
ã«åçã« URL ãæ¸ãæãããã¨ã§、ã¬ã¹ãã³ã·ãã«ãµã¤ãºã®ç°ãªãç»åãåå¾ãã
ã¯ã¨ãªã«å¿ãã¦ãã¹ãç¨ã®ã¹ã¿ã ãã¼ã¿ãè¿ã
JavaScript ã®ä¾åé¢ä¿ãåçã«è§£æ±ºã、å¿
è¦ãªãªã½ã¼ã¹ã CDN ãªã©ããåã£ã¦ãã(ããã«ã½ã³ã§åºãã¢ã¤ãã£ã¢)
ãªã、Service Worker ã¯é常ã«å¼·åãªæ©è½ã®ãã、HTTPS ã§ã®ã¿åä½å¯è½(ãããã°ã®ãã localhost ã¯ä¾å¤)ã§ããç¹ã«æ³¨æãã¦ãã ãã。
ãµã³ãã« ã³ã¼ã
ã³ã¼ããè¦ãã®ãä½ãããã¤ã¡ã¼ã¸ã湧ããããã¨æãã¾ãã®ã§、ç°¡åãªä¾ã示ãã¾ã。
navigator.serviceWorker.register('/sw.js')
.then(function(registration) {
// Success!
}).catch(function(error) {
// Error...
});
ãã®ã³ã¼ãã§ã¯、index.html ã«åå¨ãã JavaScript ãã Service Worker ãç»é²ãã¦ãã¾ã。
ç»é²ãæåããã¨、以å¾ãã©ã¦ã¶ã®ããã¯ã°ã©ã¦ã³ã㧠Service Worker ã® JavaScript(ãã®å ´å sw.js)ãåãç¶ãããã¨ã«ãªãã¾ã。
Cache API
ãã® Service Worker ä¸ã§
fetch
ã¤ãã³ããåã、ãã©ã¦ã¶ãããµã¼ãã¼ã«ãªã¯ã¨ã¹ããçºè¡ããã度ã«、ããããããã£ãã·ã¥ãã¦ãããªã½ã¼ã¹ãè¿ããã¨ã§、ã¦ã§ããµã¤ããé«éã«ããã、ãªãã©ã¤ã³ã§å©ç¨ã§ãããããããã¨ãã§ãã¾ã。
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(response) {
return response || fetch(event.request);
})
);
});
ãã®ã³ã¼ãä¾ã§ã¯、ãªã¯ã¨ã¹ãã«å¯¾ã、ããããããã£ãã·ã¥ãã¦ãããªã½ã¼ã¹ããã®ã¾ã¾è¿ãã¦ãã¾ã。ãã¼ã¸ã®æ¬ä½ã§ãã index.html ã§ãããªãã©ã¤ã³ã§åä½ã§ããã®ã Service Worker ã®å¼·åãªç¹ã§ã。
ãªã、Service Worker ã«ãããã£ãã·ã¥æ©è½ã¯ã¦ã§ããã¼ã¸ãã®ãã®ã¨ã¯åãé¢ããã¦ãããã、é対å¿ãã©ã¦ã¶ã§å®è¡ãã¦ã、åç´ã« Service Worker é¨ãåä½ããªãã ãã§、ãã¼ã¸èªä½ã«ã¯åé¡ãçºçãã«ããã¨ããç¹å¾´ãããã¾ã。ãã©ã¦ã¶äºææ§ããã¾ãæ°ã«ããªãã¦ã、対å¿ãã©ã¦ã¶ã«ã ãä»å çã«ã¡ãªãããæä¾ã§ããã®ã ServiceWorker ã®é
åã®ä¸ã¤ã§ã。
åè URL:
ã¨ã³ã²ã¼ã¸ã¡ã³ã
ã¢ãã¤ã«ãã©ãããã©ã¼ã ã§ãµã¼ãã¹ãæä¾ããæ¹ãã¡ãã¦ã§ãã§ã¯ãªããã¤ãã£ããé¸ã¶çç±ã®ã²ã¨ã¤ã«、ããã·ã¥éç¥ãæãããã¾ã。ã¡ã¼ã«ã§ã¯è¦éãããå¯è½æ§ã®ããã¡ãã»ã¼ã¸ã、è身é¢ããæã£ã¦ããæºå¸¯é»è©±ã®ä¸çå°ã¨ãè¨ããå ´æã«å±ããããã®ã§ããã、ã¢ãã¤ã«ã®ããã·ã¥éç¥ã¯å¤§å¤å¼·åã§ã。
ã§ã¯、ãããã¦ã§ãã§å®ç¾ã§ãããã©ãã§ããã?ãããå¯è½ã«ããã®ã Service Worker ã使ã£ãããã·ã¥éç¥æ©è½ã§ã。
ãã¡ãã®ã㢠ã§ã¯ "Enable Push Notifications" ã®ã¹ã¤ãããå
¥ããã¨åæã«、ãã¼ããã·ã§ã³ãæ±ãããã¤ã¢ãã°ã表示ãã、許å¯ãããã¨ãã以éããã·ã¥éç¥ãåä¿¡ãããã¨ãå¯è½ã«ãªãã¾ã。èªå㧠"SEND A PUSH TO GCM VIA XHR" ãã¯ãªãã¯ãã¦åä½ã確èªãã¦ã¿ã¦ãã ãã。
ä»çµã¿ã¯ããã§ã:
ã¦ã¼ã¶ã¼ããµã¼ãã¹ã«ã¢ã¯ã»ã¹ã、ãµã¤ãã®ææ°æ
å ±ãè³¼èªãããã¿ã³ãã¯ãªãã¯
許å¯ãå¾ããã¤ã¢ãã°ã表示ãã、ã¦ã¼ã¶ã¼ã許å¯ãã¾ã。
ä»æ§ä¸ã¯ HTTP Push ã¨å¼ã°ãããããã³ã«ã使ã£ã¦、ãµã¼ãã¼ããããã·ã¥ãè¡ããã¾ã。
ããã、æ¥ç¶ãããµã¼ãã¼ãå¤ããªãã°ãªãã»ã©、å¼µããªããã°ãªããªãã³ãã¯ã·ã§ã³æ°ãå¤ããªã£ã¦ãã¾ããã、Chrome ã§ã¯ Android ã§æ¢ã«ä½¿ããã¦ãã Google Cloud Messaging ã¨ãããµã¼ãã¹ãå©ç¨ãããã¨ã§、ã³ãã¯ã·ã§ã³ãæãã¾ã。
ããã«ãã、端æ«ã«å¿
è¦ãªã³ãã¯ã·ã§ã³ã¯ GCM ã¨ã®ã¿ã¨ãªã、ãµã¼ãã¼ã¯ GCM ãµã¼ãã¼ã« HTTP POST ã使ã£ã¦ã¡ãã»ã¼ã¸ãéä¿¡ããã ãã§、ããã·ã¥ãå¯è½ã«ãªãã¾ã。
Chrome ã§ã¯ç¾ç¶ãã®ãããªå®è£
ã«ãªã£ã¦ãã¾ãã、Service Worker ã¯ãªã¼ãã³ã¹ã¿ã³ãã¼ãã§ãã®ã§、å°æ¥çã« Chrome ãããã«åãããæåã«ãªãããå¤æ´ããã¦ããäºå®ã§ã。
è³¼èªæã®ãµã³ãã« ã³ã¼ã:
navigator.serviceWorker.ready().then(function(sw) {
sw.pushManager.subscribe().then(function(sub) {
// After permission is granted
sub.subscriptionId; // registration Id
sub.endpoint; // GCM URL
});
});
ã¦ã§ããµã¤ããããã·ã¥éç¥ã®è³¼èªãè¡ãã¾ã。ãã®é、ã¦ã¼ã¶ã¼ã«åæãæ±ã、許å¯ãããå ´åã®ã¿、GCM ã¨éä¿¡ãè¡ã、subscription id ãåå¾ãã¾ã。ããã¦ãã® subscription id ããµã¼ãã¼ã«éãã¾ã。
ããã·ã¥åä¿¡æã®ãµã³ãã« ã³ã¼ã:
self.addEventListener('push', function(event) {
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
}
});
});
ãµã¼ãã¼ã¯ãã® subscription id ã使ã£ã¦ GCM ã« Post ã¡ãã»ã¼ã¸ãéããã¨ã§、ããã·ã¥éç¥ãè¡ãã¾ã。
Service Worker ã¯ããã·ã¥éç¥ãã¤ãã³ãã§åãåã、Notifications API ã使ã£ã¦éç¥ã表示ãã¾ã。
åè URL:
Chrome ã«ãããããã·ã¥éç¥ã®ç¾æç¹ã§ã®å¶ç´
Chrome ã®ãã¼ã¸ã§ã³ 42 ããããã·ã¥éç¥ã使ããã¨æ¸ãã¾ããã、ãã®æ®µéã§ã¯æªå®è£
æ©è½ã®å¶ç´ãã¨ã¦ãå¤ãã®ãç¾ç¶ã§ã。ãã¤ãã£ãã¢ããªä¸¦ã¿ã®ããã·ã¥éç¥ãè¡ãããå ´åã¯、ãããã°ããå¾
ã¤å¿
è¦ãããã¾ã。
Push ã¡ãã»ã¼ã¸ã«ãã¼ã¿ãä¹ããããªã
Push ããããéç¥ãåºããªããã°ãªããªã
Notification ã«ãã¼ã¿ãä¹ããããªã
ã¨ã¯ãã、ããã·ã¥éç¥ã¯å¤§å¤å¼·åãªæ©è½ã§ãã®ã§、å®éã«è©¦ã、æ¥ãã¹ãæªæ¥ã«åãããã¨ããªã¹ã¹ã¡ãã¾ã。
SSL ã«ã¤ãã¦
æ¢ã«ãæ°ä»ãã®æ¹ãå¤ãã¨æãã¾ãã、Service Worker ã®å¼·åãªæ©è½ã®å¤ãã¯、ã¦ã§ããµã¤ãã HTTPS ã§ãããã¨ãåæã¨ãã¦ãã¾ã。
HTTPS ã¯、æå·åã証ææ¸ã¨ãã£ãç¨éã ãã§ãªã、「ãã¼ã ç»é¢ã«è¿½å 」ã®ãããããã、Service Worker ã使ããã¨、ããã·ã¥éç¥ã使ããªã©ããéã«、å¿
é æ¡ä»¶ã«ãªã£ã¦ãã¾ã。
「ãã¼ã ç»é¢ã«è¿½å 」ã®ãããã
Service Worker
ããã·ã¥éç¥
æå·å
証ææ¸
ãã®æ©ä¼ã«ãµã¤ãå
¨ä½ã HTTPS ã«ãããã¨ããã²ãæ¤è¨ãã ãã。
ã¾ã¨ã
Web Manifest 㨠theme-color ã使ããã¨ã§、ããªãã®ã¢ãã¤ã« ã¦ã§ããµã¤ãã¯ä»ããã¨ã¯ã¹ããªã¨ã³ã¹ãåä¸ãããã¨ãã§ãã¾ã。ã¾ã、Service Worker ã® Cache API ã使ãã°、æ¢åã®æ©è½ãæãªããã¨ãªã、ã¹ãã¼ãã®æ¹å・ãªãã©ã¤ã³å¯¾å¿ãããã¨ãã§ãã¾ã。å°æ¥ã«åã、HTTPS ãããã·ã¥éç¥ã®å°å
¥ããæ¤è¨ãã ãã。
Posted by
Eiji Kitamura - Developer Relations Team
2015 å¹´ 4 æ 9 æ¥ã«éå¬ããã Google Developers Summit ãã「Service Worker ã§ä½ãææ°ã¢ãã¤ã« ã¦ã§ã ã¨ã¯ã¹ããªã¨ã³ã¹」ããã¤ã¸ã§ã¹ãã§ããã°è¨äºã¨ãã¦ãå±ããã¾ã。
ã¦ã§ã vs ãã¤ãã£ã
åãæ©è½ãæä¾ããã¢ããªã±ã¼ã·ã§ã³ã§ã、ã¹ãã¼ããã©ã³ä¸ã®ãã©ã¦ã¶ã§åä½ããã®ã、ããã¨ãåä½ã®ã½ããã¦ã§ã¢ã¨ãã¦åä½ããã®ãã¯、大ããªãã¼ãã¨ãã¦ããæ°å¹´è°è«ããã¦ãã¾ãã。
ãã¹ã¯ãããã§ã¯、ãã©ã¦ã¶ã ãã§æ§ã
ãªãã¨ãããªããã®ã¯ããå½ããåã§ã。Chrome OS ã®ããã«、ãã©ã¦ã¶ãã®ãã®ã OS ã«ãã¦ãã¾ããããã®çºå±ã、ã¦ã§ãæè¡ã¯éãã¦ããçµæã¨è¨ãã¾ã。
ããã§ã¯ã¢ãã¤ã«ã§ã¯ã©ãã§ãããã?
ãã㯠Flurry ãè¡ã£ã調æ»çµæ ã§ã。
ã¢ã¡ãªã«ã®ã¹ãã¼ããã©ã³ ã¦ã¼ã¶ã¼ã使ç¨æéã®å®ã« 80% 以ä¸ããã¤ãã£ã ã¢ããªã±ã¼ã·ã§ã³ã«è²»ãã、ããã«æ¯ã¹ãã¨ã¦ã§ãã®å©ç¨æéã¯ããå
ãã§ãããã¨ããããã¾ã。å©ç¨æéã ããåºæºã«ããã°、è°è«ã®ä½å°ããªããã¤ãã£ã ã¢ããªã±ã¼ã·ã§ã³ã®å§åã«è¦ãã¾ã。
ä¸ä½ãªããªã®ã§ããã?
ç§ãå人çã«ç«ã¦ã仮説ã¯ããã§ã。
ãã¹ã¯ãããã¯åºå¤§ãªæµ·、ã¹ãã¼ããã©ã³ã¯å°ããªå®å®
ãã¹ã¯ãããã§ã¢ããªã±ã¼ã·ã§ã³ã使ãé、ã¦ã¼ã¶ã¼ã¯é常、ãã¼ãã¼ãã¨ãã¦ã¹ã使ãã¾ã。ãã¹ã¯ãããã®ä¸çã§ã¯、ãã¼ãã¼ãããã¦ã¹ãã使ãããªããã°、åºå¤§ãªã¤ã³ã¿ã¼ãããã¨ããæµ·ã®ä¸ãã、èªåã欲ããæ
å ±ããµã¼ãã¹ãèªå¨ã«æ¢ãå½ã¦ããã¨ãã§ãã¾ã。
ããã«å¯¾ãã¹ãã¼ããã©ã³ã§ã¯、æå
1 ã¤ã§æ§ã
ãªãã¨ãããªããªããã°ãªãã¾ãã。ã½ããã¦ã§ã¢ ãã¼ãã¼ãã§æåãæã¤ã ãã§ãã¡ãã£ã¨ããä½æ¥ãªãã、æ¤ç´¢ããã®ã楽ãªä½æ¥ã§ã¯ããã¾ãã。使ãããæ©è½ãã¯ã³ã¿ããã§ããã«ç«ã¡ä¸ããã¨ããã、ã©ãã»ã©æ¥½ã§ããã?
ã¤ã¾ã、ãã¼ãã¼ãã¨ãã¦ã¹ã§ã®æä½ãæ³å®ããããã¹ã¯ããããã、ã¿ããã§ã®æä½ãæ³å®ãããã¹ãã¼ããã©ã³ã¸ã®æé©åããã¤ãã£ã ãã©ãããã©ã¼ã ã®æ¹ãæ©ãé²ãã ããã§ã¯ãªãã、ã¨ãã仮説ã§ã。
ããã§ã¯、ã¦ã§ããããã¢ãã¤ã« ãã¬ã³ããªã¼ã«ãã¦ããããã«、æã
ãã§ãããã¨ã¯ãªãã§ãããã?Chrome ããã©ã¦ã¶ã¨ãã¦æä¾ã§ããæ°ããæ©è½、ã¿ãªãããéçºè
ã¨ãã¦å®è£
ã§ããæ°ããæ©è½ã
ã¨ã¯ã¹ããªã¨ã³ã¹
ã¹ãã¼ãã¨ãªãã©ã¤ã³
ã¨ã³ã²ã¼ã¸ã¡ã³ã
ã¨ãã 3 ã¤ã®ãã¼ãã«åãã¦ãç´¹ä»ãã¦ããã¾ã。
ã¨ã¯ã¹ããªã¨ã³ã¹
ã¦ã§ãã¨ãã¤ãã£ããæ¯è¼ããé、æã大ããç°ãªãã®ã¯ãã®ã¢ã¯ã»ã¹æ¹æ³ã§ã。
ã¦ã§ãã§ã¯æåã®ã¢ã¯ã»ã¹ã®é、æ¤ç´¢ããªã³ã¯ã辿ããã¨ã§ãµã¼ãã¹ã«å°éãã¾ã。ãã¤ãã£ãã§ã¯ãã¼ã±ãããã¬ã¤ã¹ã§ã¤ã³ã¹ãã¼ã«ãããã¨ã«ãã、ãµã¼ãã¹ã«å°éãã¾ã。
ããã§ã¯äºåç®ä»¥éã¯ã©ãã§ãããã?ã¦ã§ãã§ã¯、ããã¯ãã¼ã¯ãã¦ããªãéã、æ¤ç´¢ããªã³ã¯ãããä¸åº¦è¾¿ãå¿
è¦ãããã¾ã。ããã¯ãã¼ã¯ãã¦ããã¨ããã§、ãã©ã«ãæ§é ã辿ããªã©ãããã、æä½ã§ãæ°ã¿ãããå¿
è¦ã§ã。éã«ãã¤ãã£ãã®å ´å、ã¤ã³ã¹ãã¼ã«æ¸ã¿ã®ã¢ããªã±ã¼ã·ã§ã³ã¯ãã¼ã ç»é¢ã«ãããã、ã¢ã¤ã³ã³ãä¸åº¦ã¿ããããã ãã§æ¸ã¿ã¾ã。
ã¤ã³ã¹ãã¼ã«ã®ãã¼ãã«ãé«ãã¨ã¯ãã、ãªãã¼ããã¦ããããã¨ãèããã°、ã¹ãã¼ããã©ã³ã«ããã¦、ãã¤ãã£ãã¢ããªã®ãããªã¢ã¯ã»ã¹æ¹æ³ãçæ³çãªã®ã¯æããã§ãã。ã¦ã§ãã§ãããå®ç¾ãããã¨ã¯ã§ããªããã®ã§ãããã?
ãã¼ã ç»é¢ã«è¿½å
æ¢ã« Chrome ã§å©ç¨ã§ããæ©è½ã«「ãã¼ã ç»é¢ã«è¿½å 」ã¨ãããã®ãããã¾ã。ãããé¸æãããã¨ã§、ã¦ã§ããµã¤ãã®ããã¯ãã¼ã¯ããã¼ã ç»é¢ã«è¿½å ãã、ã¦ã¼ã¶ã¼ã¯ã¯ã³ã¿ããã§ãã©ã¦ã¶ãéã、ã¢ã¯ã»ã¹ã§ããããã«ãªãã¾ã。
ããã«、ããä¸å·¥å¤«å ãããã¨ã§、ããããããã¤ãã£ãã«è¿ãã¨ã¯ã¹ããªã¨ã³ã¹ã«ãããã¨ãã§ãã¾ã。ããã§ç»å ´ããã®ã Web Manifest ã§ã。
manifest.json
{
"name": "Kinlan's Amazing Application ++",
"short_name": "Kinlan's Amaze App",
"icons": [
{
"src": "launcher-icon-3x.png",
"sizes": "144x144",
"type": "image/png"
}
],
"start_url": "index.html",
"display": "standalone"
}
index.html
<link rel="manifest" href="/manifest.json">
Web Manifest 㯠JSON ã§è¨è¿°ãããã¦ã§ããµã¤ãã®ã¡ã¿ ãã¼ã¿ã§、ãµã¼ãã¼ä¸ã«é
ç½®ãããã®ã HTML ãã link[rel="manifest"]
ã§åç
§ãããã¨ã«ããå¹åãçºæ®ãã¾ã。ä¸è¨ã®ä¾ã§ã¯ã¢ããªã®æ£å¼å称(name
)、ãã¼ã ç»é¢ã«è¿½å ãããéã®ã·ã§ã¼ããã¼ã (short_name
)、ã¢ã¤ã³ã³ã®æå®(icons
)(ç»é¢ãµã¤ãºã«å¿ãã¦è¤æ°æå®å¯è½)、ã¢ã¤ã³ã³ãã¿ããããéã«éã URL(start_url
)、表示ã¢ã¼ã(display
)、ãæå®ãã¦ãã¾ã。ãã® Web Manifest ã«ãã、ã¦ã§ããµã¤ãããã¼ã ç»é¢ã«è¿½å ããéã®æåã、ããã¢ãã¤ã« ãã¬ã³ããªã¼ãªãã®ã¸ã¨å¤ãããã¨ãã§ããã®ã§ã。
åè URL ã¯ãã¡ã:
ãã«ã¹ã¯ãªã¼ã³
Web Manifest ã® display
ã standalone
ã¨ãããã¨ã§、ãã¼ã ç»é¢ã®ã¢ã¤ã³ã³ããèµ·åããéã« URL ãã¼ãé ã、ãããã¤ãã£ã ã¢ããªã«è¿ãè¦ãç®ã«ãããã¨ãã§ãã¾ã。
ã¤ã³ã¹ãã¼ã« ããã¼
å®ã¯ããã¾ã§ã®ã¨ã¯ã¹ããªã¨ã³ã¹ã¯、iOS ã® Safari ã§ãåæ§ã®ãã¨ãéåæããã§ãã¦ãã¾ãã。ã¨ã¯ãã、ãã¼ã ç»é¢ã«ã¢ã¤ã³ã³ã追å ãã¦ãããã«ã¯、ã¦ã¼ã¶ã¼ã®è½åçãªã¢ã¯ã·ã§ã³ãå¿
è¦ã§、æä½ã§ã 2 åã®ã¿ãããä¼´ããã、決ãã¦ãã使ãããæ©è½ã§ã¯ããã¾ãã。ãã¼ã ç»é¢ã«è¿½å ãããã¨ãä¿ãããã¼ããã¼ã¸ä¸ã«è¡¨ç¤ºãã¦ãããµã¤ããçããã¯ããã¾ãã。
ãã㧠Chrome ã§ã¯、M42 ãããã®「ãã¼ã ç»é¢ã«è¿½å 」ããã©ã¦ã¶ãèªåçã«ä¿ãã¦ãããæ©è½ã追å ãã¾ãã。
Chrome ã«ãã®ããã¼ã表示ãããããã«ã¯、ããã¤ãã®æ¡ä»¶ãããã¾ã。
ã¦ã¼ã¶ã¼ãã¦ã§ããµã¤ãã 1 é±é以å
ã« 2 å訪å
Web Manifest ãåå¨ãã
Service Worker ã使ã£ã¦ãã
HTTPS ã§ãµã¼ãããã¦ãã
※ ãããã®æ¡ä»¶ã¯ããã¾ã§ç¾æç¹ã®ãã®ã§ãã、ä»å¾å¤æ´ãããå¯è½æ§ããããã¨ã«ã注æãã ãã。
åè URL:
ãã¼ãã«ã©ã¼
Chrome ã§ã¯ meta[name="theme-color"]
ã使ããã¨ã§ URL ãã¼ã®è²ãå¤æ´ãããã¨ãã§ãã¾ã。è²ã¯ hex ã®ã«ã©ã¼ ã³ã¼ãã content
å±æ§ã§æå®ãã¾ã。
<meta name="theme-color" content="#db5945">
ããã« Android 5.0 以éã§ããã°、æè¿å©ç¨ããã¢ããªä¸è¦§ã表示ããéã®è¡¨ç¤ºãããã§æå®ããè²ã§è¡¨ç¤ºãããããã«ãªãã¾ã。
åè URL ã¯ãã¡ã:
ã¹ãã¼ã・ãªãã©ã¤ã³
ã¦ã§ã ã¢ããªã、ãã¤ãã£ã ã¢ããªã®ããã«ãªã½ã¼ã¹ããã¼ã«ã«ã«æããããã¨ã§、èµ·åé度ãåä¸ãããã¨ãã§ãã¾ã。ä½ãæ¹ã«ãã£ã¦ã¯ãªãã©ã¤ã³ã§ãåä½ããããã¨ãã§ããã¯ãã§ã。
ãåç¥ã®ã¨ãã、ããã¯ã¦ã§ãã«ã¨ã£ã¦åãã¦ã®è©¦ã¿ã§ã¯ããã¾ãã。Application Cache ã¯ãããå®ç¾ãããã¨ããæåã®æ¨æºä»æ§ã§ããã、æ§ã
ãªåé¡ç¹ãææããããªã© 、ç¾å¨ãåºã使ããã¦ããæ©è½ã¨ã¯è¨ãã¾ãã。
ããã§ä»£æ¿æè¡ã¨ãã¦ç¾å¨æ³¨ç®ãæµ´ã³ã¦ããã®ã、Service Worker ã§ã。
Service Worker ã¨ã¯
Service Worker ã¯ãªãã©ã¤ã³æè¡ãå¯è½ã«ããããã ãã®ãã®ã§ã¯ããã¾ãã。Service Worker ã¨ã¯、ã²ã¨ãã¨ã§è¨ããªãããã§ã:
ã¦ã¼ã¶ã¼ã«è¦ããã¦ã§ããã¼ã¸ã®è£å´ã§åãããã¤ãã³ãé§åã® JavaScript ç°å¢
ã¦ã§ããã¼ã¸ã§ Service Worker ãç»é²ãããã¨ã§、æ§ã
ãªã¤ãã³ããåãåããããã«ãªã、ããã«ä¼´ãä»»æã®åä½ãããã¯ã°ã©ã¦ã³ãã§è¡ããããã«ãªãã¾ã。ä¾ãã°
ã¦ã§ããã¼ã¸ã®ãªã¯ã¨ã¹ãã横åããã¦、ãã¼ã«ã« ãããã·ã®ããã«åä½。
ã¦ã§ããã¼ã¸ãéãã¦ããªãã¦ã、ã¤ãã³ããåãåã、ã¹ã¯ãªãããå®è¡。
Service Worker ããã¯ã°ã©ã¦ã³ãã§åä½ããã¨è¨ã£ã¦ã、常æåãã¦ããããã§ã¯ããã¾ãã。ã¤ãã³ãé§åã«ãªã£ã¦ãã¾ãã®ã§、å種ã¤ãã³ããçºçããã®ã«ä¼´ã、æ§ã
ãªçãå¦çãè¡ããã¨ãã§ãã¾ã。æ³å®ããã¦ããã¦ã¼ã¹ã±ã¼ã¹ã¯æ§ã
ã§ã:
ãã¼ã«ã« ãããã·
ãªãã©ã¤ã³ ãã£ãã·ã¥
ããã·ã¥éç¥
ããã¯ã°ã©ã¦ã³ãåæ
ã¸ãª ãã§ã³ã·ã³ã°
fetch
ã¤ãã³ãã使ãã¨、ããã¥ã¡ã³ãããçºçãããããããªã¯ã¨ã¹ããã¤ãã³ãã¨ãã¦åãåã、ãã¼ã«ã« ãããã·ã¨ãã¦åä½ããããã¨ãã§ãã¾ã。ããã使ãã°、ä¾ãã°æ¬¡ã®ãããªãã¨ãã§ãã¾ã:
ç»é¢ãµã¤ãºãå
ã«åçã« URL ãæ¸ãæãããã¨ã§、ã¬ã¹ãã³ã·ãã«ãµã¤ãºã®ç°ãªãç»åãåå¾ãã
ã¯ã¨ãªã«å¿ãã¦ãã¹ãç¨ã®ã¹ã¿ã ãã¼ã¿ãè¿ã
JavaScript ã®ä¾åé¢ä¿ãåçã«è§£æ±ºã、å¿
è¦ãªãªã½ã¼ã¹ã CDN ãªã©ããåã£ã¦ãã(ããã«ã½ã³ã§åºãã¢ã¤ãã£ã¢)
ãªã、Service Worker ã¯é常ã«å¼·åãªæ©è½ã®ãã、HTTPS ã§ã®ã¿åä½å¯è½(ãããã°ã®ãã localhost ã¯ä¾å¤)ã§ããç¹ã«æ³¨æãã¦ãã ãã。
ãµã³ãã« ã³ã¼ã
ã³ã¼ããè¦ãã®ãä½ãããã¤ã¡ã¼ã¸ã湧ããããã¨æãã¾ãã®ã§、ç°¡åãªä¾ã示ãã¾ã。
navigator.serviceWorker.register('/sw.js')
.then(function(registration) {
// Success!
}).catch(function(error) {
// Error...
});
ãã®ã³ã¼ãã§ã¯、index.html ã«åå¨ãã JavaScript ãã Service Worker ãç»é²ãã¦ãã¾ã。
ç»é²ãæåããã¨、以å¾ãã©ã¦ã¶ã®ããã¯ã°ã©ã¦ã³ã㧠Service Worker ã® JavaScript(ãã®å ´å sw.js)ãåãç¶ãããã¨ã«ãªãã¾ã。
Cache API
ãã® Service Worker ä¸ã§ fetch
ã¤ãã³ããåã、ãã©ã¦ã¶ãããµã¼ãã¼ã«ãªã¯ã¨ã¹ããçºè¡ããã度ã«、ããããããã£ãã·ã¥ãã¦ãããªã½ã¼ã¹ãè¿ããã¨ã§、ã¦ã§ããµã¤ããé«éã«ããã、ãªãã©ã¤ã³ã§å©ç¨ã§ãããããããã¨ãã§ãã¾ã。
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(response) {
return response || fetch(event.request);
})
);
});
ãã®ã³ã¼ãä¾ã§ã¯、ãªã¯ã¨ã¹ãã«å¯¾ã、ããããããã£ãã·ã¥ãã¦ãããªã½ã¼ã¹ããã®ã¾ã¾è¿ãã¦ãã¾ã。ãã¼ã¸ã®æ¬ä½ã§ãã index.html ã§ãããªãã©ã¤ã³ã§åä½ã§ããã®ã Service Worker ã®å¼·åãªç¹ã§ã。
ãªã、Service Worker ã«ãããã£ãã·ã¥æ©è½ã¯ã¦ã§ããã¼ã¸ãã®ãã®ã¨ã¯åãé¢ããã¦ãããã、é対å¿ãã©ã¦ã¶ã§å®è¡ãã¦ã、åç´ã« Service Worker é¨ãåä½ããªãã ãã§、ãã¼ã¸èªä½ã«ã¯åé¡ãçºçãã«ããã¨ããç¹å¾´ãããã¾ã。ãã©ã¦ã¶äºææ§ããã¾ãæ°ã«ããªãã¦ã、対å¿ãã©ã¦ã¶ã«ã ãä»å çã«ã¡ãªãããæä¾ã§ããã®ã ServiceWorker ã®é
åã®ä¸ã¤ã§ã。
åè URL:
ã¨ã³ã²ã¼ã¸ã¡ã³ã
ã¢ãã¤ã«ãã©ãããã©ã¼ã ã§ãµã¼ãã¹ãæä¾ããæ¹ãã¡ãã¦ã§ãã§ã¯ãªããã¤ãã£ããé¸ã¶çç±ã®ã²ã¨ã¤ã«、ããã·ã¥éç¥ãæãããã¾ã。ã¡ã¼ã«ã§ã¯è¦éãããå¯è½æ§ã®ããã¡ãã»ã¼ã¸ã、è身é¢ããæã£ã¦ããæºå¸¯é»è©±ã®ä¸çå°ã¨ãè¨ããå ´æã«å±ããããã®ã§ããã、ã¢ãã¤ã«ã®ããã·ã¥éç¥ã¯å¤§å¤å¼·åã§ã。
ã§ã¯、ãããã¦ã§ãã§å®ç¾ã§ãããã©ãã§ããã?ãããå¯è½ã«ããã®ã Service Worker ã使ã£ãããã·ã¥éç¥æ©è½ã§ã。
ãã¡ãã®ã㢠ã§ã¯ "Enable Push Notifications" ã®ã¹ã¤ãããå
¥ããã¨åæã«、ãã¼ããã·ã§ã³ãæ±ãããã¤ã¢ãã°ã表示ãã、許å¯ãããã¨ãã以éããã·ã¥éç¥ãåä¿¡ãããã¨ãå¯è½ã«ãªãã¾ã。èªå㧠"SEND A PUSH TO GCM VIA XHR" ãã¯ãªãã¯ãã¦åä½ã確èªãã¦ã¿ã¦ãã ãã。
ä»çµã¿ã¯ããã§ã:
ã¦ã¼ã¶ã¼ããµã¼ãã¹ã«ã¢ã¯ã»ã¹ã、ãµã¤ãã®ææ°æ
å ±ãè³¼èªãããã¿ã³ãã¯ãªãã¯
許å¯ãå¾ããã¤ã¢ãã°ã表示ãã、ã¦ã¼ã¶ã¼ã許å¯ãã¾ã。
ä»æ§ä¸ã¯ HTTP Push ã¨å¼ã°ãããããã³ã«ã使ã£ã¦、ãµã¼ãã¼ããããã·ã¥ãè¡ããã¾ã。
ããã、æ¥ç¶ãããµã¼ãã¼ãå¤ããªãã°ãªãã»ã©、å¼µããªããã°ãªããªãã³ãã¯ã·ã§ã³æ°ãå¤ããªã£ã¦ãã¾ããã、Chrome ã§ã¯ Android ã§æ¢ã«ä½¿ããã¦ãã Google Cloud Messaging ã¨ãããµã¼ãã¹ãå©ç¨ãããã¨ã§、ã³ãã¯ã·ã§ã³ãæãã¾ã。
ããã«ãã、端æ«ã«å¿
è¦ãªã³ãã¯ã·ã§ã³ã¯ GCM ã¨ã®ã¿ã¨ãªã、ãµã¼ãã¼ã¯ GCM ãµã¼ãã¼ã« HTTP POST ã使ã£ã¦ã¡ãã»ã¼ã¸ãéä¿¡ããã ãã§、ããã·ã¥ãå¯è½ã«ãªãã¾ã。
Chrome ã§ã¯ç¾ç¶ãã®ãããªå®è£
ã«ãªã£ã¦ãã¾ãã、Service Worker ã¯ãªã¼ãã³ã¹ã¿ã³ãã¼ãã§ãã®ã§、å°æ¥çã« Chrome ãããã«åãããæåã«ãªãããå¤æ´ããã¦ããäºå®ã§ã。
è³¼èªæã®ãµã³ãã« ã³ã¼ã:
navigator.serviceWorker.ready().then(function(sw) {
sw.pushManager.subscribe().then(function(sub) {
// After permission is granted
sub.subscriptionId; // registration Id
sub.endpoint; // GCM URL
});
});
ã¦ã§ããµã¤ããããã·ã¥éç¥ã®è³¼èªãè¡ãã¾ã。ãã®é、ã¦ã¼ã¶ã¼ã«åæãæ±ã、許å¯ãããå ´åã®ã¿、GCM ã¨éä¿¡ãè¡ã、subscription id ãåå¾ãã¾ã。ããã¦ãã® subscription id ããµã¼ãã¼ã«éãã¾ã。
ããã·ã¥åä¿¡æã®ãµã³ãã« ã³ã¼ã:
self.addEventListener('push', function(event) {
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
}
});
});
ãµã¼ãã¼ã¯ãã® subscription id ã使ã£ã¦ GCM ã« Post ã¡ãã»ã¼ã¸ãéããã¨ã§、ããã·ã¥éç¥ãè¡ãã¾ã。
Service Worker ã¯ããã·ã¥éç¥ãã¤ãã³ãã§åãåã、Notifications API ã使ã£ã¦éç¥ã表示ãã¾ã。
åè URL:
Chrome ã«ãããããã·ã¥éç¥ã®ç¾æç¹ã§ã®å¶ç´
Chrome ã®ãã¼ã¸ã§ã³ 42 ããããã·ã¥éç¥ã使ããã¨æ¸ãã¾ããã、ãã®æ®µéã§ã¯æªå®è£
æ©è½ã®å¶ç´ãã¨ã¦ãå¤ãã®ãç¾ç¶ã§ã。ãã¤ãã£ãã¢ããªä¸¦ã¿ã®ããã·ã¥éç¥ãè¡ãããå ´åã¯、ãããã°ããå¾
ã¤å¿
è¦ãããã¾ã。
Push ã¡ãã»ã¼ã¸ã«ãã¼ã¿ãä¹ããããªã
Push ããããéç¥ãåºããªããã°ãªããªã
Notification ã«ãã¼ã¿ãä¹ããããªã
ã¨ã¯ãã、ããã·ã¥éç¥ã¯å¤§å¤å¼·åãªæ©è½ã§ãã®ã§、å®éã«è©¦ã、æ¥ãã¹ãæªæ¥ã«åãããã¨ããªã¹ã¹ã¡ãã¾ã。
SSL ã«ã¤ãã¦
æ¢ã«ãæ°ä»ãã®æ¹ãå¤ãã¨æãã¾ãã、Service Worker ã®å¼·åãªæ©è½ã®å¤ãã¯、ã¦ã§ããµã¤ãã HTTPS ã§ãããã¨ãåæã¨ãã¦ãã¾ã。
HTTPS ã¯、æå·åã証ææ¸ã¨ãã£ãç¨éã ãã§ãªã、「ãã¼ã ç»é¢ã«è¿½å 」ã®ãããããã、Service Worker ã使ããã¨、ããã·ã¥éç¥ã使ããªã©ããéã«、å¿
é æ¡ä»¶ã«ãªã£ã¦ãã¾ã。
「ãã¼ã ç»é¢ã«è¿½å 」ã®ãããã
Service Worker
ããã·ã¥éç¥
æå·å
証ææ¸
ãã®æ©ä¼ã«ãµã¤ãå
¨ä½ã HTTPS ã«ãããã¨ããã²ãæ¤è¨ãã ãã。
ã¾ã¨ã
Web Manifest 㨠theme-color ã使ããã¨ã§、ããªãã®ã¢ãã¤ã« ã¦ã§ããµã¤ãã¯ä»ããã¨ã¯ã¹ããªã¨ã³ã¹ãåä¸ãããã¨ãã§ãã¾ã。ã¾ã、Service Worker ã® Cache API ã使ãã°、æ¢åã®æ©è½ãæãªããã¨ãªã、ã¹ãã¼ãã®æ¹å・ãªãã©ã¤ã³å¯¾å¿ãããã¨ãã§ãã¾ã。å°æ¥ã«åã、HTTPS ãããã·ã¥éç¥ã®å°å
¥ããæ¤è¨ãã ãã。
Posted by Eiji Kitamura - Developer Relations Team