Jaka jest maksymalna długość tekstu alertu powiadomienia push na iOS?
W dokumentacji stwierdza, że ładunek zgłoszenie musi być poniżej 256 bajtów w sumie , ale z pewnością nie musi być określony limit znaków dla tekstu alertu.
Jaka jest maksymalna długość tekstu alertu powiadomienia push na iOS?
W dokumentacji stwierdza, że ładunek zgłoszenie musi być poniżej 256 bajtów w sumie , ale z pewnością nie musi być określony limit znaków dla tekstu alertu.
Odpowiedzi:
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.
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.
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.
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
.
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
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.
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
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()
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”.
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.