Anlık Bildirim uyarı metninin maksimum uzunluğu nedir?


Yanıtlar:


245

Uyarı metninin gerçek sınırları hiçbir yerde belgelenmemiştir. Belgelerin söylediği tek şey :

İOS 8 ve sonraki sürümlerde, bildirim yükü için izin verilen maksimum boyut 2 kilobayttır; Apple Anında Bildirim Hizmeti bu sınırı aşan bildirimleri reddeder. (İOS 8'den önce ve OS X'te maksimum yük boyutu 256 bayttır.)

Bazı deneyler yaparken bulabildim.

  • Uyarılar: iOS 7'den önce, uyarı görüntüleme sınırı 107 karakterdi. Daha büyük mesajlar kesildi ve görüntülenen mesajın sonunda bir "..." alacaksınız. İOS 7 ile sınır 235 karaktere çıkarılmış gibi görünüyor. 8 satırın üzerine giderseniz mesajınız da kesilir.
  • Afişler: Afişler 62 karakter veya 2 satır civarında kesilir.
  • Bildirim Merkezi: Bildirim merkezindeki mesajlar 110 veya 4 satır civarında kesilir.
  • Kilit Ekranı: Bir bildirim merkezi ile aynı.

Burada hatırlatmak gerekirse, resmi belgelerden çok iyi bir not var:

Gerekirse iOS, iletinizi her bildirim teslim stiline sığacak şekilde keser; en iyi sonuçlar için mesajınızı kısaltmamalısınız.


8
Uygulama içi UIAlertView'de görüntüleme sınırı olmadığı açıklığa kavuşturulmalıdır; Belli bir uzunluktaki metin kaydırma görünümüne geçer. Bununla birlikte, bir SMS veya push uyarısı muhtemelen 107 karakter sınırına sahiptir.
azdev

1
Görüntülenen metin yük ile sınırlı değildir, çünkü yerelleştirme yöntemini kullandığınızda artık 1: 1 ile eşleşmez. Son mesaj çok daha uzun olabilirken, taşıma kapasitesi kısa olabilir. Soru, mesajın maksimum yük uzunluğu ile kesinlikle ilgili olmadığı mesajını göstermektir.
Marcin

1
Sandbox'a büyük bir yük gönderebilirim ve teslim edilirdi, ancak üretim sunucusu bir bayt daha değil, sadece 256 bayt için çok kısıtlayıcıydı.
DoctorDbx

Herkes GCM Android push notif ekran metin uzunluğunu söyleyebilir?
harikrishnan

1
1. İnternet Üzerinden Ses Protokolü (VoIP) bildirimleri için maksimum yük boyutu 5 KB'dir (5120 bayt). 2. Diğer tüm uzaktan bildirimler için, maksimum taşıma kapasitesi boyutu 4 KB'dir (4096 bayt).
vikram

26

236 bayt olmalıdır. Bildiğim kadarıyla uyarı metninin boyutu konusunda herhangi bir kısıtlama yoktur, sadece toplam yük boyutu. Dolayısıyla, yükün minimum olup olmadığını ve yalnızca uyarı bilgilerini içerip içermediğini göz önüne alarak, şöyle görünmelidir:

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

Bu, 20 karakter (20 bayt) alır ve uyarı dizesinin içine 236 bayt bırakır. ASCII ile bu 236 karakter ve UTF8 ve UTF16 ile daha az olabilir.


ASCII kodlaması, UTF-8, UTF-16LE, UTF-16BE, UTF-32LE veya UTF-32BE gerektiren JSON spesifikasyonunu ihlal eder. Bkz. İetf.org/rfc/rfc4627.txt ; sayfa 4.
Aaron Brager

14
ASCII, UTF-8'in bir alt kümesidir, bu nedenle tel üzerinden 8 bitlik ASCII iletmek her zaman güvenlidir.
Patrick Horn

sadece merak ettiniz, neden bahsettiğinizi 236 bayt olmalı. .. Ben kesilme sorunu ile koşuyorum .. toplam char uzunluğu saymak sonra 1024 char daha aşmıyorsa, trunkate uyarı mesajı char uzunluğu 509 alıyorum. Kesik tepkinin olası nedeni olabilir. Herhangi bir öneri !!
Hitendra Joshi

15

Geliştirilmiş biçim bildirimlerinin sınırı burada belgelenmiştir .

Açıkça şunu belirtmektedir:

Yük 256 baytı aşmamalıdır ve boş değerli sonlandırılmamalıdır.

ascandroli yukarıda 1400 karakterle mesaj gönderebildiklerini iddia ediyor . Yeni bildirim formatı ile yaptığım kendi testlerim 256 bayt sınırını aşan bir mesajın reddedildiğini gösterdi. Dokümanların bu noktada çok açık olduğu göz önüne alındığında, Apple'ın gelecekte 256 olarak değiştirmeyeceğine dair bir garanti olmadığı için deneysel olarak ne başarabileceğinizden bağımsız olarak 256 kullanmanın daha güvenli olduğunu düşünüyorum.

Uyarı metninin kendisine gelince, toplam 256 yük boyutuna sığabilirseniz, iOS tarafından görüntülenecektir. Durum çubuğunda görünen iletiyi kısaltırlar, ancak bildirim merkezini açarsanız, iletinin tamamı oradadır. Hatta yeni satır karakterleri oluşturur \n.


12

DÜZENLE:

Cevabı en son bilgilerle güncelleme

Bildirim yükü için izin verilen maksimum boyut, kullandığınız sağlayıcı API'sine bağlıdır.

Eski ikili arabirimi kullanırken, maksimum yük boyutu 2 KB'dir (2048 bayt).

