2013-10-31 5 views
0

알림이 도착하면 앱은 알림을 수신하도록 구성된 콜백을 실행합니다.푸시 알림. 앱이 포 그라운드인지 백그라운드인지 확인하는 방법

알림이 백그라운드에서 앱과 함께 도착하는 경우 애플리케이션을 특정보기로 이동하고 싶습니다. 그러나 알림이 포 그라운드에서 앱과 함께 도착하면 알림을 인쇄하고 싶습니다.

알림이 도착했을 때 응용 프로그램의 상태를 콜백 함수에서 어떻게 알 수 있습니까?

감사합니다.

답변

0

그러나 다만 배경에서, 나는이 얼마나 신뢰할 모르겠지만, 앱이 실행 중일 때 작동하는 것 같다 : 다음

var sleeping = false; 

document.addEventListener("pause", function() {sleeping = true;}, false); 
document.addEventListener("resume", function() {sleeping = false;}, false); 

과 :

function pushNotificationReceived(props, payload) { 
    if (sleeping) { 

     alert("caught me napping"); 

    } else { 

     alert("I've been waiting for you."); 
    } 
} 

까다로운을 응용 프로그램이 완전히 중지 된 경우입니다. 알림 콜백이 호출되기 전에 로그인해야하며 이보다 오래 전에 다시 시작 이벤트가 발생합니다.

sleeping = true; 
setTimeout(function(){sleeping = false;}, 1000); 
이 가입 준비되고 1 초 이내에 도착

(아무것도, 아마 때 도착 : 그 사건을 처리하는 경우, 당신은 아마 당신의 WL.Client.Push.onReadyToSubscribe 기능에 다음과 같은 뭔가가 필요합니다 우리는 잠 들어 있었고 지금은 지금 배달 중입니다)

이것은 약간의 괴상한 일이며, 모든 종류의 이상한 경우가 있지만 많은 경우를 다루는 것으로 보입니다.

+0

안녕하세요. 테스트 해 봤어? 알림을받을 때 응용 프로그램이 수행하는 첫 번째 작업은 sleepling 값을 false로 업데이트 한 다음 pushNotificationReceived를 실행하는 것입니다 (iPad에서). – Jxadro

+0

예, 제가 말했듯이 저는 그것이 얼마나 신뢰할 수 있는지를 모릅니다 ... 그것은 비동기 행동의 순서에 달려 있습니다. 그러나 제 테스트에서 위의 해결책이 효과가있었습니다. Android에서 테스트 했으므로 그 차이가있을 수 있습니다. 당신은 resume 콜백을 setTimeout을 사용하도록 변경할 수 있습니다 (위에서 onReadyToSubscribe에 대해 수행 한 것처럼). 솔루션보다 더 많은 해결 방법이 있습니다. –

관련 문제