Berapa panjang maksimum teks peringatan Pemberitahuan Push?


Jawaban:


245

Batas nyata teks peringatan tidak didokumentasikan di mana pun. Satu-satunya dokumentasi mengatakan adalah:

Di iOS 8 dan yang lebih baru, ukuran maksimum yang diizinkan untuk muatan notifikasi adalah 2 kilobyte; Layanan Pemberitahuan Push Apple menolak pemberitahuan yang melebihi batas ini. (Sebelum iOS 8 dan di OS X, ukuran muatan maksimum adalah 256 byte.)

Inilah yang dapat saya temukan melakukan beberapa percobaan.

  • Peringatan: Sebelum iOS 7, batas tampilan peringatan adalah 107 karakter. Pesan yang lebih besar terpotong dan Anda akan mendapatkan "..." di akhir pesan yang ditampilkan. Dengan iOS 7 batas tampaknya ditingkatkan menjadi 235 karakter. Jika Anda melewati 8 baris pesan Anda juga akan terpotong.
  • Spanduk: Spanduk dipotong sekitar 62 karakter atau 2 baris.
  • Pusat Pemberitahuan: Pesan-pesan di pusat notifikasi terpotong sekitar 110 karakter atau 4 baris.
  • Layar Kunci: Sama seperti pusat notifikasi.

Sama seperti pengingat di sini adalah catatan yang sangat bagus dari dokumentasi resmi:

Jika perlu, iOS memotong pesan Anda sehingga cocok dengan setiap gaya pengiriman pemberitahuan; untuk hasil terbaik, Anda tidak boleh memotong pesan Anda.


8
Harus diklarifikasi bahwa UIAlertView dalam aplikasi tidak memiliki batas tampilan; teks dengan panjang tertentu akan masuk ke tampilan gulir. SMS atau peringatan push mungkin memiliki batas 107 karakter.
azdev

1
Dan teks yang ditampilkan tidak dibatasi oleh payload, karena ketika Anda menggunakan metode pelokalan itu tidak lagi cocok dengan 1: 1. Muatan mungkin pendek sementara pesan akhir mungkin jauh lebih lama. Pertanyaannya adalah tentang menampilkan pesan yang tidak terkait dengan panjang maksimum payload.
Marcin

1
Saya bisa mengirim muatan besar ke sandbox dan itu akan dikirimkan, tetapi server produksi sangat ketat hanya 256 byte dan tidak satu byte lagi.
DoctorDbx

adakah yang bisa memberitahu GCM Android push notif menampilkan panjang teks?
harikrishnan

1
1. Untuk pemberitahuan Voice over Internet Protocol (VoIP), ukuran muatan maksimum adalah 5 KB (5120 bytes). 2. Untuk semua pemberitahuan jarak jauh lainnya, ukuran muatan maksimum adalah 4 KB (4096 byte).
vikram

26

Itu harus 236 byte. Tidak ada batasan ukuran teks peringatan sejauh yang saya tahu, tetapi hanya ukuran muatan total. Jadi mempertimbangkan jika payloadnya minimal dan hanya berisi informasi peringatan, seharusnya terlihat seperti:

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

Itu membutuhkan 20 karakter (20 byte), meninggalkan 236 byte untuk dimasukkan ke dalam string peringatan. Dengan ASCII yang terdiri dari 236 karakter, dan bisa lebih kecil dengan UTF8 dan UTF16.


Pengkodean ASCII melanggar spesifikasi JSON, yang membutuhkan UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, atau UTF-32BE. Lihat ietf.org/rfc/rfc4627.txt ; halaman 4.
Aaron Brager

14
ASCII adalah bagian dari UTF-8, jadi selalu aman untuk mengirimkan ASCII 8-bit melalui kabel.
Patrick Horn

