Jaka jest maksymalna długość tekstu alertu powiadomienia push?

Odpowiedzi:

245

Rzeczywiste ograniczenia tekstu ostrzeżenia nie są nigdzie udokumentowane. Jedyne, co mówi dokumentacja, to:

W systemie iOS 8 i nowszych maksymalny dozwolony rozmiar ładunku powiadomienia to 2 kilobajty; Usługa Apple Push Notification Service odrzuca wszelkie powiadomienia, które przekraczają ten limit. (Przed iOS 8 i OS X maksymalny rozmiar ładunku wynosi 256 bajtów).

Oto, co mogłem znaleźć podczas eksperymentów.

  • Alerty: Przed iOS 7 limit wyświetlania alertów wynosił 107 znaków. Większe wiadomości zostały obcięte, a na końcu wyświetlanej wiadomości pojawił się znak „…”. W przypadku iOS 7 limit wydaje się zwiększać do 235 znaków. Jeśli przekroczysz 8 wierszy, Twoja wiadomość również zostanie obcięta.
  • Banery: Banery są obcięte o około 62 znaki lub 2 linie.
  • Centrum powiadomień: wiadomości w centrum powiadomień są obcinane o około 110 znaków lub 4 linie.
  • Ekran blokady: tak samo jak centrum powiadomień.

Dla przypomnienia, tutaj jest bardzo dobra notatka z oficjalnej dokumentacji:

W razie potrzeby iOS obcina wiadomość, aby dobrze pasowała do każdego stylu dostarczania powiadomień; aby uzyskać najlepsze wyniki, nie należy skracać wiadomości.

ascandroli
źródło
8
Należy wyjaśnić, że UIAlertView w aplikacji nie ma limitu wyświetlania; tekst o określonej długości zostanie wyświetlony w widoku przewijania. Jednak alert SMS lub push prawdopodobnie ma limit 107 znaków.
azdev
1
A wyświetlany tekst nie jest ograniczony przez ładunek, ponieważ gdy używasz metody lokalizacji, nie jest on już zgodny 1: 1. Ładunek może być krótki, a ostatnia wiadomość może być znacznie dłuższa. Pytanie dotyczy wyświetlenia komunikatu, który nie jest ściśle związany z maksymalną długością ładunku.
Marcin
1
Mogłem wysłać ogromny ładunek do piaskownicy i zostałby dostarczony, ale serwer produkcyjny był bardzo restrykcyjny do zaledwie 256 bajtów i ani jednego bajta więcej.
DoctorDbx
Czy ktoś może powiedzieć długość tekstu wyświetlanego w trybie push notyfikacji GCM Android?
harikrishnan
1
1. W przypadku powiadomień protokołu Voice over Internet Protocol (VoIP) maksymalny rozmiar ładunku wynosi 5 KB (5120 bajtów). 2. W przypadku wszystkich innych powiadomień zdalnych maksymalny rozmiar ładunku wynosi 4 KB (4096 bajtów).
vikram
26

Powinien mieć 236 bajtów. O ile wiem, nie ma ograniczeń co do rozmiaru tekstu alertu, a jedynie całkowity rozmiar ładunku. Biorąc więc pod uwagę, czy ładunek jest minimalny i zawiera tylko informacje o alertach, powinien wyglądać następująco:

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

Zajmuje to 20 znaków (20 bajtów), pozostawiając 236 bajtów na umieszczenie w ciągu ostrzeżenia. W przypadku ASCII będzie to 236 znaków i może być mniej w przypadku UTF8 i UTF16.

Anurag
źródło
Kodowanie ASCII narusza specyfikację JSON, która wymaga UTF-8, UTF-16LE, UTF-16BE, UTF-32LE lub UTF-32BE. Zobacz ietf.org/rfc/rfc4627.txt ; strona 4.
Aaron Brager
14
ASCII jest podzbiorem UTF-8, więc przesyłanie 8-bitowego kodu ASCII zawsze jest bezpieczne.
Patrick Horn,
po prostu ciekawy, dlaczego wspomniałeś wtedy Powinien mieć 236 bajtów. .. Pracuję z problemem obcinania znaków .. jeśli liczę całkowitą długość znaków, to nie przekracza ona więcej niż 1024 znaków, długość znaku komunikatu z obcinaniem ostrzeżenia wynosi 509, który otrzymuję. Jaka może być przyczyna skrócenia odpowiedzi. Jakieś sugestie !!
Hitendra Joshi
15

