ความยาวสูงสุดของข้อความแจ้งเตือนผลักดันคืออะไร?


142

ความยาวสูงสุดของข้อความแจ้งเตือนของการแจ้งเตือนแบบพุชของ iOS คืออะไร

เอกสารระบุว่าน้ำหนักบรรทุกการแจ้งเตือนจะต้องมีการภายใต้ 256 ไบต์รวมแต่แน่นอนต้องมีขีด จำกัด ของตัวละครที่เฉพาะเจาะจงสำหรับข้อความแจ้งเตือน

คำตอบ:


245

ขีด จำกัด ที่แท้จริงสำหรับข้อความแจ้งเตือนจะไม่ถูกบันทึกไว้ที่ใดก็ได้ สิ่งเดียวที่เอกสารกล่าวคือ:

ใน iOS 8 และใหม่กว่าขนาดสูงสุดที่อนุญาตสำหรับเพย์โหลดการแจ้งเตือนคือ 2 กิโลไบต์ Apple Push Notification Service ปฏิเสธการแจ้งเตือนใด ๆ ที่เกินขีด จำกัด นี้ (ก่อนหน้า iOS 8 และใน OS X ขนาดโหลดสูงสุดคือ 256 ไบต์)

นี่คือสิ่งที่ฉันพบได้จากการทดลอง

  • การแจ้งเตือน:ก่อนหน้า iOS 7 ขีด จำกัด การแสดงผลการแจ้งเตือนคือ 107 ตัวอักษร ข้อความที่ใหญ่ขึ้นถูกตัดทอนและคุณจะได้รับ "... " ที่ท้ายข้อความที่แสดง ด้วย iOS 7 ขีด จำกัด ที่ดูเหมือนจะเพิ่มขึ้นเป็น 235 ตัวอักษร หากคุณใช้เกิน 8 บรรทัดข้อความของคุณจะถูกตัดทอน
  • แบนเนอร์: แบนเนอร์ถูกตัดทอนประมาณ 62 ตัวอักษรหรือ 2 บรรทัด
  • ศูนย์การแจ้งเตือน:ข้อความในศูนย์การแจ้งเตือนจะถูกตัดทอนประมาณ 110 ตัวอักษรหรือ 4 บรรทัด
  • ล็อคหน้าจอ:เหมือนกับศูนย์การแจ้งเตือน

เช่นเดียวกับการแจ้งเตือนที่นี่เป็นบันทึกที่ดีมากจากเอกสารราชการ

หากจำเป็น iOS จะตัดทอนข้อความของคุณเพื่อให้เหมาะสมกับรูปแบบการจัดส่งการแจ้งเตือนแต่ละรูปแบบ เพื่อผลลัพธ์ที่ดีที่สุดคุณไม่ควรตัดทอนข้อความของคุณ


8
ควรมีการชี้แจงว่า UIAlertView ในแอปไม่มีการ จำกัด การแสดงผล ข้อความที่มีความยาวเท่ากันจะเข้าสู่มุมมองเลื่อน SMS หรือการแจ้งเตือนแบบพุชอาจมีความยาวได้ไม่เกิน 107 ตัวอักษร
azdev

1
และข้อความที่แสดงไม่ได้ถูก จำกัด โดย payload เพราะเมื่อคุณใช้วิธีการโลคัลไลเซชันจะไม่ตรงกับ 1: 1 อีกต่อไป เพย์โหลดอาจสั้นในขณะที่ข้อความสุดท้ายอาจนานกว่านั้นมาก คำถามเกี่ยวกับการแสดงข้อความที่ไม่เกี่ยวข้องกับความยาวสูงสุดของส่วนของข้อมูล
Marcin

1
ฉันสามารถส่งเพย์โหลดขนาดใหญ่ไปยังแซนด์บ็อกซ์และมันจะถูกส่งมอบ แต่เซิร์ฟเวอร์ที่ใช้งานจริงนั้น จำกัด มากเพียง 256 ไบต์และไม่เกินหนึ่งไบต์
DoctorDbx

ทุกคนสามารถบอกความยาวข้อความของข้อความบนจอแสดงผลแบบกด GCM ได้หรือไม่
harikrishnan