hanya ingin tahu, mengapa Anda sebutkan maka itu harus 236 byte. ..Aku menjalankan dengan masalah terpotong .. jika saya menghitung total panjang char maka itu tidak melebihi lebih dari 1024 char, memotong pesan peringatan panjang char adalah 509 saya menerima. Apa yang mungkin menjadi alasan respons terpotong. Ada saran !!
Hitendra Joshi

15

Batas pemberitahuan format yang ditingkatkan didokumentasikan di sini .

Secara eksplisit menyatakan:

Payload tidak boleh melebihi 256 byte dan tidak boleh diakhiri null.

Ascandroli mengklaim di atas bahwa mereka dapat mengirim pesan dengan 1400 karakter. Pengujian saya sendiri dengan format pemberitahuan baru menunjukkan bahwa pesan hanya 1 byte di atas batas 256 byte ditolak. Mengingat bahwa dokumen sangat eksplisit tentang hal ini, saya sarankan lebih aman untuk menggunakan 256 terlepas dari apa yang dapat Anda capai secara eksperimental karena tidak ada jaminan Apple tidak akan mengubahnya ke 256 di masa mendatang.

Adapun teks peringatan itu sendiri, jika Anda bisa memasangnya dalam 256 ukuran payload total maka akan ditampilkan oleh iOS. Mereka memotong pesan yang muncul di bilah status, tetapi jika Anda membuka pusat notifikasi, seluruh pesan ada di sana. Bahkan membuat karakter baris baru \n.


12

EDIT:

Memperbarui jawabannya dengan informasi terbaru

Ukuran maksimum yang diizinkan untuk muatan notifikasi tergantung pada API penyedia yang Anda gunakan.

Saat menggunakan antarmuka biner lawas, ukuran payload maksimum adalah 2KB (2048 bytes).

Saat menggunakan API penyedia HTTP / 2, ukuran muatan maksimum adalah 4KB (4096 byte). Untuk pemberitahuan Voice over Internet Protocol (VoIP), ukuran maksimum adalah 5KB (5120 byte)

JAWABAN TUA: Menurut dokumen Apple, payload untuk iOS 8 adalah 2 kilobyte (2048 byte) dan 256 byte untuk iOS 7 dan sebelumnya. (menghapus tautan karena itu adalah dokumen lama dan rusak sekarang)

Jadi, jika Anda hanya mengirim teks, Anda memiliki 2028 (iOS 8+) atau 236 (iOS 7-) karakter yang tersedia.

Muatan Pemberitahuan

Setiap notifikasi jarak jauh termasuk muatan. Payload berisi informasi tentang bagaimana sistem harus memperingatkan pengguna serta data khusus yang Anda berikan. Di iOS 8 dan yang lebih baru, ukuran maksimum yang diizinkan untuk muatan notifikasi adalah 2 kilobyte; Layanan Pemberitahuan Push Apple menolak pemberitahuan yang melebihi batas ini. (Sebelum iOS 8 dan di OS X, ukuran muatan maksimum adalah 256 byte.)

Tapi saya sudah menguji dan Anda dapat mengirim 2 kilobyte ke perangkat iOS 7 juga, bahkan dalam konfigurasi produksi


Dear downvoter, jika Anda downvote karena tautannya terputus, semua informasi sudah ada di sini dan itu benar, tautan itu hanya untuk referensi. Juga, ada baiknya mengomentari mengapa Anda tidak memilih.
jcesarmobile

10

Inilah beberapa tangkapan layar (spanduk, lansiran, & pusat notifikasi)

WaspadaSpandukPusat Pemberitahuan


7

Untuk pemberitahuan jarak jauh biasa, ukuran maksimum adalah 4KB (4096 byte) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS batas ukurannya adalah 256 byte, tetapi sejak diperkenalkannya iOS 8 telah berubah menjadi 2kb!

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

