web-dev-qa-db-fra.com

Quelle est la longueur maximale d'un texte d'alerte de notification push?

Quelle est la longueur maximale du texte d'alerte d'une notification Push iOS?

La documentation indique que la charge de notification doit être inférieure à 256 octets au total , mais il doit exister une limite de caractères spécifique pour le texte de l'alerte.

137
hpique

Les limites réelles du texte d'alerte ne sont documentées nulle part. La seule chose que la documentation dit est:

Dans iOS 8 et versions ultérieures, la taille maximale autorisée pour une charge de notification est de 2 kilo-octets; Apple Le service de notification push refuse toute notification dépassant cette limite. (Avant iOS 8 et sous OS X, la taille maximale de la charge utile était de 256 octets.)

C'est ce que j'ai pu trouver en faisant quelques expériences.

  • Alertes: Avant iOS 7, la limite d'affichage des alertes était de 107 caractères. Les plus gros messages ont été tronqués et vous obtenez un "..." à la fin du message affiché. Avec iOS 7, la limite semble être augmentée à 235 caractères. Si vous dépassez 8 lignes, votre message sera également tronqué.
  • Bannières: Les bannières sont tronquées autour de 62 caractères ou 2 lignes.
  • Centre de notification: Les messages dans le centre de notification sont tronqués autour de 110 caractères ou 4 lignes.
  • Écran verrouillé: Identique au centre de notification.

Pour rappel, voici une très bonne note de la documentation officielle:

Si nécessaire, iOS tronque votre message afin qu'il s'intègre bien à chaque style de livraison des notifications. Pour de meilleurs résultats, vous ne devez pas tronquer votre message.

236
ascandroli

Ce devrait être 236 octets. Autant que je sache, il n'y a pas de restriction quant à la taille du texte d'alerte, mais uniquement à la taille totale de la charge utile. Donc, si la charge utile est minimale et ne contient que les informations d’alerte, elle devrait ressembler à ceci:

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

Cela prend 20 caractères (20 octets), laissant 236 octets à insérer dans la chaîne d'alerte. Avec ASCII, ce sera 236 caractères et pourrait être moindre avec UTF8 et UTF16.

26
Anurag

La limite des notifications de format amélioré est documenté ici .

Il est explicitement indiqué:

La charge utile ne doit pas dépasser 256 octets et ne doit pas être terminée par un caractère nul.

ascandroli affirme ci-dessus qu'ils ont pu envoyer des messages de 1400 caractères. Mes propres tests avec le nouveau format de notification ont montré qu'un message d'un octet au dessus de la limite de 256 octets avait été rejeté. Etant donné que les docs sont très explicites sur ce point, je suggère qu’il est plus sûr d’en utiliser 256 indépendamment de ce que vous pourrez peut-être réaliser expérimentalement car il n’existe garantie Apple ne changera pas en 256 à l'avenir.

En ce qui concerne le texte d'alerte lui-même, si vous pouvez l'adapter à la taille totale de la charge utile 256, il sera affiché par iOS. Ils tronquent le message qui apparaît dans la barre d'état, mais si vous ouvrez le centre de notification, le message entier est là. Il rend même les caractères de nouvelle ligne \n.

15
William Denniss

MODIFIER:

Mise à jour de la réponse avec dernières informations

La taille maximale autorisée pour une charge de notification dépend de l'API de fournisseur que vous utilisez.

Lors de l'utilisation de l'interface binaire héritée, la taille maximale de la charge utile est de 2 Ko (2048 octets).

Lorsque vous utilisez l'API du fournisseur HTTP/2, la taille maximale de la charge utile est de 4 Ko (4096 octets). Pour les notifications VoIP (Voice over Internet Protocol), la taille maximale est de 5 Ko (5 120 octets).

RÉPONSE ANCIENNE: Selon la doc Apple, la charge utile pour iOS 8 est de 2 kilo-octets (2048 octets) et de 256 octets pour iOS 7 et les versions antérieures. (enlevé le lien car c'était un vieux doc et il est cassé maintenant)

Donc, si vous envoyez simplement du texte, vous avez 2028 (iOS 8+) ou 236 (iOS 7-) caractères disponibles.

La charge de notification

Chaque notification à distance comprend une charge utile. La charge utile contient des informations sur la manière dont le système doit alerter l'utilisateur ainsi que sur les données personnalisées que vous fournissez. Dans iOS 8 et versions ultérieures, la taille maximale autorisée pour une charge de notification est de 2 kilo-octets; Apple Le service de notification push refuse toute notification dépassant cette limite. (Avant iOS 8 et sous OS X, la taille maximale de la charge utile était de 256 octets.)

Mais j'ai déjà testé et vous pouvez aussi envoyer 2 kilo-octets à des appareils iOS 7, même dans des configurations de production

11
jcesarmobile

Voici quelques captures d'écran (bannière, alerte et centre de notification)

AlertBannerNotification Center

10
Loozie

Pour les notifications distantes régulières, la taille maximale est de 4 Ko (4096 octets) https://developer.Apple.com/library/content/ documentation/RéseauInternet/Conceptuel/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS, la taille maximale est de 256 octets, mais depuis l'introduction de iOS 8, elle est passée à 2 Ko!

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

Avec iOS 8, Apple a introduit de nouvelles fonctionnalités qui permettent de nombreuses nouvelles utilisations pour les notifications Push mobiles: notifications Push interactives, widgets tiers et charges utiles plus importantes (2 Ko). Nous sommes heureux d'annoncer aujourd'hui la prise en charge des nouvelles fonctionnalités de Push mobile annoncées avec iOS 8. Nous publions une nouvelle application exemple pour iOS 8 qui montre comment ces nouvelles fonctionnalités peuvent être mises en œuvre avec SNS. Nous avons également implémenté la prise en charge de charges utiles plus importantes de 2 Ko.

7
Jorgesys

Selon la WWDC 713_hd_whats_new_in_ios_notifications. La limite de taille précédente de 256 octets pour une charge utile Push a été augmentée à 2 kilo-octets pour iOS 8.

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

5
klefevre

Selon document mis à jour Apple (vérifiez la date de votre réponse):

"... Lors de l'utilisation de l'API du fournisseur HTTP/2, la taille maximale de la charge utile est de 4096 octets. En utilisant l'interface binaire héritée, la taille maximale de la charge utile est de 2048 octets. Apple Le service de notification push refuse de dépasse la taille maximale. "

1
Burak

Apple a mis à jour le document:

Chaque notification à distance comprend une charge utile. La charge utile contient des informations sur la manière dont le système doit alerter l'utilisateur ainsi que sur les données personnalisées que vous fournissez. La taille maximale autorisée pour une charge de notification dépend de l'API de fournisseur que vous utilisez. Lorsque vous utilisez l'API du fournisseur HTTP/2, la taille maximale de la charge utile est de 4096 octets. En utilisant interface binaire héritée, la taille maximale de la charge utile est 2048 octets. Apple Le service de notification push (APN) refuse toute notification dépassant la taille maximale.

1
SaRaVaNaN DM

Apple Push rejettera une chaîne pour diverses raisons. J'ai testé divers scénarios pour la livraison Push, et c'était ma solution de travail (en 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()
1
Philip Fung

voir mon test ici

Je pouvais envoyer jusqu'à 33 caractères chinois et 13 octets de valeurs personnalisées.

0
firebear