Ograniczenie powiadomień o ulepszonym formacie jest udokumentowane tutaj .

Wyraźnie stwierdza:

Ładunek nie może przekraczać 256 bajtów i nie może być zakończony znakiem null.

ascandroli twierdzi powyżej , że był w stanie wysyłać wiadomości zawierające 1400 znaków. Moje własne testy z nowym formatem powiadomień wykazały, że wiadomość o 1 bajcie przekraczająca limit 256 bajtów została odrzucona. Biorąc pod uwagę, że dokumentacja jest bardzo wyraźna w tym punkcie, sugeruję, że bezpieczniej jest używać 256, niezależnie od tego, co możesz osiągnąć eksperymentalnie, ponieważ nie ma gwarancji, że Apple nie zmieni tego na 256 w przyszłości.

Jeśli chodzi o sam tekst alertu, jeśli zmieścisz go w 256 całkowitym rozmiarze ładunku, zostanie on wyświetlony przez iOS. Obcinają wiadomość, która pojawia się na pasku stanu, ale jeśli otworzysz centrum powiadomień, cała wiadomość jest tam. Renderuje nawet znaki nowej linii \n.

William Denniss
źródło
12

EDYTOWAĆ:

Aktualizacja odpowiedzi o najnowsze informacje

Maksymalny dozwolony rozmiar ładunku powiadomienia zależy od używanego interfejsu API dostawcy.

W przypadku korzystania ze starszego interfejsu binarnego maksymalny rozmiar ładunku wynosi 2 KB (2048 bajtów).

W przypadku korzystania z interfejsu API dostawcy HTTP / 2 maksymalny rozmiar ładunku to 4 KB (4096 bajtów). W przypadku powiadomień Voice over Internet Protocol (VoIP) maksymalny rozmiar to 5 KB (5120 bajtów)

STARE ODPOWIEDŹ: Zgodnie z dokumentem Apple, ładunek dla iOS 8 wynosi 2 kilobajty (2048 bajtów) i 256 bajtów dla iOS 7 i wcześniejszych. (usunięto link, ponieważ był to stary dokument i teraz jest uszkodzony)

Więc jeśli wyślesz tylko tekst, masz dostępnych 2028 (iOS 8+) lub 236 (iOS 7-) znaków.

Ładunek powiadomienia

Każde zdalne powiadomienie zawiera ładunek. Ładunek zawiera informacje o tym, w jaki sposób system powinien ostrzegać użytkownika, a także wszelkie dostarczone przez Ciebie dane niestandardowe. W systemie iOS 8 i nowszych maksymalny dozwolony rozmiar ładunku powiadomienia to 2 kilobajty; Usługa Apple Push Notification odrzuca wszelkie powiadomienia, które przekraczają ten limit. (Przed iOS 8 i OS X maksymalny rozmiar ładunku wynosi 256 bajtów).

Ale przetestowałem i możesz wysłać 2 kilobajty również na urządzenia z iOS 7, nawet w konfiguracjach produkcyjnych

jcesarmobile
źródło
Drogi przeciwniku, jeśli głosujesz przeciw z powodu zerwania linków, wszystkie informacje są już tutaj i są poprawne, link służył tylko jako odniesienie. Dobrze jest też skomentować, dlaczego nie głosowałeś.
jcesarmobile
10

Oto kilka zrzutów ekranu (baner, alert i centrum powiadomień)

AlarmTransparentCentrum powiadomień

Loozie
źródło
7

W przypadku zwykłych powiadomień zdalnych maksymalny rozmiar to 4KB (4096 bajtów) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS limit rozmiaru to 256 bajtów, ale od czasu wprowadzenia iOS 8 zmienił się na 2kb!

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

