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

IphoneIosPush Notification

Iphone Problem Overview


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.

Iphone Solutions


Solution 1 - Iphone

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.

Solution 2 - Iphone

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.

Solution 3 - Iphone

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.

Solution 4 - Iphone

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

Solution 5 - Iphone

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

AlertBannerNotification Center

Solution 6 - Iphone

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.

Solution 7 - Iphone

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

Solution 8 - Iphone

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()

Solution 9 - Iphone

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."

Solution 10 - Iphone

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.

Solution 11 - Iphone

see my test here

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionhpiqueView Question on Stackoverflow
Solution 1 - IphoneascandroliView Answer on Stackoverflow
Solution 2 - IphoneAnuragView Answer on Stackoverflow
Solution 3 - IphoneWilliam DennissView Answer on Stackoverflow
Solution 4 - IphonejcesarmobileView Answer on Stackoverflow
Solution 5 - IphoneMobileDevView Answer on Stackoverflow
Solution 6 - IphoneJorgesysView Answer on Stackoverflow
Solution 7 - IphoneklefevreView Answer on Stackoverflow
Solution 8 - IphonePhilip FungView Answer on Stackoverflow
Solution 9 - IphoneBurakView Answer on Stackoverflow
Solution 10 - IphoneSaRaVaNaN DMView Answer on Stackoverflow
Solution 11 - IphonefirebearView Answer on Stackoverflow