Độ dài tối đa của văn bản cảnh báo của thông báo đẩy iOS là bao nhiêu?
Các tài liệu hướng dẫn quốc gia mà các tải trọng thông báo phải là dưới 256 byte trong tổng số , nhưng chắc chắn phải có một giới hạn ký tự đặc biệt cho các văn bản cảnh báo.
Độ dài tối đa của văn bản cảnh báo của thông báo đẩy iOS là bao nhiêu?
Các tài liệu hướng dẫn quốc gia mà các tải trọng thông báo phải là dưới 256 byte trong tổng số , nhưng chắc chắn phải có một giới hạn ký tự đặc biệt cho các văn bản cảnh báo.
Câu trả lời:
Các giới hạn thực sự cho văn bản cảnh báo không được ghi lại ở bất cứ đâu. Điều duy nhất tài liệu nói là:
Trong iOS 8 trở lên, kích thước tối đa được phép cho tải trọng thông báo là 2 kilobyte; Dịch vụ thông báo đẩy của Apple từ chối mọi thông báo vượt quá giới hạn này. (Trước iOS 8 và trong OS X, kích thước tải trọng tối đa là 256 byte.)
Đây là những gì tôi có thể tìm thấy khi thực hiện một số thí nghiệm.
Cũng như một lời nhắc nhở ở đây là một lưu ý rất tốt từ tài liệu chính thức:
Nếu cần, iOS cắt ngắn tin nhắn của bạn để nó phù hợp với từng kiểu gửi thông báo; để có kết quả tốt nhất, bạn không nên cắt bớt tin nhắn của mình.
Nó sẽ là 236 byte. Không có giới hạn về kích thước của văn bản cảnh báo theo như tôi biết, mà chỉ có tổng kích thước tải trọng. Vì vậy, xem xét nếu tải trọng là tối thiểu và chỉ chứa thông tin cảnh báo, nó sẽ trông như sau:
{"aps":{"alert":""}}
Điều đó chiếm 20 ký tự (20 byte), để lại 236 byte để đặt trong chuỗi cảnh báo. Với ASCII sẽ có 236 ký tự và có thể ít hơn với UTF8 và UTF16.
Giới hạn của các thông báo định dạng nâng cao được ghi lại ở đây .
Nó tuyên bố rõ ràng:
Tải trọng không được vượt quá 256 byte và không được kết thúc bằng null.
ascandroli tuyên bố ở trên rằng họ có thể gửi tin nhắn với 1400 ký tự. Thử nghiệm của riêng tôi với định dạng thông báo mới cho thấy rằng một tin nhắn chỉ 1 byte vượt quá giới hạn 256 byte đã bị từ chối. Cho rằng các tài liệu rất rõ ràng về điểm này, tôi đề nghị sử dụng 256 sẽ an toàn hơn bất kể bạn có thể đạt được bằng thực nghiệm gì vì không có gì đảm bảo Apple sẽ không thay đổi thành 256 trong tương lai.
Đối với chính văn bản cảnh báo, nếu bạn có thể điều chỉnh nó trong tổng kích thước tải trọng 256 thì nó sẽ được hiển thị bởi iOS. Họ cắt bớt thông báo hiển thị trên thanh trạng thái, nhưng nếu bạn mở trung tâm thông báo, toàn bộ tin nhắn sẽ ở đó. Nó thậm chí còn kết xuất các ký tự dòng mới \n
.
BIÊN TẬP:
Cập nhật câu trả lời với thông tin mới nhất
Kích thước tối đa được phép cho tải trọng thông báo tùy thuộc vào API nhà cung cấp bạn sử dụng.
Khi sử dụng giao diện nhị phân cũ, kích thước tải trọng tối đa là 2KB (2048 byte).
Khi sử dụng API nhà cung cấp HTTP / 2, kích thước tải trọng tối đa là 4KB (4096 byte). Đối với thông báo Giao thức thoại qua Internet (VoIP), kích thước tối đa là 5KB (5120 byte)
TRẢ LỜI OLD: Theo tài liệu apple, tải trọng cho iOS 8 là 2 kilobyte (2048 byte) và 256 byte cho iOS 7 trở về trước. (đã xóa liên kết vì đây là tài liệu cũ và hiện đã bị hỏng)
Vì vậy, nếu bạn chỉ gửi văn bản, bạn có sẵn 2028 ký tự (iOS 8+) hoặc 236 (iOS 7-).
Tải trọng thông báo
Mỗi thông báo từ xa bao gồm một tải trọng. Tải trọng chứa thông tin về cách hệ thống sẽ cảnh báo người dùng cũng như mọi dữ liệu tùy chỉnh bạn cung cấp. Trong iOS 8 trở lên, kích thước tối đa được phép cho tải trọng thông báo là 2 kilobyte; Dịch vụ Thông báo Đẩy của Apple từ chối mọi thông báo vượt quá giới hạn này. (Trước iOS 8 và trong OS X, kích thước tải trọng tối đa là 256 byte.)
Nhưng tôi đã thử nghiệm và bạn cũng có thể gửi 2 kilobyte cho các thiết bị iOS 7, ngay cả trong cấu hình sản xuất
Đối với các thông báo từ xa thông thường, kích thước tối đa là 4KB (4096 byte) https://developer.apple.com/l Library / content / documentation / NetworkingI Internet /Conualual / RemoteNotifyingPG / CreatingtheNotificationPayload.html
### iOS giới hạn kích thước là 256 byte, nhưng kể từ khi giới thiệu iOS 8 đã thay đổi thành 2kb!
https://forums.aws.amazon.com/ann.jspa?annID=2626
Với iOS 8, Apple đã giới thiệu các tính năng mới cho phép một số trường hợp sử dụng mới phong phú cho thông báo đẩy trên thiết bị di động - thông báo đẩy tương tác, tiện ích của bên thứ ba và tải trọng lớn hơn (2 KB). Hôm nay, chúng tôi vui mừng thông báo hỗ trợ cho các khả năng đẩy di động mới được công bố với iOS 8. Chúng tôi đang xuất bản Ứng dụng mẫu iOS 8 mới để chứng minh cách các tính năng mới này có thể được triển khai với SNS và cũng đã triển khai hỗ trợ cho tải trọng 2KB lớn hơn.
Theo WWDC 713_hd_whats_new_in_ios_notifying. Giới hạn kích thước trước đó là 256 byte cho tải trọng đẩy hiện đã được tăng lên 2 kilobyte cho iOS 8.
Nguồn: http://asciiwwdc.com/2014/simes/713?q=notification#1414.0
Apple đẩy sẽ từ chối một chuỗi vì nhiều lý do. Tôi đã thử nghiệm nhiều tình huống khác nhau để phân phối đẩy và đây là cách khắc phục hiệu quả của tôi (bằng 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()
Theo tài liệu Apple cập nhật (kiểm tra ngày trả lời của tôi):
"... Khi sử dụng API nhà cung cấp HTTP / 2, kích thước tải trọng tối đa là 4096 byte. Sử dụng giao diện nhị phân cũ, kích thước tải tối đa là 2048 byte. Dịch vụ thông báo đẩy của Apple (APN) từ chối mọi thông báo vượt quá kích thước tối đa."
Tài liệu cập nhật của Apple:
Mỗi thông báo từ xa bao gồm một tải trọng. Tải trọng chứa thông tin về cách hệ thống sẽ cảnh báo người dùng cũng như mọi dữ liệu tùy chỉnh bạn cung cấp. Kích thước tối đa được phép cho tải trọng thông báo tùy thuộc vào API nhà cung cấp bạn sử dụng. Khi sử dụng API nhà cung cấp HTTP / 2, kích thước tải trọng tối đa là 4096 byte . Sử dụng giao diện nhị phân cũ, kích thước tải tối đa là 2048 byte. Dịch vụ thông báo đẩy của Apple (APN) từ chối mọi thông báo vượt quá kích thước tối đa.