1
1. สำหรับการแจ้งเตือน Voice over Internet Protocol (VoIP) ขนาดของส่วนของข้อมูลสูงสุดคือ 5 KB (5120 bytes) 2. สำหรับการแจ้งเตือนระยะไกลอื่น ๆ ทั้งหมดขนาดบรรจุสูงสุดคือ 4 KB (4096 ไบต์)
vikram

26

ควรเป็น 236 ไบต์ ไม่มีข้อ จำกัด เกี่ยวกับขนาดของข้อความแจ้งเตือนเท่าที่ฉันรู้ แต่เฉพาะขนาดของข้อมูลทั้งหมด ดังนั้นเมื่อพิจารณาว่าเพย์โหลดน้อยที่สุดและมีข้อมูลการแจ้งเตือนเพียงอย่างเดียวแล้วควรมีลักษณะดังนี้:

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

ที่ใช้อักขระสูงสุด 20 ตัว (20 ไบต์) เหลือ 236 ไบต์เพื่อใส่ในสตริงการแจ้งเตือน ด้วย ASCII ที่จะมี 236 ตัวอักษรและอาจน้อยกว่าด้วย UTF8 และ UTF16


การเข้ารหัส ASCII ละเมิดข้อกำหนด JSON ซึ่งต้องใช้ UTF-8, UTF-16LE, UTF-16BE, UTF-32LE หรือ UTF-32BE ดูietf.org/rfc/rfc4627.txt ; หน้า 4
Aaron Brager

14
ASCII เป็นชุดย่อยของ UTF-8 ดังนั้นจึงปลอดภัยเสมอที่จะส่ง ASCII 8 บิตผ่านสาย
Patrick Horn

แค่อยากรู้ว่าทำไมคุณพูดถึงมันควรจะเป็น 236 ไบต์ .. ฉันกำลังทำงานกับปัญหาที่ถูกตัดทอน .. หากฉันนับความยาวถ่านทั้งหมดแล้วไม่เกิน 1024 ถ่านข้อความที่ตัดทอนความยาวถ่านคือ 509 ที่ฉันได้รับ สาเหตุที่เป็นไปได้ของการตอบสนองที่ถูกตัดทอน ข้อเสนอแนะใด ๆ !!
Hitendra Joshi

15

ขีด จำกัด ของการแจ้งเตือนรูปแบบที่สมบูรณ์เป็นเอกสารที่นี่

มันระบุอย่างชัดเจน:

เพย์โหลดต้องไม่เกิน 256 ไบต์และต้องไม่เป็นโมฆะ

ascandroli การเรียกร้องดังกล่าวข้างต้นว่าพวกเขาสามารถที่จะส่งข้อความที่มี 1,400 ตัวอักษร การทดสอบรูปแบบการแจ้งเตือนใหม่ของฉันเองแสดงให้เห็นว่าข้อความเพียง 1 ไบต์เกินขีด จำกัด 256 ไบต์ถูกปฏิเสธ ระบุว่าเอกสารมีความชัดเจนมากในจุดนี้ฉันขอแนะนำว่าปลอดภัยกว่าที่จะใช้ 256 ไม่ว่าคุณจะสามารถทดลองใช้งานได้สำเร็จเนื่องจากไม่มีการรับประกันว่า Apple จะไม่เปลี่ยนเป็น 256 ในอนาคต

สำหรับข้อความแจ้งเตือนตัวเองถ้าคุณสามารถใส่ขนาดบรรจุได้ทั้งหมด 256 ขนาดก็จะแสดงโดย iOS พวกเขาตัดทอนข้อความที่ปรากฏบนแถบสถานะ แต่ถ้าคุณเปิดศูนย์การแจ้งเตือนข้อความทั้งหมดจะอยู่ที่นั่น \nมันยังทำให้ตัวละครขึ้นบรรทัดใหม่


12

แก้ไข:

การอัพเดตคำตอบด้วยข้อมูลล่าสุด

ขนาดสูงสุดที่อนุญาตสำหรับเพย์โหลดการแจ้งเตือนขึ้นอยู่กับผู้ให้บริการ API ที่คุณใช้

เมื่อใช้อินเทอร์เฟซแบบไบนารี่ดั้งเดิมขนาดของข้อมูลบรรจุสูงสุดคือ 2KB (2048 ไบต์)

