자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 푸쉬메시지를 받을때 앱이 실행중인 경우와 스크린을 끈경우를 구분할 수 있을까요?
2015.06.11 18:09
Push관련해서 작업을하고 있는중입니다.
일단 Push를 받을수 있는 상황먼저 설명을 드리겠습니다.
1. 앱이 실행되어있지 않은경우
푸쉬를 받을경우 상단바에 푸쉬가 추가됩니다.
이경우 상단바에 푸쉬를 클릭하여 앱이 실행이되면 PushEvents1.StartupNotification에 선택한 푸쉬에 관한 값이 들어옵니다.
2. 앱이 실행중일경우
푸쉬를 받을경우 PushEvents1PushReceived 이벤트를 탑니다.
3. 앱을 실행후 스크린이 껏을경우
푸쉬를 받을경우 상단바에 받은 푸쉬가 추가됩니다.
스크린을 다시켜서 푸쉬를 클릭하면 PushEvents1PushReceived 이벤트를 탑니다.
2번과 3번의 이벤트가 동일합니다.
2번과 3번의 경우 각각 다른 작업을 하려고 합니다.
구분할수 있는 방법이 있을까요?
댓글 7
-
Humphery
2015.06.11 18:10
-
최민철
2015.06.11 18:45
조금만 더 도움을 요청드립니다.
예를 한번 들어서 말씀해주실수 있으신가요??
EnteredBackground와 BecomeActive를 응용을 해야할것 같은데
어떤식으로 접근을 해야할지 모르겠습니다..
푸쉬가 들어온 시간을 알면 될듯한데
제가 못찾는건지 가져올수없는건지...
다시한번 부탁드리겠습니다.
-
Humphery
2015.06.11 19:58
저도 직접 해보지는 않았는데요.
BecomeActive된 시간과 PushEvent 발생시간 간격을 계산해서 판단해보는 건 어떨까요?
들어온 시간을 알아내는 법은 저도 찾아봤는데 쉽진 않네요^^
-
최민철
2015.06.11 20:25
빠른답변 감사합니다^^
PushEvent발생시간이라면
PushEvents1PushReceived 발생하는 시간인데
2번과 3번이 동일한 이벤트를 타기때문에 그것도 힘들것 같습니다..
좀더 자료를 찾아봐야 겠네요..
-
Humphery
2015.06.11 20:31
앱이 실행중인경우 라이프사이클 중 BecomeActive가 발생하지 않아서 구분할 수 있지 않나요?
2번은 앱이 화면에 표시되어 있는 경우를 이야기하는게 아닌가요?
-
Humphery
2015.06.12 22:37
제가 테스트하니(환경: XE8 + 겔럭시s3) 상태바의 알림을 터치하면 PushEvent 이벤트도 발생하고, LifeCycle 상태도 변경되네요.
앱이 화면에 떠있는 환경하고 확연하게 구분할 수 있습니다.(앱이 떠있는 상태에서 상태바를 내려서 확인해도 LifeCycle의 상태도 변합니다.)
만약 제가 구현한다면 LifeCycle이 WillBecomeForeground인 상태에서 PushEvent가 들어오면 상태바의 알림을 터치한것으로 처리할것 같습니다.
테스트 부탁드리구요.
또한가지 안드로이드의경우 BroadcastReceiver로 디바이스의 이벤트를 직접 받아 올 수 있습니다.
다음 링크는 전화가 오는 것을 감지해서 화면 토스트메시지를 출력하는 델파이 샘플입니다.
참고해 보시구요. 이 부분을 push 메시지 수신 이벤트를 감지하도록 처리하면 될것 같아 정보 제공합니다.
(이 부분은 학습이 좀 필요할거구요. 학습하신다면 기록으로 남길겸 블로깅 등으로 정보 공유 부탁드려요.^^)
http://www.fmxexpress.com/implement-a-dynamic-broadcast-receiver-in-delphi-xe6-xe7-firemonkey-on-android/
http://brsatalay.blogspot.com.tr/2014/10/delphi-android-dinamik-broadcast.html
-
최민철
2015.06.15 18:24
테스트 감사합니다^^
저도 역시 동일한 방법으로 테스트를 진행을 했었는데요.
상단바를 내리면 WillBecomeForeground이벤트가 발생합니다
그 후에 상단바에있는 Push를 선택하지 않고
푸쉬가 들어오면 PushEvent 이벤트를 타기때문에
제가 하려는 방향과는 조금 맞지 않을것 같습니다ㅎㅎ
BroadcastReceiver는 시간날때 테스트 해보겠습니다.
감사합니다.
Delphi 푸쉬메시지를 받을때 앱이 실행중인 경우와 스크린을 끈경우를 구분할 수 있을까요?
2015.06.11 18:09
Push관련해서 작업을하고 있는중입니다.
일단 Push를 받을수 있는 상황먼저 설명을 드리겠습니다.
1. 앱이 실행되어있지 않은경우
푸쉬를 받을경우 상단바에 푸쉬가 추가됩니다.
이경우 상단바에 푸쉬를 클릭하여 앱이 실행이되면 PushEvents1.
2. 앱이 실행중일경우
푸쉬를 받을경우 PushEvents1PushReceived 이벤트를 탑니다.
3. 앱을 실행후 스크린이 껏을경우
푸쉬를 받을경우 상단바에 받은 푸쉬가 추가됩니다.
스크린을 다시켜서 푸쉬를 클릭하면 PushEvents1PushReceived 이벤트를 탑니다.
2번과 3번의 이벤트가 동일합니다.
2번과 3번의 경우 각각 다른 작업을 하려고 합니다.
구분할수 있는 방법이 있을까요?
댓글 7
-
Humphery
2015.06.11 18:10
-
최민철
2015.06.11 18:45
조금만 더 도움을 요청드립니다.
예를 한번 들어서 말씀해주실수 있으신가요??
EnteredBackground와 BecomeActive를 응용을 해야할것 같은데
어떤식으로 접근을 해야할지 모르겠습니다..
푸쉬가 들어온 시간을 알면 될듯한데
제가 못찾는건지 가져올수없는건지...
다시한번 부탁드리겠습니다.
-
Humphery
2015.06.11 19:58
저도 직접 해보지는 않았는데요.
BecomeActive된 시간과 PushEvent 발생시간 간격을 계산해서 판단해보는 건 어떨까요?
들어온 시간을 알아내는 법은 저도 찾아봤는데 쉽진 않네요^^
-
최민철
2015.06.11 20:25
빠른답변 감사합니다^^
PushEvent발생시간이라면
PushEvents1PushReceived 발생하는 시간인데
2번과 3번이 동일한 이벤트를 타기때문에 그것도 힘들것 같습니다..
좀더 자료를 찾아봐야 겠네요..
-
Humphery
2015.06.11 20:31
앱이 실행중인경우 라이프사이클 중 BecomeActive가 발생하지 않아서 구분할 수 있지 않나요?
2번은 앱이 화면에 표시되어 있는 경우를 이야기하는게 아닌가요?
-
Humphery
2015.06.12 22:37
제가 테스트하니(환경: XE8 + 겔럭시s3) 상태바의 알림을 터치하면 PushEvent 이벤트도 발생하고, LifeCycle 상태도 변경되네요.
앱이 화면에 떠있는 환경하고 확연하게 구분할 수 있습니다.(앱이 떠있는 상태에서 상태바를 내려서 확인해도 LifeCycle의 상태도 변합니다.)
만약 제가 구현한다면 LifeCycle이 WillBecomeForeground인 상태에서 PushEvent가 들어오면 상태바의 알림을 터치한것으로 처리할것 같습니다.
테스트 부탁드리구요.
또한가지 안드로이드의경우 BroadcastReceiver로 디바이스의 이벤트를 직접 받아 올 수 있습니다.
다음 링크는 전화가 오는 것을 감지해서 화면 토스트메시지를 출력하는 델파이 샘플입니다.
참고해 보시구요. 이 부분을 push 메시지 수신 이벤트를 감지하도록 처리하면 될것 같아 정보 제공합니다.
(이 부분은 학습이 좀 필요할거구요. 학습하신다면 기록으로 남길겸 블로깅 등으로 정보 공유 부탁드려요.^^)
http://www.fmxexpress.com/implement-a-dynamic-broadcast-receiver-in-delphi-xe6-xe7-firemonkey-on-android/
http://brsatalay.blogspot.com.tr/2014/10/delphi-android-dinamik-broadcast.html
-
최민철
2015.06.15 18:24
테스트 감사합니다^^
저도 역시 동일한 방법으로 테스트를 진행을 했었는데요.
상단바를 내리면 WillBecomeForeground이벤트가 발생합니다
그 후에 상단바에있는 Push를 선택하지 않고
푸쉬가 들어오면 PushEvent 이벤트를 타기때문에
제가 하려는 방향과는 조금 맞지 않을것 같습니다ㅎㅎ
BroadcastReceiver는 시간날때 테스트 해보겠습니다.
감사합니다.
모바일 앱의 라이프 사이클을 활용하면 2번과 3번을 구분할 수 있을 것 같습니다.
http://tech.devgear.co.kr/delphi_news/410745
위 글을 참고해 화면이 켜진 상태를 판단해 보세요.