번역 글로 2016/10월 기준. 이후 바뀔 수 있음

 

APNS GCM에서 Push 통지를 할 때의 제한 정리

 

APNS

iOS8 미만의 경우 페이 로드 데이터의 상한은 256 바이트까지.

iOS8의 경우 페이 로드 데이터의 상한은 2K 바이트까지.

iOS9 이후의 경우 페이 로드 데이터의 상한은 4K 바이트까지.

1회 통신에서 전 패킷이 5000~7000 바이트를 넘으면 APNS 에서 절단된다?(확실하지 않음)

패킷의 제한은 상당히 완만하지만 너무 빠른 리퀘스트는 에러가 되므로 1리퀘스트당 10~50밀리 초 정도의 간격을 두는 것이 좋을 듯(확실하지 않음)

 

4번째와 5번째 정보는 비공식이고 상반되는 것이기 때문에 결국은 스스로 확인할 수밖에 없다고 생각하는데 "적어도 초당 9000 메시지는 송신할 수 있다" 라고 Apple의 공식 문서에 있는 것 같아서 일단 너무 한꺼번에 대용량의 메시지를 발송하지 않고 가끔 sleep 처리를 넣으면 괜찮지 않을까 생각한다.

 

 

GCM

페이 로드 데이터의 상한은 4096 바이트까지.

멀티 캐스트 전송의 경우 최대 1000 단말까지.

 

모두 공식 정보이므로 확실함.

 

 

 

어떻게 해야 할까?

위의 제한이 있으므로 멀티 OS 대응의 경우 서버 애플리케이션은 Push 메시지는 140 문자 이내(Push에서 그렇게 긴 메시지 보내지는 않을 것 ⇒ Twitter와 같은 글자 수만 있으면 충분하지! 라는 생각으로)로 하고,

수 천대 이상에 한번에 보내고 싶다면 GCM에 맞추어 1000건씩 분할,

동시에 APNS를 배려하여 각 처리 사이에서 0.1초 정도 간격을 주고,

APNS GCM에 요청하면 거의 괜찮지 않을까 생각한다.

 

 


출처: http://qiita.com/itosho/items/f4ec3495c2d2782c5359

저작자 표시
신고
by 흥배 2016.12.12 08:00

요약: GCM 3.0에 대한 소개로 큰 특징은 토픽에 클라이언트를 등록하면 이 토픽에 메시지를 보내면 등록된 모든 클라이언트에 메시지를 보낼 수 있다. 게임을 예를 들면 AAA 라는 게임의 전체 유저에게 메시지를 보내기 위해서 AAA라는 토픽을 만들고, 이 토픽에 클라이언트를 등록하고, AAA에 토픽에 메시지를 보내면 모든 클라이언트에 메시지가 날아간다.

iOS의 경우 기존에는 GCM이 아닌 애플의 시스템을 사용해야 하는데 이제 GCM을 통해서 iOS쪽에도 메시지를 보낼 수 있다. GCM을 통해서 모든 플랫폼 유저에게 메시지를 보낼 수 있다.

 

 

GCM 3.0에서 Google이 시도한 것은 등록 프로세스를 간소화 하고 동사의 클라우드 통지 시스템을 Android, iOS, Chrome에서 똑같이 동작하는 것이다. 그래서 새로운 토픽 그룹과 메시지 진단 도구가 마련되었다.

 

애플리케이션은 각각 특정 기기 상에서 동작하는 애플리케이션과 관련된 식별자로 인스턴스 ID를 받는다. 인스턴스 ID는 애플리케이션이 그 장치에서 제거될 때까지, 각각의 어플리케이션의 수명을 동안 유효하다. 푸쉬 메시지는 API 호출을 통해서 생성되는 보안 토큰을 사용하여 인증한다. 보안 토큰이 훼손된 경우에는 바꿀 수 있다.

 

GCM의 편리한 기능으로 장치 그룹이 있다. 통지 키를 수신하는 GCM 상에서 장치 그룹을 생성하고, 그룹 전체에 메시지를 전송할 수 있다. 그룹은 편집하거나 클라이언트를 추가 또는 삭제 할 수도 있다. 그룹에는 최대 20개의 디바이스를 포함할 수 있다. 한 명의 사용자가 소유하는 모든 디바이스에 메시지를 송신할 때 실용적인 방법이다. 클라이언트 그룹에 메시지를 보낼 수 있다.

 

GCM 3.0에서는 다수의 클라이언트에게 메시지를 송신하는 토픽 메세지가 도입 되었다. 하나 이상의 주제를 생성하고, 각 주제에 클라이언트를 등록한다. 그 사안에 대해서 메시지를 전송하면, 등록된 모든 클라이언트에게 GCM이 정보를 통지하는 구조이다. 이 방법으로 다수의 클라이언트, 경우에 따라서는 모든 클라이언트에게 전달 할 수 있다.

 

개발 콘솔에 GCM 진단 메시지용 도구가 추가됐다. 최대 30개의 최신 메시지를, 상세한 정보와 함께 확인할 수 있다. 이 툴에서는 메시지 송신 후 몇 분간의 진단 정보를 취득할 수 있다.

 

이들 새 기능은 Android, iOS, Chrome 상에서 거의 똑같이 동작하지만, Apple의 디바이스에 메시지를 전송할 경우에는 한가지 차이가 있다. iOS에서는 우선 APNS 서버에 접속하여 토큰을 받고 그것으로 GCM 토큰을 취득해야 한다. 실제 통신에서는 애플리케이션이 iOS 기기 상에 있는 한 GCM APNS를 사용하여 메시지를 송신한다. 그러므로 애플리케이션의 동작은 Apple의 통지 시스템을 사용하는 경우와 같다. 앱이 액티브 하게 되면, GCM은 앱과 직접 통신한다. 업 스트림 메시지나 멀티 캐스팅, 메시지 스트리밍 등을 포함한 모든 GCM API iOS 앱에서 사용 가능하게 되었다.

 

Google은 현재 GCM에는 60만 개의 앱이 등록되어 있고, 매초 110만개의 메시지를 15억대의 디바이스에 송신하고 있다. 2015년 안에 처리하는 메시지의 수는 25조가 넘을 전망이다. 메시지의 평균 대기 시간은 세계 전체에서 50ms이다. 서비스는 계속 무료로 사용할 수 있다.

올해 I/O 2015세션(https://www.youtube.com/watch?v=gJatfdattno&feature=em-uploademail)에서는 GCM 3.0이 더 상세히 소개되고 있다.

 

출처: http://www.infoq.com/news/2015/06/gcm-3

저작자 표시
신고
by 흥배 2015.06.29 17:54
| 1 |

티스토리 툴바