Wraz z iOS 8 firma Apple wprowadziła nowe funkcje, które umożliwiają nowe, rozbudowane przypadki użycia mobilnych powiadomień push - interaktywne powiadomienia push, widżety innych firm i większe (2 KB) ładunki. Dzisiaj z przyjemnością ogłaszamy obsługę nowych funkcji mobilnych push ogłoszonych w iOS 8. Publikujemy nową przykładową aplikację iOS 8, która demonstruje, jak te nowe funkcje można zaimplementować za pomocą SNS, a także wdrożyliśmy obsługę większych ładunków 2KB.

Jorgesys
źródło
5

Według WWDC 713_hd_whats_new_in_ios_notifications. Poprzedni limit rozmiaru wynoszący 256 bajtów dla ładunku wypychanego został teraz zwiększony do 2 kilobajtów w systemie iOS 8.

Źródło: http://asciiwwdc.com/2014/sessions/713?q=notification#1414.0

klefevre
źródło
@Diziet Przepraszamy, nie mogę znaleźć oficjalnej notatki na ten temat, ale została ona oficjalnie ogłoszona podczas ostatniego WWDC. Ogłosił to nawet Urban Airship: urbanairship.com/blog/2014/07/02/…
klefevre
Oto slajdy / wideo, jeśli ktoś chce mieć link do Apple: developer.apple.com/videos/wwdc/2014 - Wyszukaj „Co nowego w powiadomieniach iOS”
Diziet
@ kl91 To jest OK. Nie zsynchronizowałem się z komentarzami, dlatego usunąłem swój komentarz po znalezieniu źródła. Jeśli pobierzesz plik PDF, znajdziesz go na stronie 82.
Diziet
1
@ kl94, więc jeśli aplikacja nadal obsługuje kierowanie na iOS 7, czy limit rozmiaru 2 kB będzie miał zastosowanie również do powiadomień push wysyłanych na urządzenia z iOS 7? A może pytanie brzmi: czy nowe 2kB dla wszystkich powiadomień push, niezależnie od platformy, na którą jest kierowany?
Jing,
@Jing Możemy optymistycznie sądzić, że nowy limit rozmiaru będzie miał zastosowanie do każdej platformy.
klefevre
1

Apple push odrzuci ciąg z różnych powodów. Przetestowałem różne scenariusze dostarczania wypychanego i to była moja poprawka robocza (w Pythonie):

#  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()
Philip Fung
źródło
Dzięki. Myślę, że ważne jest jednak uzasadnienie 120 - jak doszedłeś do tej liczby? Czy nie byłoby jednak lepiej zrobić obcięcie długości po cudzysłowach i nowych wierszach, ponieważ jest to lepsza reprezentacja długości końcowego ciągu wysyłanego do Apple?
Rup
Dziękuję za komentarz dotyczący usunięcia wszystkich cytatów, na iOS 11 ma dziwny błąd, w którym brzmi wiadomość, ale nic nie pokazuje.
Pedro Góes
1

Według zaktualizowanego dokumentu Apple (sprawdź moją datę odpowiedzi):

„... Podczas korzystania z interfejsu API dostawcy HTTP / 2 maksymalny rozmiar ładunku wynosi 4096 bajtów. W przypadku starszego interfejsu binarnego maksymalny rozmiar ładunku wynosi 2048 bajtów. Usługa Apple Push Notification Service (APN) odrzuca wszelkie powiadomienia, które przekraczają maksymalny rozmiar”.

Burak
źródło
1

Zaktualizowany dokument Apple:

Każde zdalne powiadomienie zawiera ładunek. Ładunek zawiera informacje o tym, w jaki sposób system powinien ostrzegać użytkownika, a także wszelkie dostarczone przez Ciebie dane niestandardowe. Maksymalny dozwolony rozmiar ładunku powiadomienia zależy od używanego interfejsu API dostawcy. W przypadku korzystania z interfejsu API dostawcy HTTP / 2 maksymalny rozmiar ładunku wynosi 4096 bajtów . Korzystając ze starszego interfejsu binarnego, maksymalny rozmiar ładunku to 2048 bajtów. Usługa Apple Push Notification (APN) odrzuca wszelkie powiadomienia, które przekraczają maksymalny rozmiar.

SaRaVaNaN DM
źródło
0

zobacz mój test tutaj

Mogłem wysłać do 33 chińskich znaków i 13 bajtów wartości niestandardowych.

firebear
źródło