JavaScript È°¿ëÆÁ
2016.10.13 / 18:13

Å©·Ò Ǫ½Ã ¾Ë¸² ¹è¿öº¸±â – 11. ¾Ë¸² ±â´É ²ô±â

û´ã°³¹ßÀÚ
Ãßõ ¼ö 381

Å©·Ò Ǫ½Ã ¾Ë¸² ¹è¿öº¸±â – 11. ¾Ë¸² ±â´É ²ô±â

¼ø¼­

  • 1. Ǫ½Ã ¼­ºñ½º ±¸µ¶/Ãë¼Ò ¹öÆ° Ãß°¡
  • 2. ±¸µ¶/Ãë¼Ò ÇÔ¼ö¸¦ main.js¿¡ Ãß°¡
  • »ç¿ëÀÚ°¡ ±¸µ¶/Ãë¼Ò¸¦ ÇÒ ¼ö ÀÖµµ·Ï PushSubscription °´Ã¼·ÎºÎÅÍ unsubscribe() ÇÔ¼ö¸¦ ºÒ·¯ ¿É´Ï´Ù.

    1. Ǫ½Ã ¼­ºñ½º ±¸µ¶/Ãë¼Ò ¹öÆ° Ãß°¡

    index.html¿¡ ¾Æ·¡ Äڵ带 Ãß°¡ ÇÕ´Ï´Ù.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!DOCTYPE html>
    <html>
    <head>
      <title>Push Notification codelab</title>
      <link rel="manifest" href="manifest.json">
    </head>
    <body>
      <h1>Push Notification codelab</h1>
      <p>This page must be accessed using HTTPS or via localhost.</p>
      <button disabled>Subscribe</button>
      <script src="js/main.js"></script>
    </body>
    </html>

    2. ±¸µ¶/Ãë¼Ò ÇÔ¼ö¸¦ main.js¿¡ Ãß°¡

    main.jsÆÄÀÏÀ» ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ ÇÕ´Ï´Ù.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    var reg;
    var sub;
    var isSubscribed = false;
    var subscribeButton = document.querySelector('button');
    if ('serviceWorker' in navigator) {
      console.log('Service Worker is supported');
      navigator.serviceWorker.register('sw.js').then(function() {
        return navigator.serviceWorker.ready;
      }).then(function(serviceWorkerRegistration) {
        reg = serviceWorkerRegistration;
        subscribeButton.disabled = false;
        console.log('Service Worker is ready :^)', reg);
      }).catch(function(error) {
        console.log('Service Worker Error :^(', error);
      });
    }
    subscribeButton.addEventListener('click', function() {
      if (isSubscribed) {
        unsubscribe();
      } else {
        subscribe();
      }
    });
    function subscribe() {
      reg.pushManager.subscribe({userVisibleOnly: true}).
      then(function(pushSubscription){
        sub = pushSubscription;
        console.log('Subscribed! Endpoint:', sub.endpoint);
        subscribeButton.textContent = 'Unsubscribe';
        isSubscribed = true;
      });
    }
    function unsubscribe() {
      sub.unsubscribe().then(function(event) {
        subscribeButton.textContent = 'Subscribe';
        console.log('Unsubscribed!', event);
        isSubscribed = false;
      }).catch(function(error) {
        console.log('Error unsubscribing', error);
        subscribeButton.textContent = 'Subscribe';
      });
    }

    ÀÌ ÄÚµå´Â ServiceWorkerRegistration °´Ã¤ regÀÇ °ªÀ» service worker°¡ ¼³Ä¡ µÉ¶§¿¡ ¼³Á¤ÇÏ°í subscribe() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© Ǫ½Ã ¸Þ½ÃÁö¸¦ ±¸µ¶ÇÏ°Ô ÇÕ´Ï´Ù.

    subscribe()ÇÔ¼ö´Â PushSubscription °´Ã¼ subÀ» »ý¼ºÇÏ°í ÀÌ´Â unsubscribe() ÇÔ¼ö¸¦ ÅëÇØ »ç¿ëµË´Ï´Ù.

    ÁÖÀÇ: »ç¿ëÀÚ°¡ ±¸µ¶½Åû/Ãë¼Ò ÇÒ ¶§¿¡ ¸Å¹ø »õ·Î¿î registration ID¸¦ »ý¼ºÇϹǷΠGCM¿¡¼­ ±×¿¡ ¸Â°Ô ´ëÀÀÇØ Áà¾ß ÇÕ´Ï´Ù.