자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey [XE6] Baas 를 이용한 Push 알림창이 사라지지 않습니다.
2014.08.22 00:56
몇일전 푸시-세미나 Baas를 이용해 kinvey - Push 강좌를 듣고 똑같이 구현해봤습니다.
별다른 이상없이 잘 동작이 됩니다만...
앱이 꺼져있는 상태에서 푸쉬를 받으면.. 알림창에 보여지는데 이때에 알림창을 클릭하면
제가 만든앱이 실행됩니다. 그런데 클릭했던 알림창이 없어지질 않고 있습니다.
원래는 없어져야 정상이지요..
그래서,구글 검색을 좀 해봤는데.. 앱이 실행되어 있는 상태에서는 아래의 코드로 알림창이 꺼지더군요.
procedure TForm1.PushEvents1PushReceived(Sender: TObject; const AData: TPushData);
var Notifica:TNotification;
begin
Notifica:=NotificationCenter1.CreateNotification;
try
Notifica.EnableSound:=True;
Notifica.AlertBody:=AData.Message; NotificationCenter1.PresentNotification(Notifica);
finally
Notifica.DisposeOf;
end;
그런데 문제는 , 앱이 꺼져있는 상황입니다. 대부분이 해당-앱이 꺼져있는 상황이 많죠..
이문제좀,,, 해결 부탁드리겠습니다. 이게 해결안되면 푸시- 사용이 불가하겠죠..
알림창을 아무리 눌러도 알림창이 안꺼지는데.. 크레임이 많이 들어올것입니다..
그리고, 한가지 더는, 해당 알림창을 클릭해서 앱이 실행될때에, 알림창 메세지를 앱이 실행시에
인지할 수 있는가입니다.
예를 들어, 카톡 메세지가 오면, 보낸사람과 보낸 메세지가 알림창에 뜨는데, 해당 알림창을 클릭하면,
카톡이 실행되면서 바로 해당 채팅창으로 이동합니다.
이것은 카톡이 실행될때에 파라미터로 값을 주었던지,, 기타 등등의 방법으로 인지를 시키는것 같습니다..
이부분도 꼭 필요한 부분입니다.
위 두가지 문제에 대한 , 해결점 좀 부탁드리겠습니다!!
댓글 2
-
Humphery
2014.08.22 01:52
-
가을이다
2014.08.22 02:33
감사합니다.. ^^ 해보니 잘 되네요... 아래와같이 FormCreate에 코드를 작성해보니..아주 잘 됩니다 ^^
procedure TForm1.FormCreate(Sender: TObject);
begin
try
//푸시메세지를 읽어옴
memo1.Text := PushEvents1.StartupNotification.Message;
except
end;
try
//푸시메세지를 알림창에서 지움
NotificationCenter1.CancelAll;
except
end;
end;
Firemonkey [XE6] Baas 를 이용한 Push 알림창이 사라지지 않습니다.
2014.08.22 00:56
몇일전 푸시-세미나 Baas를 이용해 kinvey - Push 강좌를 듣고 똑같이 구현해봤습니다.
별다른 이상없이 잘 동작이 됩니다만...
앱이 꺼져있는 상태에서 푸쉬를 받으면.. 알림창에 보여지는데 이때에 알림창을 클릭하면
제가 만든앱이 실행됩니다. 그런데 클릭했던 알림창이 없어지질 않고 있습니다.
원래는 없어져야 정상이지요..
그래서,구글 검색을 좀 해봤는데.. 앱이 실행되어 있는 상태에서는 아래의 코드로 알림창이 꺼지더군요.
procedure TForm1.PushEvents1PushReceived(Sender: TObject; const AData: TPushData);
var Notifica:TNotification;
begin
Notifica:=NotificationCenter1.CreateNotification;
try
Notifica.EnableSound:=True;
Notifica.AlertBody:=AData.Message; NotificationCenter1.PresentNotification(Notifica);
finally
Notifica.DisposeOf;
end;
그런데 문제는 , 앱이 꺼져있는 상황입니다. 대부분이 해당-앱이 꺼져있는 상황이 많죠..
이문제좀,,, 해결 부탁드리겠습니다. 이게 해결안되면 푸시- 사용이 불가하겠죠..
알림창을 아무리 눌러도 알림창이 안꺼지는데.. 크레임이 많이 들어올것입니다..
그리고, 한가지 더는, 해당 알림창을 클릭해서 앱이 실행될때에, 알림창 메세지를 앱이 실행시에
인지할 수 있는가입니다.
예를 들어, 카톡 메세지가 오면, 보낸사람과 보낸 메세지가 알림창에 뜨는데, 해당 알림창을 클릭하면,
카톡이 실행되면서 바로 해당 채팅창으로 이동합니다.
이것은 카톡이 실행될때에 파라미터로 값을 주었던지,, 기타 등등의 방법으로 인지를 시키는것 같습니다..
이부분도 꼭 필요한 부분입니다.
위 두가지 문제에 대한 , 해결점 좀 부탁드리겠습니다!!
댓글 2
-
Humphery
2014.08.22 01:52
-
가을이다
2014.08.22 02:33
감사합니다.. ^^ 해보니 잘 되네요... 아래와같이 FormCreate에 코드를 작성해보니..아주 잘 됩니다 ^^
procedure TForm1.FormCreate(Sender: TObject);
begin
try
//푸시메세지를 읽어옴
memo1.Text := PushEvents1.StartupNotification.Message;
except
end;
try
//푸시메세지를 알림창에서 지움
NotificationCenter1.CancelAll;
except
end;
end;
1, 알림창의 목록을 없애는 방법
- TNotificationCenter가 알림창을 제어하는 컴포넌트입니다.
- PushEvents1DeviceRegistered 이벤트(기기가 푸쉬알림 토큰 수신 후 장치 등록 완료 시)에서
NotificationCenter1.CancelAll; 추가해 놓으면 구동 시 알림창 목록을 초기화 합니다.
- 굳이 푸쉬 수신시 위의 코드를 입력할 필요가 없습니다. 앱이 구동중에는 알림창 목록이 표시되지 않습니다.
- 앱 최초 구동시 미수신 알림 내용을 확인하려면 PushEvents1.StartupNotification을 사용바랍니다.
2, 추가정보 전달방법(추가정보로 종류, 상세정보 등을 직접 구성 가능)
- 킨비 사이트에서는 최소한의 기능을 제공해 푸시 메시지를 전송합니다.
- VCL 또는 웹을 토한 REST API 호출을 직접 구현하신다면 추가정보를 구성해 전송할 수 있습니다.
- 코드아카데미 강의에서 보셨던 VCL에서 username을 Extras에 추가해 전송한 부분을 활용하면
모바일에서 AData.Extras.Items[I].Key / Value 엑스트라 데이터를 확인할 수 있습니다.
위 내용을 이용하시면 원하시는 기능을 구현하실 수 있을 것입니다.