HTTP / 2 sağlayıcı API'sini kullanırken, maksimum yük boyutu 4KB'dir (4096 bayt). İnternet Üzerinden Ses Protokolü (VoIP) bildirimleri için maksimum boyut 5 KB'dir (5120 bayt)

ESKİ YANIT: Apple doc'a göre iOS 8 için yük 2 kilobayt (2048 bayt) ve iOS 7 ve önceki sürümler için 256 bayt. (eski bir doküman olduğu ve şimdi bozuk olduğu için bağlantı kaldırıldı)

Bu nedenle, yalnızca metin gönderirseniz, 2028 (iOS 8+) veya 236 (iOS 7-) karakter kullanabilirsiniz.

Bildirim Yükü

Her uzaktan bildirim bir yük içerir. Yük, sistemin kullanıcıyı nasıl uyarması gerektiği ve sağladığınız özel veriler hakkında bilgiler içerir. İOS 8 ve sonraki sürümlerde, bildirim yükü için izin verilen maksimum boyut 2 kilobayttır; Apple Anında Bildirim hizmeti, bu sınırı aşan bildirimleri reddeder. (İOS 8'den önce ve OS X'te maksimum yük boyutu 256 bayttır.)

Ancak test ettim ve üretim yapılandırmalarında bile iOS 7 cihazlarına 2 kilobayt gönderebilirsiniz


Sevgili inişli çıkışlı, eğer bağlantıların kopması nedeniyle aşağı inerseniz, tüm bilgiler zaten burada ve doğru, bağlantı sadece referans içindir. Ayrıca, neden oy kullanmadığınızı yorumlamak da iyidir.
jcesarmobile

10

İşte bazı ekran görüntüleri (banner, alert ve bildirim merkezi)

UyarmakafişBildirim Merkezi


7

Düzenli uzaktan bildirimler için maksimum boyut 4KB'dir (4096 bayt) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS boyut sınırı 256 bayttır, ancak iOS 8'in tanıtımı 2kb olarak değiştiğinden!

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

İOS 8 ile Apple, mobil push bildirimleri için bazı zengin yeni kullanım durumlarını etkinleştiren yeni özellikler tanıttı - etkileşimli push bildirimleri, üçüncü taraf widget'ları ve daha büyük (2 KB) yükler. Bugün, iOS 8 ile açıklanan yeni mobil push yetenekleri için destek duyurmaktan mutluluk duyuyoruz. Bu yeni özelliklerin SNS ile nasıl uygulanabileceğini gösteren yeni bir iOS 8 Örnek Uygulaması yayınlıyoruz ve ayrıca daha büyük 2KB yükler için destek uyguladık.


5

WWDC'ye göre 713_hd_whats_new_in_ios_notifications. Push yükü için önceki 256 bayt boyut sınırı , şimdi iOS 8 için 2 kilobayta çıkarıldı .

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


@Diziet Maalesef bu konuda resmi bir not bulamıyorum ancak son WWDC sırasında resmi olarak duyuruldu. Urban Airship bile bunu duyurdu: urbanairship.com/blog/2014/07/02/…
klefevre

Herkes bir elma bağlantısı istiyorsa slaytlar / video: developer.apple.com/videos/wwdc/2014 - "iOS Bildirimlerindeki
Yenilikler

@ kl91 Sorun değil. Yorumlar ile senkronizasyon dışında, kaynağı bulduğumda yorumumu sildim. PDF'yi
indirirseniz

1
@ kl94, bu yüzden uygulama hala iOS 7 için hedeflemeyi destekliyorsa, 2kB boyut sınırı iOS 7 cihazlarına gönderilen push bildirimleri için de geçerli olur mu? Veya soru şudur: Yeni 2kB, hangi platformu hedeflese de, tüm push bildirimleri için mi?
Jing

@Jing Yeni boyut sınırının her platform için geçerli olacağını iyimser düşünebiliriz.
klefevre

1

Apple push, bir dizeyi çeşitli nedenlerden dolayı reddedecektir. Push dağıtımı için çeşitli senaryoları test ettim ve bu benim çalışma düzeltmemdi (python'da):

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

Teşekkürler. Önemli olan 120'nin ardındaki mantık olduğunu düşünüyorum - bu sayıya nasıl ulaştınız? Apple'a gönderilen son dizginin uzunluğunun daha iyi bir temsili olduğundan, tırnaklardan ve satırsonlarından sonra uzunluk kesmeyi yapmak daha iyi olur mu?
Rup

Tüm alıntıları kaldırma hakkındaki yorumunuz için teşekkürler, iOS 11'de mesajın duyulduğu ancak hiçbir şey göstermediği garip bir hata var.
Pedro Góes

1

Göre güncellenen Apple belgesinde (cevabım tarihini kontrol):

"... HTTP / 2 sağlayıcı API'sini kullanırken, maksimum yük boyutu 4096 bayttır. Eski ikili arabirimi kullanarak, maksimum yük boyutu 2048 bayttır. Apple Push Bildirim hizmeti (APN'ler), maksimum boyutu aşan bildirimleri reddediyor."


1

Apple Güncelleme Belgesi:

Her uzaktan bildirim bir yük içerir. Yük, sistemin kullanıcıyı nasıl uyarması gerektiği ve sağladığınız özel veriler hakkında bilgiler içerir. Bildirim yükü için izin verilen maksimum boyut, kullandığınız sağlayıcı API'sine bağlıdır. HTTP / 2 sağlayıcı API'sini kullanırken, maksimum yük boyutu 4096 bayttır . Eski ikili arabirimi kullanarak , maksimum yük boyutu 2048 bayttır. Apple Anında Bildirim hizmeti (APN'ler), maksimum boyutu aşan bildirimleri reddeder.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.