2012-02-07 3 views
30

나는 IOS 푸시 알림에 새로운 있습니다. 나는 그들에 대해 읽었으며이 정보를 어디서나 찾을 수없는 것처럼 보입니다. 푸시 알림의 크기 제한이 256 바이트라는 것을 읽었습니다. 이 크기 제한에는 전송해야하는 장치 토큰 및 알림에 대한 기타 오버 헤드 정보 등이 포함됩니다. 그렇다면 실제 크기는 무엇이며 내 콘텐츠에 사용할 수 있습니다.아이폰 푸시 알림 문자 제한

또한 내가 보낸 텍스트를 해석하는 데 어떤 형식이 사용됩니까? 변환은 1 문자 = 1 바이트입니까, 아니면 그 이상입니까? 실제로 얼마나 많은 문자를 푸시 알림으로 보낼 수 있는지 알고 싶습니다.

푸시 알림 페이로드의 제한 사항을 이해하는 데 도움을 주셔서 감사합니다.

답변

49

각 푸시 알림에는 페이로드가 있습니다. 페이로드 은 클라이언트 응용 프로그램에 이 다운로드되기를 기다리는 데이터에 대한 경고 메시지를 표시하는 방법을 지정합니다. 알림 페이로드에 허용되는 최대 크기는 256 바이트입니다. Apple 푸시 알림 서비스 은이 제한을 초과하는 모든 알림을 거부합니다.

각 알림에 대해 공급자는 RFC 4627을 엄격히 준수하는 JSON 사전 개체를 작성해야합니다.이 사전에는 키 사전으로 식별 된 사전이 포함되어야합니다. APS의 사전 는 하나 개 이상의 속성 다음 작업 지정이 포함

  • 경고 메시지가 재생
  • 소리와 함께 응용 프로그램 아이콘을 배지에 사용자
  • 숫자로 표시를

- Local and Push Notifications Programming Guide

그래서,

이 크기 제한에는 이 전송 될 장치 토큰 및 알림에 대한 기타 오버 헤드 정보가 포함되어 있습니까?

예,이 크기 제한에는 장치 토큰 및 기타 오버 헤드 정보가 포함됩니다.

변환은 1 문자 = 1 바이트입니까, 아니면 그 이상입니까?

알림에 라틴 문자 만 사용하는 경우에 해당됩니다.

+0

오버 헤드가 포함 된 이후로 오버 헤드가 고려 된 후 남은 공간이 얼마나되는지 알고 계신가요? (총 공간 - 오버 헤드 =? 남아있는 문자 수) 감사. – jcmitch

+13

페이로드가 최소한이고 경보 정보 만 포함한다고 가정하면 약 236 자의 텍스트가 있습니다. 그러나 'UIAlertView' 표시 제한은 107 문자입니다. 그 후에 메시지가 잘 리면 표시된 메시지의 끝에 "..."이 표시됩니다. –

+0

감사합니다. UIAlertView는 문제가 아니어야합니다. 페이로드에서 나중에 사용할 데이터를 첨부하면됩니다. – jcmitch

5

'포함'은 '이미 포함되어 있습니다'또는 '반드시 포함해야 함'을 의미하기 때문에 위의 내용은 모두 분명하지 않습니다. 매우 명확하게 말하면 장치 ID는 페이로드의 일부가 아닌 '메타 데이터'이며 256 자 예산에서 나오지 않습니다. 하지만 다른 APS 오버 헤드 (표준 페이로드 사전)는 있습니다.

출처 : 상기 문서 및 검증을위한 실험.

3

프로덕션 환경에서 수행 한 내 APNS 테스트에서 최대 33 자의 중국어 및 13 바이트의 사용자 지정 속성 2 개를 성공적으로 보낼 수있었습니다.

{ 

    "aps": { 
     "alert": "一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三", 
     "badge": 12, 
    } 
    "t": 123, 
    "v": "1234567890" 
} 

위의 페이로드 길이는 공백 문자를 제외하고 파일로 저장 한 경우 158 바이트입니다. 각 중국어 문자는 3 바이트로 계산되었습니다 (크기 변경을 확인하기 위해 모두 제거하여 확인했습니다).

언급 된 공식 문서에서 256 바이트 제한에는 기기 토큰이 포함되어 있지 않지만 사용하지 않아도 '소리'및 '콘텐츠 사용 가능'과 같은 APNS가 계산되는 다른 문자가 있다고 생각됩니다. 명시 적으로.

특히 '맞춤 길잡이를 사용할 때'너무 길지 않도록주의하십시오. APNS 개발 환경이 페이로드 길이를 제한하지 않는다는 점에 유의하십시오. 개발 환경을 사용하는 동안 테스트가 통과되지만 제품에서 실패 할 수 있습니다. 그것을 확실하게 생각하지 마십시오.