เมื่อใช้ API ของผู้ให้บริการ HTTP / 2 ขนาดบรรจุสูงสุดคือ 4KB (4096 ไบต์) สำหรับการแจ้งเตือน Voice over Internet Protocol (VoIP) ขนาดสูงสุดคือ 5KB (5120 ไบต์)

คำตอบเก่า: ตามเอกสารของ apple น้ำหนักบรรทุกสำหรับ iOS 8 คือ 2 กิโลไบต์ (2048 ไบต์) และ 256 ไบต์สำหรับ iOS 7 และก่อนหน้า (ลบลิงก์เนื่องจากเป็นเอกสารเก่าและใช้งานไม่ได้ตอนนี้)

ดังนั้นถ้าคุณเพิ่งส่งข้อความคุณมีอักขระ 2028 (iOS 8+) หรือ 236 (iOS 7-)

น้ำหนักบรรทุกแจ้งเตือน

การแจ้งเตือนระยะไกลแต่ละครั้งจะมีเพย์โหลด เพย์โหลดประกอบด้วยข้อมูลเกี่ยวกับวิธีที่ระบบควรแจ้งเตือนผู้ใช้รวมถึงข้อมูลที่กำหนดเองใด ๆ ที่คุณให้ไว้ ใน iOS 8 และใหม่กว่าขนาดสูงสุดที่อนุญาตสำหรับเพย์โหลดการแจ้งเตือนคือ 2 กิโลไบต์ บริการ Apple Push Notification ปฏิเสธการแจ้งเตือนใด ๆ ที่เกินขีด จำกัด นี้ (ก่อนหน้า iOS 8 และใน OS X ขนาดโหลดสูงสุดคือ 256 ไบต์)

แต่ฉันได้ทำการทดสอบแล้วและคุณสามารถส่ง 2 กิโลไบต์ไปยังอุปกรณ์ iOS 7 ได้เช่นกันแม้ในการกำหนดค่าการผลิต


เรียนผู้ลงคะแนนต่ำหากคุณ downvote เนื่องจากลิงก์เสียข้อมูลทั้งหมดอยู่ที่นี่แล้วและถูกต้องแล้วลิงก์นั้นมีไว้เพื่ออ้างอิงเท่านั้น นอกจากนี้ยังเป็นการดีที่จะแสดงความคิดเห็นว่าทำไมคุณถึงไม่โหวต
jcesarmobile

10

นี่คือภาพหน้าจอบางส่วน (แบนเนอร์การแจ้งเตือนและศูนย์แจ้งเตือน)

เตือนภัยธงศูนย์แจ้งเตือน


7

สำหรับการแจ้งเตือนระยะไกลปกติขนาดสูงสุดคือ4KB (4096 ไบต์) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS ขนาด จำกัด คือ 256 ไบต์ แต่เนื่องจากการแนะนำ iOS 8 ได้เปลี่ยนเป็น 2kb!

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

ด้วย iOS 8 แอปเปิ้ลได้เปิดตัวคุณสมบัติใหม่ที่เปิดใช้งานกรณีการใช้งานใหม่มากมายสำหรับการแจ้งเตือนแบบพุชผ่านมือถือ - การแจ้งเตือนแบบพุชแบบอินเทอร์เฟซวิดเจ็ตของบุคคลที่สาม วันนี้เรามีความยินดีที่จะประกาศการสนับสนุนสำหรับความสามารถในการพุชแบบพกพาใหม่ที่ประกาศกับ iOS 8 เรากำลังเผยแพร่แอพตัวอย่าง iOS 8 ใหม่ที่แสดงให้เห็นว่าฟีเจอร์ใหม่เหล่านี้สามารถนำไปใช้กับ SNS ได้อย่างไร


5

ตามที่ WWDC 713_hd_whats_new_in_ios_notifications ขีด จำกัด ขนาดก่อนหน้าของ256 ไบต์สำหรับโหลดเพย์โหลดเพิ่มเป็น2 กิโลไบต์สำหรับ iOS 8

ที่มา: http://asciiwwdc.com/2014/sessions/713?q=notification#1414.0


