What is the maximum length of a Push Notification alert text?
Asked Answered
C

11

150

What is the maximum length of the alert text of an iOS push notification?

The documentation states that the notification payload has to be under 256 bytes in total, but surely there must be a specific character limit for the alert text.

Colugo answered 10/6, 2011 at 14:27 Comment(0)
C
255

The real limits for the alert text are not documented anywhere. The only thing the documentation says is:

In iOS 8 and later, the maximum size allowed for a notification payload is 2 kilobytes; Apple Push Notification Service refuses any notification that exceeds this limit. (Prior to iOS 8 and in OS X, the maximum payload size is 256 bytes.)

This is what I could find doing some experiments.

  • Alerts: Prior to iOS 7, the alerts display limit was 107 characters. Bigger messages were truncated and you would get a "..." at the end of the displayed message. With iOS 7 the limit seems to be increased to 235 characters. If you go over 8 lines your message will also get truncated.
  • Banners: Banners get truncated around 62 characters or 2 lines.
  • Notification Center: The messages in the notification center get truncated around 110 characters or 4 lines.
  • Lock Screen: Same as a notification center.

Just as a reminder here is a very good note from the official documentation:

If necessary, iOS truncates your message so that it fits well in each notification delivery style; for best results, you shouldn’t truncate your message.

Cephalalgia answered 11/6, 2011 at 12:50 Comment(6)
Should be clarified that an in-app UIAlertView has no display limit; text over a certain length will go into a scroll view. An SMS or push alert probably has that 107-character limit, however.Expeditious
And displayed text is not limited by payload, because when you use localization method it's no longer match 1:1. Payload may be short while final message may be much longer. The question is about displaying message it's not strictly related to payload maximum length.Henig
I could send a huge payload to the sandbox and it would be delivered, but the production server was very restrictive to just 256 bytes and not one byte more.Broadcasting
can anyone tell the GCM Android push notif display text length ?Redeemer
alert size that's true. But how this make sense where apple saying for VOIP it's size increased by 5KB. How this can be used. It still truncate payload size if it going beyond ~1KB. Any suggestion ?Gorton
1. For Voice over Internet Protocol (VoIP) notifications, the maximum payload size is 5 KB (5120 bytes). 2. For all other remote notifications, the maximum payload size is 4 KB (4096 bytes).Ours
B
26

It should be 236 bytes. There is no restriction on the size of the alert text as far as I know, but only the total payload size. So considering if the payload is minimal and only contains the alert information, it should look like:

{"aps":{"alert":""}}

That takes up 20 characters (20 bytes), leaving 236 bytes to put inside the alert string. With ASCII that will be 236 characters, and could be lesser with UTF8 and UTF16.

Beeves answered 10/6, 2011 at 15:21 Comment(3)
ASCII encoding violates the JSON spec, which requires UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, or UTF-32BE. See ietf.org/rfc/rfc4627.txt; page 4.Eddra
ASCII is a subset of UTF-8, so it is always safe to transmit 8-bit ASCII over the wire.Headgear
just curious, why you mentioned then It should be 236 bytes. ..I'm running with truncate issue..if I count total char length then it's not exceeding more then 1024 char, truncate alert message char length is 509 I'm receiving. What could be possible reason of truncate response. Any suggestion !!Belisle
N
15

The limit of the enhanced format notifications is documented here.

It explicitly states:

The payload must not exceed 256 bytes and must not be null-terminated.

ascandroli claims above that they were able to send messages with 1400 characters. My own testing with the new notification format showed that a message just 1 byte over the 256 byte limit was rejected. Given that the docs are very explicit on this point I suggest it is safer to use 256 regardless of what you may be able to achieve experimentally as there is no guarantee Apple won't change it to 256 in the future.

As for the alert text itself, if you can fit it in the 256 total payload size then it will be displayed by iOS. They truncate the message that shows up on the status bar, but if you open the notification center, the entire message is there. It even renders newline characters \n.

Navarra answered 27/4, 2013 at 3:41 Comment(0)
T
11

EDIT:

Updating the answer with latest information

The maximum size allowed for a notification payload depends on which provider API you employ.

When using the legacy binary interface, maximum payload size is 2KB (2048 bytes).

When using the HTTP/2 provider API, maximum payload size is 4KB (4096 bytes). For Voice over Internet Protocol (VoIP) notifications, the maximum size is 5KB (5120 bytes)

