다음은 웹푸시를 처리하는 pushme 서비스를 이용하는 방법입니다.
PC, 안드로이드, iOS를 지원하고
iOS인 경우는 설치형 PWA를 지원합니다.

https://pushy.me/




let libLoad = Jinja.require.load("pushy.me",{
  "css": [
  ],
  "js": [
    "https://sdk.pushy.me/web/1.0.13/pushy-sdk.js"
  ]
});

//토픽별 발송
form.topicposting=()=>{
    // https://pushy.me/docs/api/send-notifications
  let url = `https://api.pushy.me/push?api_key={userKey}`;
  let data = {
    "to": "/topics/news",
    "data": {
      "message": "Hello World!news"
    },
    "notification": {
      "title": "Test Notification",
      "body": "Hello World news \u270c",
      "badge": 1,
      "sound": "ping.aiff"
    }
  };
  
  Jinja.ajax.proxyPost(url,{
       "url": url,
      "header": {
        'Content-Type': 'application/json'
      },
      "data": Jinja.global.string(data)
   })
}
//개인별발송
form.posting=()=>{
  // https://pushy.me/docs/api/send-notifications
  let url = `https://api.pushy.me/push?api_key={userKey}`;
  let data = {
    "to": "b330bf044365ca1058b7b5",
    "data": {
      "message": "Hello World!11"
    },
    "notification": {
      "title": "Test Notification",
      "body": "Hello World 11 \u270c",
      "badge": 1,
      "sound": "ping.aiff"
    }
  };
  
  Jinja.ajax.proxyPost(url,{
       "url": url,
      "header": {
        'Content-Type': 'application/json'
      },
      "data": Jinja.global.string(data)
   })
}
// 토픽참여
form.topic=async()=>{
  if (Pushy.isRegistered()) {
    //토픽에 등록하기
    Pushy.subscribe('news').catch(function (err) {
      // Notify user of failure
      alert('Subscribe failed: ' + err.message);
    });
  }
}
// 장치등록
form.pushyRegister=async()=>{
  try {

    const deviceToken = await   Pushy.register({ 
      "appId": '{userApi}',
      "serviceWorkerRegistration": Jinja.sw.registration,
    });

    alert('Pushy 등록 완료! 디바이스 토큰: '+ deviceToken);
  } catch (err) {
    alert(err);
  }
}