2011-02-26 5 views
5

제 3 자 서버 목록을 관리하고 정보를 얻기 위해 해당 서버를 폴링 할 수있는 앱이 있습니다. 이 서버는 서로 독립적이며 잠재적으로 내 통제하에 있지 않습니다.C2DM : 동일한 앱에서 여러 발신자 ID를 등록 할 수 있습니까?

이제 지속적인 활성 폴링을 방지하기 위해 c2dm 알림을 구현하려고합니다. 타사 서버가 senderId을 게시하고 Google 클라이언트에 C2DM registrationId을 보내도록 허용 할 수 있습니다.

이제 내 질문 : 여러 c2dm 발신자에 대해 동일한 응용 프로그램 패키지에서 등록 할 수 있습니까? 그렇다면 올바른 로컬 서버 구성 항목을 업데이트 할 수 있도록 등록 (특히 등록 취소) 프로세스를 서로 구분하는 방법은 무엇입니까?

내가 찾은 유일한 리소스는 this google groups thread이지만 한동안 답변되지 않았습니다. 네가 도울 수 있기를 바란다.

참고 : 이것은 등록에 관한 것입니다. 메시지를 보낼 때 타사 서버는 서버 이름을 주입 할 수 있으므로 메시지 처리기에서이를 구별 할 수 있습니다. 하지만 Google의 서버 등록 프로세스가 나에게 사용자 정의 정보를 다시 전달할 수있는 옵션을 제공하지 않는 것 같습니다. BroadcastReceiver

+0

관심이있는 사용자는 (고급 환경 설정에서) 사용자에게 'senderId'를 선택하게 할 것입니다. 실제로 문제를 해결하지는 않지만 최소한 사용자는 특정 서버의 개인 senderId에 바인딩되어 있지 않습니다. 물론 이제 제 3 자 서버에 대한 클라이언트의 등록 요청에는 'senderId'가 포함되어야합니다. – user634618

+0

google-play-service에서 여러 명의 발신자를 지원하는 Google 답변 : http://stackoverflow.com/a/11910550/1083128 – Bastet

답변

3

서버의에서 메시지를받을 수 없습니다 : http://groups.google.com/group/android-c2dm/browse_frm/thread/e2095d79c80de4c1/37325b1b1e5ec1e1?lnk=gst&q=multiple#37325b1b1e5ec1e1

코스 틴 Manolache (구글의 소프트웨어 엔지니어) 글 :

앱은 2 개의 다른 발신자 ID를 등록 할 수 없습니다. - (android-id + app id)에 대해 레코드가 하나만 있으면 두 번째 등록은 첫 번째 발신자를 대체하고 첫 번째 발신자는 보낼 수 없습니다.

어쨌든 이것은 현재 '지원되는'기능이 아니지만 으로 들립니다.

TOS 이외에도 여러 고객과 공유하는 발신자 계정을 사용하지 마십시오. 다른 문제가 발생할 수 있습니다.

동일한 문제가 있습니다. 클라이언트는 여러 서버가있는 여러 계정을 가지고 있으며 알림을 수신 할 계정이있는 모든 서버에 등록해야합니다.

0

나는 귀하의 질문을 이해하는 한, 설명은 다른 서버가 등록되어 있으며 등록 및 등록되지 않은 프로세스에 대해 해당 서버를 관리 할 수 ​​있습니다.

위의 설명은 다음 올바른 경우 :

당신은 내부적으로 SERVERID의 목록을 유지하고 C2DM 등록 ID를 생성 할 수 있습니다. coz C2DM 등록 ID는 패키지에 대해 고유합니다. package가 다시 등록하려고 시도 할 때와 동일하게 업데이트됩니다. 그래서이 등록 ID는 n 개의 서버에 부여 할 수 있으며이 등록 ID를 사용하여 메시지를 보낼 수 있습니다. 그러면 응용 프로그램에 닿을 확률이 높아집니다.

등록 취소의 경우 목록에서 항상 서버 ID를 제거 할 수 있습니다. 그 중 하나이기 때문에 C2DM 등록 ID에 대해 많은 것을 할 필요가 없습니다. 당신이 C2DM에서 등록을 취소 할 경우 다음 응용 프로그램이이 관련이있을 수

+1

상황은 다음과 같습니다. 푸시 알림을 보낼 수있는 여러 개의 비 제휴 서버가 있으며 Android 클라이언트가 각 서버에 독립적으로 등록하여 알림을 구독 할 수 있어야합니다. – user634618

관련 문제