4

크롬의 푸시 알림에 대해 최근에 출시 된 FCM messaging 지원을 사용하고 있습니다. 내 앱이 배경에있을 때 알림을 받지만 알림을 클릭해도 아무런 반응이 없습니다. 사용자가 알림을 클릭 할 때 열어야하는 URL을 지정하는 방법은 무엇입니까? (필자는 notificationclick 이벤트를 사용하여 순수 서비스 노동자 개념을 사용하여 수행, 내가 FCM messaging를 사용하는 것을 수행하는 방법을 알고 싶어 그 방법을 이해.)FCM : 알림을 클릭 할 수 없습니다.

messaging.setBackgroundMessageHandler(function(payload) { 
    var data = payload || {}; 
    var shinyData = decoder.run(data); 

    console.log('[firebase-messaging-sw.js] Received background message ', shinyData); 

    return self.registration.showNotification(shinyData.title, { 
    body: shinyData.body, 
    icon: shinyData.icon 
    }) 
}); 

내가 여기에 놓친 거지 뭐?

답변

5

click_actionshowNotification 기능의 가능한 매개 변수 중 하나가 아닙니다.

알림을 클릭하여 처리하려면 notificationclick 이벤트 처리기를 정의하십시오. 예를 들어

:

self.addEventListener('notificationclick', function(event) { 
    event.notification.close(); 
    event.waitUntil(self.clients.openWindow(YOUR_URL_HERE)); 
}); 
+0

. notificationClick 이벤트를 사용하는 방법을 이해하지만 firebase 메시징 라이브러리를 사용하여이를 수행하는 방법을 모른다. 혼란을 드려 죄송합니다. – Vibgy

+0

나는이 반응과 관련하여 고심하고있다 ...이 문맥에서 '자기'는 무엇을 말하는가? 통지, 서비스 종사자 등록 또는 일부 다른 객체입니까? – jcaruso

+0

나의 이전 코멘트에 대답하기 위해, 서비스 노동자를 등록 할 때 당신이 제공하는 스크립트에'self.addEventListener'가 있어야합니다. 그것이 나를 위해 일하지 못하는 이유는 내 대본이 캐싱 되었기 때문입니다. 서비스 직원의 등록을 취소하고 스크립트가 더 이상 캐시되지 않도록 확인한 다음 서비스 담당자를 다시 등록해야했습니다. – jcaruso

2

마르코의 대답은 올바른 것입니다.

Firebase Messaging Library는 Web Push API 위에있는 래퍼입니다.

페이로드는 알림을 표시하고 클릭을 처리합니다. 데이터 페이로드를 동일하게 구현하려면 notificationclick 이벤트 리스너를 구현해야합니다 (Marco가 제안한 것처럼).

self.addEventListener('notificationclick', function(event) { 
    event.notification.close(); 

    ... Do your stuff here. 
}); 

당신은 또한 notificationclose 이벤트와 같은 작업을 수행 할 수 있습니다

내가 좀 더 명확하게 내 질문을 업데이트
self.addEventListener('notificationclose', function(event) { 
    ... Do your stuff here. 
});