Dengan iOS 8, Apple memperkenalkan fitur-fitur baru yang memungkinkan beberapa kasus penggunaan baru yang kaya untuk pemberitahuan push seluler - pemberitahuan push interaktif, widget pihak ketiga, dan muatan yang lebih besar (2 KB). Hari ini, kami dengan senang hati mengumumkan dukungan untuk kapabilitas push seluler baru yang diumumkan dengan iOS 8. Kami menerbitkan Aplikasi Sampel iOS 8 baru yang menunjukkan bagaimana fitur-fitur baru ini dapat diimplementasikan dengan SNS, dan juga telah mengimplementasikan dukungan untuk muatan 2KB yang lebih besar.


5

Menurut WWDC 713_hd_whats_new_in_ios_notifications. Batas ukuran sebelumnya 256 byte untuk payload push sekarang telah ditingkatkan menjadi 2 kilobyte untuk iOS 8.

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


@Diziet Maaf, saya tidak dapat menemukan catatan resmi tentang hal itu tetapi telah diumumkan secara resmi saat WWDC terakhir. Bahkan Urban Airship mencapainya: urbanairship.com/blog/2014/07/02/…
klefevre

Inilah slide / video jika ada yang menginginkan tautan apel: developer.apple.com/videos/wwdc/2014 - Cari "Apa yang Baru di Pemberitahuan iOS"
Diziet

@ kl91 Tidak apa-apa. Tidak sinkron dengan komentar, saya menghapus komentar saya ketika saya menemukan sumbernya. Jika Anda mengunduh PDF, ada di halaman 82.
Diziet

1
@ kl94, jadi jika aplikasi masih mendukung penargetan untuk iOS 7, apakah batas ukuran 2kB juga berlaku untuk pengiriman notifikasi push ke perangkat iOS 7? Atau pertanyaannya adalah: apakah 2kB baru untuk semua pemberitahuan push, apa pun platform yang menjadi targetnya?
Jing

@ Jing Kita dapat dengan optimis berpikir batas ukuran baru akan berlaku untuk setiap platform.
klefevre

1

Apple push akan menolak string karena berbagai alasan. Saya menguji berbagai skenario untuk pengiriman push, dan ini adalah perbaikan pekerjaan saya (dengan 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()

Terima kasih. Saya pikir bagian yang penting adalah alasan di balik angka 120, - bagaimana Anda bisa sampai ke angka itu? Akankah lebih baik melakukan pemotongan panjang setelah tanda kutip dan baris baru, karena itu merupakan representasi yang lebih baik dari panjang string terakhir yang dikirim ke Apple?
Rup

Terima kasih atas komentar Anda tentang menghapus semua kutipan, di iOS 11 ada bug aneh di mana pesan itu terdengar tetapi tidak menunjukkan apa-apa.
Pedro Góes

1

Menurut dokumen Apple yang diperbarui (periksa tanggal jawab saya):

"... Saat menggunakan API penyedia HTTP / 2, ukuran muatan maksimum adalah 4096 byte. Dengan menggunakan antarmuka biner lama, ukuran muatan maksimum adalah 2048 byte. Layanan Pemberitahuan Dorong Apple (APNs) menolak segala pemberitahuan yang melebihi ukuran maksimum."


1

Apple Diperbarui Doc:

Setiap notifikasi jarak jauh termasuk muatan. Payload berisi informasi tentang bagaimana sistem harus memperingatkan pengguna serta data khusus yang Anda berikan. Ukuran maksimum yang diizinkan untuk muatan notifikasi tergantung pada API penyedia yang Anda gunakan. Saat menggunakan API penyedia HTTP / 2, ukuran payload maksimum adalah 4096 byte . Menggunakan antarmuka biner lama, ukuran muatan maksimum adalah 2048 byte. Layanan Pemberitahuan Push Apple (APNs) menolak setiap pemberitahuan yang melebihi ukuran maksimum.


0

lihat tes saya di sini

Saya bisa mengirim hingga 33 karakter Cina dan 13 byte nilai khusus.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.