OLD ANSWER: According to the apple doc the payload for iOS 8 is 2 kilobytes (2048 bytes) and 256 bytes for iOS 7 and prior. (removed the link as it was an old doc and it's broken now)

So if you just send text you have 2028 (iOS 8+) or 236 (iOS 7-) characters available.

The Notification Payload

Each remote notification includes a payload. The payload contains information about how the system should alert the user as well as any custom data you provide. In iOS 8 and later, the maximum size allowed for a notification payload is 2 kilobytes; Apple Push Notification service refuses any notification that exceeds this limit. (Prior to iOS 8 and in OS X, the maximum payload size is 256 bytes.)

But I've tested and you can send 2 kilobytes to iOS 7 devices too, even in production configurations

Tamayo answered 23/12, 2014 at 13:47 Comment(1)
Dear downvoter, if you downvote because of the links being broken, all the information is already here and it's correct, the link were only for reference. Also, it's good to comment why you donwvoted.Tamayo
K
10

Here're some screenshots (banner, alert, & notification center)

AlertBannerNotification Center

Kneehole answered 22/6, 2015 at 20:48 Comment(0)
F
7

For regular remote notifications, the maximum size is 4KB (4096 bytes) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

###iOS the size limit is 256 bytes, but since the introduction of iOS 8 has changed to 2kb!

https://forums.aws.amazon.com/ann.jspa?annID=2626

With iOS 8, Apple introduced new features that enable some rich new use cases for mobile push notifications — interactive push notifications, third party widgets, and larger (2 KB) payloads. Today, we are pleased to announce support for the new mobile push capabilities announced with iOS 8. We are publishing a new iOS 8 Sample App that demonstrates how these new features can be implemented with SNS, and have also implemented support for larger 2KB payloads.

Firstnighter answered 24/9, 2014 at 0:30 Comment(0)
L
5

According to the WWDC 713_hd_whats_new_in_ios_notifications. The previous size limit of 256 bytes for a push payload has now been increased to 2 kilobytes for iOS 8.

Source: http://asciiwwdc.com/2014/sessions/713?q=notification#1414.0

Luxor answered 28/7, 2014 at 16:43 Comment(6)
@Diziet Sorry, I can't find an official note on that point but it has been officially announced while the last WWDC. Even Urban Airship annonced it : urbanairship.com/blog/2014/07/02/…Luxor
Here's the slides/video if anyone wants an apple link: developer.apple.com/videos/wwdc/2014 - Search "What's New in iOS Notifications"Tragopan
@kl91 That's OK. Out of sync with the comments, I deleted my comment when I found the source. If you download the PDF it's on page 82.Tragopan
@kl94, so if the app still support targeting for iOS 7, will the 2kB size limit also apply to push notifications send to iOS 7 devices? Or the question is: is the new 2kB for all push notifications, no matter which platform it target to?Okelley
@Okelley We can optimistically think the new size limit will be apply to every platform.Luxor
I still not able to receive payload size which is even less then 2KB. How this make sense when Apple say it increased to 5KB for VOIP. Any suggestion ?Gorton
G
1

Apple push will reject a string for a variety of reasons. I tested a variety of scenarios for push delivery, and this was my working fix (in python):

#  Apple rejects push payloads > 256 bytes (truncate msg to < 120 bytes to be safe)
if len(push_str) > 120:
    push_str = push_str[0:120-3] + '...'

# Apple push rejects all quotes, remove them
import re
push_str = re.sub("[\"']", '', push_str)

# Apple push needs to newlines escaped
import MySQLdb
push_str = MySQLdb.escape_string(push_str)

# send it
import APNSWrapper
wrapper = APNSWrapper.APNSNotificationWrapper(certificate=...)
message = APNSWrapper.APNSNotification()
message.token(...)
message.badge(1)
message.alert(push_str)
message.sound("default")
wrapper.append(message)
wrapper.notify()
Garrettgarrick answered 12/6, 2014 at 14:23 Comment(2)
Thanks. I think the important bit is the reasoning behind 120, though - how did you get to that number? Would it be better to do the length truncation after the quotes and the newlines though, since that's a better representation of the length of the final string as sent to Apple?Topgallant
Thanks for your comment on removing all quotes, on iOS 11 it has a weird bug where it sounds the message but doesn't show anything.Alper
R
1

According to updated Apple document (check my answer date):

"... When using the HTTP/2 provider API, maximum payload size is 4096 bytes. Using the legacy binary interface, maximum payload size is 2048 bytes. Apple Push Notification service (APNs) refuses any notification that exceeds the maximum size."

Reopen answered 27/1, 2016 at 19:35 Comment(0)
S
1

Apple Updated Doc:

Each remote notification includes a payload. The payload contains information about how the system should alert the user as well as any custom data you provide. The maximum size allowed for a notification payload depends on which provider API you employ. When using the HTTP/2 provider API, maximum payload size is 4096 bytes. Using the legacy binary interface, maximum payload size is 2048 bytes. Apple Push Notification service (APNs) refuses any notification that exceeds the maximum size.

Sim answered 21/5, 2016 at 3:16 Comment(0)
D
0

see my test here

I could send up to 33 Chinese characters and 13 bytes of custom values.

Dismay answered 16/7, 2014 at 9:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.