마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

gcm push 알림을 받지 못합니다. [closed]

0 추천

일단 안드로이드 넥서스 5 실제 단말기로 테스트 중에 있습니다.

GCM 클라우드 서버로 부터 registeration Id를 받아와서 저의 App Server(스프링JSP) 로 전송하여 저장해놓고

사용자가 클라이언트에서 어떤 이벤트를 일으키면 서버 API를 호출해서 거기서 GCM Sender 코드를 작성해 놓은게 있어서

클라이언트로 푸시알림 메세지를 전송하라고 GCM 클라우드 서버로 요청을 보내게 됩니다.

registeration Id를 받아서 서버에 저장하고 GCM 클라우드 서버로 요청을 보내는 것은 성공했으나

안드로이드 단말기로 푸시알림 메세지가 오질 않습니다.

혹시 registeration Id가 잘못됐는가 해서 

http://gcmsender.herokuapp.com/  에서 테스트 해봤지만 status code : 200으로 정상적으로 전송이 됐습니다.

클라이언트도 몇번이나 점검해봤지만 문제가 없는거 같습니다.

그리고 Google Devlop Console에 각 앱 프로젝트 별로 요청, 오류 상태가 표시되는 곳을 보니 요청, 오류

모두 0으로 나옵니다.

그렇다면 아예 요청이 들어가지 않았다는 건데.... 뭐가 문젠지 모르겠습니다.

아래에는 스샷과 소스 일부를 첨부합니다.

<App server 측 GCM Sender 부분>

	Sender sender = new Sender("AIzaSyCY8U2FoGBQGx...........");
		String regId = memberDao.selectMemberRegistrationId(recvMsgBoxVO.getNickName());
		Message message = new Message.Builder()
		.collapseKey(UUID.randomUUID().toString())
		.addData("type", "text")
		.addData("command", "show")
		.addData("title", "쪽지 알림")
		.addData("message", URLEncoder.encode("쪽지가 도착했습니다", "UTF-8"))
		.build();
		
		List<String> list = new ArrayList<String>();
		list.add(regId);
		MulticastResult multiResult;
		try {
			multiResult = sender.send(message, list, 5);
			if (multiResult != null) {
				List<Result> resultList = multiResult.getResults();
				for (Result result : resultList) {
					System.out.println(result.getMessageId());
					System.out.println(result.getErrorCodeName());
				}
			}
		} catch (IOException e) {
			System.out.println("gcm send msg error");
		}

<Gcm Sender Test>

<goole devlop console>

질문을 종료한 이유: 자체 해결했습니다. 이유는 코드 상의 문제는 아니였고, manifast.xml의 receiver의 위치 문제 였습니다 ㅠ
랍스타와킹크랩 (1,970 포인트) 님이 2015년 8월 11일 질문
랍스타와킹크랩님이 2015년 8월 13일 closed
...