ServiceWorker.js 1.23 KB
Newer Older
Chok's avatar
Chok committed
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
43
44
45
46
47
48
49
50
var messageChannel;

self.addEventListener('install', function (event) {
  self.skipWaiting();
});

self.addEventListener('push', function (event) {
  // parse incoming message
  var obj = {};
  var pushData = {
    image: 'https://avatars1.githubusercontent.com/u/60365?v=3&s=200',
    additionalData: {}
  };
  if (event.data) {
    obj = event.data.json();
  }

  console.log(obj);

  // convert to push plugin API
  for (var key in obj) {
    if (key === 'title') {
      pushData.title = obj[key];
    } else if (key === 'message' || key === 'body') {
      pushData.message = obj[key];
    } else if (key === 'count' || key === 'msgcnt' || key === 'badge') {
      pushData.count = obj[key];
    } else if (key === 'sound' || key === 'soundname') {
      pushData.sound = obj[key];
    } else if (key === 'image') {
      pushData.image = obj[key];
    } else {
      pushData.additionalData[key] = obj[key];
    }
  }

  event.waitUntil(
    self.registration.showNotification(pushData.title, {
      body: pushData.message,
      icon: pushData.image,
      tag: 'simple-push-demo-notification-tag'
    })
  );

  messageChannel.ports[0].postMessage(pushData);
});

self.addEventListener('message', function (event) {
  messageChannel = event;
});