2012-04-27 5 views
0

처음으로 C2DM을 사용하고 있으며 다음과 같은 일반적인 방법을 찾고 있습니다. C2DM 메시지 수신시 : - 애플리케이션이있는 경우 현재 활동은 "경고 팝업"을 표시합니다. - 응용 프로그램이 열려 있지 않은 경우 나는 우리가 public void onReceive(Context context, Intent intent)를 구현하는 GlobalBroadcastReceiver extends BroadcastReceiver애플리케이션 종료시 수신 의도 방송 수신

(트위터, 새 이메일과 유사, SMS 등) 알림 표시 줄에 메시지를 보내 싶습니다. 이것은 에 등록 된 수신기입니다.
기본적으로 모든 방송은이 수신기를 통해 파이프되며 첫 번째 시나리오에는 아무런 문제가 없습니다.

하지만 저는 두 번째 문제를 해결하는 방법에 대해 궁금합니다. 애플리케이션을 닫은 후에도 C2DM.RECEIVE 브로드 캐스트를 수신하도록하려면 어떻게해야합니까? 수신 데이터에 대해 사용자에게 어떻게 알릴 수 있습니까?

이미 많은 해결책이 있지만 자신을 찾을 수 없기 때문에 더 큰 그림을 놓치고 있다고 확신합니다.

답변

3

어떻게 내 응용 프로그램이

을 닫을 때 C2DM.RECEIVE도 방송 수신 리시버는 매니페스트, per the C2DM documentation에 등록되어 있는지 확인 할 수 있습니다.

그러면 수신 데이터에 대해 사용자에게 어떻게 알릴 수 있습니까?

레이즈 a Notification.

수신자가 포어 그라운드에서 자신의 활동이 있는지를 반드시 알 필요는 없으므로 가장 좋은 해결책은 직접 방송 인 Intent을 보내는 것입니다. 단 하나는 주문한 것입니다. 자신의 브로드 캐스트에 대해 우선 순위가 높은 BroadcastReceiver을 등록하고 다른 브로드 캐스트에 대해 BroadcastReceiver에 일반 우선 순위 BroadcastReceiver을 등록하도록 다른 매니페스트 등록을해야합니다. 액티비티가 브로드 캐스트를 받으면 팝업 (ick)을 표시하고 브로드 캐스트를 중단합니다. "백스톱"BroadcastReceiver이 브로드 캐스트를 받으면 Notification을 표시합니다. Here is a blog post이 패턴에 대해 좀 더 자세히 설명하고 here is a sample project은 순서가 지정된 브로드 캐스트 사용을 보여줍니다.

+0

이 부분을 조금 더 자세하게 설명해 주시겠습니까? "활동이 자신의 방송을 위해 우선 순위가 높은 BroadcastReceiver를 등록하고 다른 등록 된 BroadcastReceiver가 자신의 방송을위한 보통 우선 순위의 BroadcastReceiver를 구현하도록하십시오." 또한 나는 내일 이것을 점검 할 것이다. 이 모든 것을 테스트 할 조용한 시간이 필요합니다. – yoshi

+0

@yoshi : 블로그 게시물에 하이퍼 링크를 제공하고 샘플 프로젝트를 통해 자세한 내용을 제공했습니다. – CommonsWare

+0

늦게 답변 해 주셔서 감사합니다. 당신의 대답을받은 직후, 전체 c2dm 시스템에 대한 약간의 드라마가있었습니다. 기사에서 설명한 패턴이 마음에 듭니다. 그런 식으로 주문한 방송을 사용하려면 정말 깔끔합니다. 어쨌든 독서 후에 나는 모든 일이 이미 끝났다는 것을 깨달았습니다. 나는 매니 페스트에 등록 된'BroadcastReceiver'가 아무런 활동을하지 않고도 실행된다는 것을 이해하지 못했습니다. 달콤한 :) – yoshi