2013-07-31 2 views
8

저는 GCM에서 새롭게 변경되었습니다. 앱이 설치된 모든 기기에 메시지를 보내고 싶습니다. registration_id에 대해 읽었습니다. GCM에 처음 연결 한 후 Google에서이 고유 한 문자열을 기기로 보냅니다. 나는 서버 세계에서 초보자이지만 서버 측에서는 디바이스에 알림을 보내기 위해 registration_id 배열과 google 메시지를 보내야한다.Google Cloud Messaging이 모든 기기에 알림을 보냅니다.

구글은 등록 ID를 가지고 방법을 알고? 레지스트라 ID를 통과하지 않고 모든 장치에 메시지를 보내는 방법이 있습니까? 감사합니다.

+0

registration_id를 데이터베이스에 저장해야합니다. 내 솔루션을 한번보세요 : http://stackoverflow.com/questions/17998875/googlecloudmessaging-returning-invalidregistration –

답변

11

등록 ID를 통과하지 않고 모든 장치에 메시지를 보내는 방법이 있습니까?

방법이 없습니다.
GCM에 성공적으로 등록한 후 (Android 애플리케이션) 등록 ID를 애플리케이션 서버로 전송하여 어딘가에 데이터베이스에 저장해야합니다. 이 등록 ID는 특정 장치에 알림을 보내는 데 사용됩니다.

는 의미 해당 데이터베이스에서 모든 등록 ID를 선택하기 위해, 모든 장치에 알림을 보내고, 당신이 말한대로 배열에 넣어와 GCM에 더를 전달합니다.

+0

Ok, 답장을 보내 주셔서 대단히 감사드립니다. 내 서버에서 db를 만들고 모든 장치 등록 ID의 쿼리 결과는 알림 요청에 포함됩니다. 감사. – Tenaciousd93

+2

이것은 더 이상 정답이 아닙니다. Android 푸시 인프라에 대한 업데이트로이 답변이 구형이되었습니다. –

6

당신은 다음의 덩어리의 목록을 깰 필요는 1000 개 이상의 장치에 메시지를 보내려면이 GCM의 제한 1000를 초과하지 않아야 등록 장치의 ID와이 목록의 목록을 보낼 필요 1000.

+0

답장을 보내 주셔서 감사합니다. 1000 한계를 읽었습니다. – Tenaciousd93

-1

여기에 혼란이 있다고 생각합니다. 필자는 github 샘플 코드 (예 : Tomcat에 배포 된 Java의 앱 서버)와 Android 앱을 사용했습니다. 거기에서, 나는 어떤 ID도 앱 서버에 "전달"하거나 "보내지"않았다. 관련 API를 호출하여 등록 ID를 검색하고이를 사용하여 알림을 보냅니다. GCM 등록 ID에 대한 모든 스레드에서 등록 ID를 타사 앱 서버에 전달해야한다는 이유는 무엇입니까? 나는 동의하지 않는 것이 두렵다. 제 3 자 앱 서버는 특정 기기 (발신자 ID)로부터 알림을 수신하도록 등록 된 기기를 찾기 위해 GCM 서버 자체를 쿼리 할 수 ​​있습니다. 등록 ID를 타사 앱 서버에 수동으로 전달하면 프로세스 자동화의 모든 목적을 달성 할 수 없습니다. 어쩌면 여기서 뭔가를 놓치고 있거나 더 이상 사용되지 않는 콘텐츠를 사용하고있을 수 있습니다. 어쨌든 자동화 된 프로세스가 시작되면 수동 개입이 어떻게 필요합니까? GCM 3.0

+0

나는 당신에게 예제를 사용하지 않았지만, 만약 내가 틀리지 않았다면, 나는이 설정을 사용한다 :'1. 앱 시작 : 앱이 기기를 Google 서버에 등록합니다. 2. 서버의 DB에 장치의 "고유 코드"를 보냅니다. 3. SERVER : 일부 장치에 알림을 보내면 DB에서이 "고유 코드"를 쿼리하고이를 Google 서버로 보냅니다. 4. 선택된 장치 만 알림을 수신합니다. 'Google 서버에 장치 ID 배열을 제공해야하므로이 ID를 서버에 저장해야합니다. – Tenaciousd93

15

는 주제의 지원에 모든 장치 덕분에 통지를 송신하는 것이 가능합니다. 앱은 하나 이상의 주제를 지정해야하며 서버는 개별 기기를 지정하지 않고 해당 주제에 대한 알림을 보낼 수 있습니다.

https://developers.google.com/cloud-messaging/topic-messaging

당신은 "세계"라는 주제로 모든 장치를 suscribe 후 메시지를 보낼 수 있습니다에 "/ 주제/전역"대신 모든 registration_ids로 전송.

+0

Daniel, 주제에 1000 개가 넘는 기기를 구독 할 수 있습니까? 보통의 API는 1000 개의 등록 ID를 제한합니다. 비슷한 한계가 있습니까? –

6

예, 모두에게 메시지를 보내는 방법이 있습니다!

은 그냥 'registration_ids'필드에 오히려 그런 다음 사람 필드 '수' '/ 주제/글로벌'값의 ID를 전송합니다.

PHP, 예를 들어 :

'to' => "/topics/global", 

아니라이 :

'registration_ids' => $this->devices 
1

그룹의 연관된 등록 토큰 모두 특정 그룹을 매핑하여 디바이스 그룹을 식별 notification_key를 생성 (앱 서버에 알림 키를 만들 수 있습니다. notification_key을 사용하면 한 번에 하나의 메시지를 하나의 등록 토큰으로 보내는 대신 응용 프로그램 서버가 notification_key에 하나의 메시지를 보낼 수 있으며 GCM은 그 메시지를 그룹의 모든 등록 토큰에 보냅니다.

또한 notification_key에 허용되는 최대 구성원 수는 입니다.

Google 개발 사이트에서는 특히이 주제에 대한 새로운 안내서를 추가했습니다. https://developers.google.com/cloud-messaging/notifications#sending_downstream_messages_to_device_group

관련 문제