ความยาวสูงสุดของข้อความแจ้งเตือนของการแจ้งเตือนแบบพุชของ iOS คืออะไร
เอกสารระบุว่าน้ำหนักบรรทุกการแจ้งเตือนจะต้องมีการภายใต้ 256 ไบต์รวมแต่แน่นอนต้องมีขีด จำกัด ของตัวละครที่เฉพาะเจาะจงสำหรับข้อความแจ้งเตือน
ความยาวสูงสุดของข้อความแจ้งเตือนของการแจ้งเตือนแบบพุชของ iOS คืออะไร
เอกสารระบุว่าน้ำหนักบรรทุกการแจ้งเตือนจะต้องมีการภายใต้ 256 ไบต์รวมแต่แน่นอนต้องมีขีด จำกัด ของตัวละครที่เฉพาะเจาะจงสำหรับข้อความแจ้งเตือน
คำตอบ:
ขีด จำกัด ที่แท้จริงสำหรับข้อความแจ้งเตือนจะไม่ถูกบันทึกไว้ที่ใดก็ได้ สิ่งเดียวที่เอกสารกล่าวคือ:
ใน iOS 8 และใหม่กว่าขนาดสูงสุดที่อนุญาตสำหรับเพย์โหลดการแจ้งเตือนคือ 2 กิโลไบต์ Apple Push Notification Service ปฏิเสธการแจ้งเตือนใด ๆ ที่เกินขีด จำกัด นี้ (ก่อนหน้า iOS 8 และใน OS X ขนาดโหลดสูงสุดคือ 256 ไบต์)
นี่คือสิ่งที่ฉันพบได้จากการทดลอง
เช่นเดียวกับการแจ้งเตือนที่นี่เป็นบันทึกที่ดีมากจากเอกสารราชการ
หากจำเป็น iOS จะตัดทอนข้อความของคุณเพื่อให้เหมาะสมกับรูปแบบการจัดส่งการแจ้งเตือนแต่ละรูปแบบ เพื่อผลลัพธ์ที่ดีที่สุดคุณไม่ควรตัดทอนข้อความของคุณ
ควรเป็น 236 ไบต์ ไม่มีข้อ จำกัด เกี่ยวกับขนาดของข้อความแจ้งเตือนเท่าที่ฉันรู้ แต่เฉพาะขนาดของข้อมูลทั้งหมด ดังนั้นเมื่อพิจารณาว่าเพย์โหลดน้อยที่สุดและมีข้อมูลการแจ้งเตือนเพียงอย่างเดียวแล้วควรมีลักษณะดังนี้:
{"aps":{"alert":""}}
ที่ใช้อักขระสูงสุด 20 ตัว (20 ไบต์) เหลือ 236 ไบต์เพื่อใส่ในสตริงการแจ้งเตือน ด้วย ASCII ที่จะมี 236 ตัวอักษรและอาจน้อยกว่าด้วย UTF8 และ UTF16
ขีด จำกัด ของการแจ้งเตือนรูปแบบที่สมบูรณ์เป็นเอกสารที่นี่
มันระบุอย่างชัดเจน:
เพย์โหลดต้องไม่เกิน 256 ไบต์และต้องไม่เป็นโมฆะ
ascandroli การเรียกร้องดังกล่าวข้างต้นว่าพวกเขาสามารถที่จะส่งข้อความที่มี 1,400 ตัวอักษร การทดสอบรูปแบบการแจ้งเตือนใหม่ของฉันเองแสดงให้เห็นว่าข้อความเพียง 1 ไบต์เกินขีด จำกัด 256 ไบต์ถูกปฏิเสธ ระบุว่าเอกสารมีความชัดเจนมากในจุดนี้ฉันขอแนะนำว่าปลอดภัยกว่าที่จะใช้ 256 ไม่ว่าคุณจะสามารถทดลองใช้งานได้สำเร็จเนื่องจากไม่มีการรับประกันว่า Apple จะไม่เปลี่ยนเป็น 256 ในอนาคต
สำหรับข้อความแจ้งเตือนตัวเองถ้าคุณสามารถใส่ขนาดบรรจุได้ทั้งหมด 256 ขนาดก็จะแสดงโดย iOS พวกเขาตัดทอนข้อความที่ปรากฏบนแถบสถานะ แต่ถ้าคุณเปิดศูนย์การแจ้งเตือนข้อความทั้งหมดจะอยู่ที่นั่น \n
มันยังทำให้ตัวละครขึ้นบรรทัดใหม่
แก้ไข:
การอัพเดตคำตอบด้วยข้อมูลล่าสุด
ขนาดสูงสุดที่อนุญาตสำหรับเพย์โหลดการแจ้งเตือนขึ้นอยู่กับผู้ให้บริการ 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 ได้เช่นกันแม้ในการกำหนดค่าการผลิต
นี่คือภาพหน้าจอบางส่วน (แบนเนอร์การแจ้งเตือนและศูนย์แจ้งเตือน)
สำหรับการแจ้งเตือนระยะไกลปกติขนาดสูงสุดคือ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 ได้อย่างไร
ตามที่ WWDC 713_hd_whats_new_in_ios_notifications ขีด จำกัด ขนาดก่อนหน้าของ256 ไบต์สำหรับโหลดเพย์โหลดเพิ่มเป็น2 กิโลไบต์สำหรับ iOS 8
ที่มา: http://asciiwwdc.com/2014/sessions/713?q=notification#1414.0
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()
ตามเอกสาร Apple ที่อัพเดท (ตรวจสอบวันที่คำตอบของฉัน):
"... เมื่อใช้ API ของผู้ให้บริการ HTTP / 2 ขนาดของข้อมูลที่บรรจุสูงสุดคือ 4096 ไบต์การใช้อินเทอร์เฟซแบบไบนารี่ดั้งเดิมขนาดของข้อมูลที่บรรจุสูงสุดคือ 2048 ไบต์บริการแจ้งเตือนของ Apple Push (APNs) ปฏิเสธการแจ้งเตือนใด ๆ
เอกสารอัพเดทของ Apple:
การแจ้งเตือนระยะไกลแต่ละครั้งจะมีเพย์โหลด เพย์โหลดประกอบด้วยข้อมูลเกี่ยวกับวิธีที่ระบบควรแจ้งเตือนผู้ใช้รวมถึงข้อมูลที่กำหนดเองใด ๆ ที่คุณให้ไว้ ขนาดสูงสุดที่อนุญาตสำหรับเพย์โหลดการแจ้งเตือนขึ้นอยู่กับผู้ให้บริการ API ที่คุณใช้ เมื่อใช้ HTTP / ผู้ให้บริการ 2 API ขนาดน้ำหนักบรรทุกสูงสุดคือ 4096 ไบต์ การใช้อินเตอร์เฟสไบนารีดั้งเดิมนั้นขนาดของโหลดสูงสุดคือ 2048ไบต์ บริการ Apple Push Notification (APNs) ปฏิเสธการแจ้งเตือนใด ๆ ที่เกินขนาดสูงสุด
ดูการทดสอบของฉันที่นี่
ฉันสามารถส่งตัวอักษรจีนสูงสุด 33 ตัวและค่าที่กำหนดเอง 13 ไบต์