@Diziet ขออภัยฉันไม่พบบันทึกอย่างเป็นทางการในจุดนั้น แต่ได้มีการประกาศอย่างเป็นทางการในขณะที่ WWDC ล่าสุด แม้แต่ Urban Airship ได้ประกาศว่า: urbanairship.com/blog/2014/07/02/…
klefevre

นี่คือสไลด์ / วิดีโอหากใครต้องการลิงค์ Apple: developer.apple.com/videos/wwdc/2014 - ค้นหา "มีอะไรใหม่ในการแจ้งเตือน iOS"
Diziet

@ kl91 ไม่เป็นไร ไม่สอดคล้องกับความคิดเห็นฉันลบความคิดเห็นของฉันเมื่อฉันพบแหล่งที่มา หากคุณดาวน์โหลด PDF เป็นหน้า 82
Diziet

1
@ kl94 ดังนั้นหากแอปยังคงสนับสนุนการกำหนดเป้าหมายสำหรับ iOS 7 จะมีการ จำกัด ขนาด 2kB สำหรับการแจ้งเตือนแบบพุชที่ส่งไปยังอุปกรณ์ iOS 7 หรือไม่ หรือคำถามคือ: 2kB ใหม่สำหรับการแจ้งเตือนแบบพุชไม่ว่าจะเป็นแพลตฟอร์มใด
จิง

@Jing เราสามารถมองโลกในแง่ดีว่าขีด จำกัด ขนาดใหม่จะมีผลกับทุกแพลตฟอร์ม
klefevre

1

Apple push จะปฏิเสธสตริงด้วยเหตุผลหลายประการ ฉันทดสอบสถานการณ์จำลองมากมายสำหรับการส่งแบบพุชและนี่คือการแก้ไขที่ใช้งานได้ของฉัน

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

ขอบคุณ ฉันคิดว่าบิตสำคัญคือเหตุผลที่อยู่เบื้องหลัง 120 แม้ว่า - คุณจะไปที่หมายเลขนั้นได้อย่างไร มันจะดีกว่าไหมที่จะตัดทอนความยาวหลังจากเครื่องหมายคำพูดและบรรทัดใหม่แม้ว่าจะเป็นการแสดงถึงความยาวของสตริงสุดท้ายที่ส่งไปยัง Apple ดีขึ้นหรือไม่
โฟโต้

ขอบคุณสำหรับความคิดเห็นของคุณเกี่ยวกับการลบเครื่องหมายคำพูดทั้งหมดใน iOS 11 มันมีข้อผิดพลาดแปลก ๆ ที่ฟังข้อความ แต่ไม่แสดงอะไรเลย
Pedro Góes

1

ตามเอกสาร Apple ที่อัพเดท (ตรวจสอบวันที่คำตอบของฉัน):

"... เมื่อใช้ API ของผู้ให้บริการ HTTP / 2 ขนาดของข้อมูลที่บรรจุสูงสุดคือ 4096 ไบต์การใช้อินเทอร์เฟซแบบไบนารี่ดั้งเดิมขนาดของข้อมูลที่บรรจุสูงสุดคือ 2048 ไบต์บริการแจ้งเตือนของ Apple Push (APNs) ปฏิเสธการแจ้งเตือนใด ๆ


1

เอกสารอัพเดทของ Apple:

การแจ้งเตือนระยะไกลแต่ละครั้งจะมีเพย์โหลด เพย์โหลดประกอบด้วยข้อมูลเกี่ยวกับวิธีที่ระบบควรแจ้งเตือนผู้ใช้รวมถึงข้อมูลที่กำหนดเองใด ๆ ที่คุณให้ไว้ ขนาดสูงสุดที่อนุญาตสำหรับเพย์โหลดการแจ้งเตือนขึ้นอยู่กับผู้ให้บริการ API ที่คุณใช้ เมื่อใช้ HTTP / ผู้ให้บริการ 2 API ขนาดน้ำหนักบรรทุกสูงสุดคือ 4096 ไบต์ การใช้อินเตอร์เฟสไบนารีดั้งเดิมนั้นขนาดของโหลดสูงสุดคือ 2048ไบต์ บริการ Apple Push Notification (APNs) ปฏิเสธการแจ้งเตือนใด ๆ ที่เกินขนาดสูงสุด


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.