पुश अधिसूचना चेतावनी पाठ की अधिकतम लंबाई क्या है?


142

आईओएस पुश नोटिफिकेशन के अलर्ट टेक्स्ट की अधिकतम लंबाई क्या है?

प्रलेखन कहा गया है कि अधिसूचना पेलोड है कुल में 256 बाइट्स के नीचे होने की , लेकिन निश्चित रूप से वहाँ चेतावनी पाठ के लिए एक विशिष्ट अक्षरों की सीमा होनी चाहिए।

जवाबों:


245

अलर्ट टेक्स्ट की वास्तविक सीमाएं कहीं भी प्रलेखित नहीं हैं। प्रलेखन कहता है कि केवल एक चीज है:

आईओएस 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 की कोई प्रदर्शन सीमा नहीं है; एक निश्चित लंबाई पर पाठ एक स्क्रॉल दृश्य में जाएगा। एक एसएमएस या पुश अलर्ट में शायद 107-वर्ण की सीमा होती है।
अज़देव

1
और प्रदर्शित पाठ पेलोड द्वारा सीमित नहीं है, क्योंकि जब आप स्थानीयकरण विधि का उपयोग करते हैं तो यह 1: 1 से मेल नहीं खाता है। पेलोड कम हो सकता है जबकि अंतिम संदेश बहुत लंबा हो सकता है। सवाल यह है कि यह संदेश प्रदर्शित करने के बारे में है कि यह पेलोड की अधिकतम लंबाई से संबंधित नहीं है।
मार्सिन

1
मैं सैंडबॉक्स में एक भारी पेलोड भेज सकता हूं और इसे वितरित किया जाएगा, लेकिन उत्पादन सर्वर केवल 256 बाइट्स के लिए बहुत ही प्रतिबंधक था और एक बाइट अधिक नहीं।
डॉक्टरडेक्स

क्या कोई GCM Android पुश नोटिफ़ डिस्प्ले टेक्स्ट की लंबाई बता सकता है?
हरिकृष्णन

1
1. वॉइस ओवर इंटरनेट प्रोटोकॉल (वीओआईपी) सूचनाओं के लिए, अधिकतम पेलोड का आकार 5 केबी (5120 बाइट्स) है। 2. अन्य सभी दूरस्थ सूचनाओं के लिए, अधिकतम पेलोड का आकार 4 केबी (4096 बाइट्स) है।
विक्रम

26

यह 236 बाइट्स होना चाहिए। जहां तक ​​मुझे पता है, अलर्ट टेक्स्ट के आकार पर कोई प्रतिबंध नहीं है, लेकिन केवल कुल पेलोड आकार है। तो यह देखते हुए कि क्या पेलोड कम से कम है और केवल सतर्क सूचना है, यह इस तरह दिखना चाहिए:

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

अलर्ट स्ट्रिंग के अंदर डालने के लिए 236 बाइट छोड़ते हुए 20 अक्षर (20 बाइट) लगते हैं। ASCII के साथ जो 236 वर्णों वाला होगा, और UTF8 और UTF16 के साथ कम हो सकता है।


ASCII एन्कोडिंग JSON युक्ति का उल्लंघन करती है, जिसके लिए UTF-8, UTF-16LE, UTF-16BE, UTF-32LE या UTF-32BE की आवश्यकता होती है। Ietf.org/rfc/rfc4627.txt देखें ; पृष्ठ 4.
आरोन ब्रेजर

14
ASCII UTF-8 का एक उपसमूह है, इसलिए तार पर 8-बिट ASCII प्रसारित करना हमेशा सुरक्षित होता है।
पैट्रिक हॉर्न

बस जिज्ञासु, आपने क्यों उल्लेख किया है तो यह 236 बाइट्स होना चाहिए। ..मैं ट्रंकटेट मुद्दे के साथ चल रहा हूं..यदि मैं कुल चार लंबाई को गिनता हूं तो यह अधिक नहीं है तो 1024 चार, ट्रंकट अलर्ट संदेश चार लंबाई मैं 509 प्राप्त कर रहा हूं। ट्रंकट प्रतिक्रिया का संभावित कारण क्या हो सकता है। कोई उपाय !!
हितेंद्र जोशी

15

वर्धित प्रारूप सूचनाओं की सीमा यहां प्रलेखित है

यह स्पष्ट रूप से बताता है:

पेलोड 256 बाइट्स से अधिक नहीं होना चाहिए और शून्य-समाप्त नहीं होना चाहिए।

ऊपर के आरोही का दावा है कि वे 1400 पात्रों के साथ संदेश भेजने में सक्षम थे। नए अधिसूचना प्रारूप के साथ मेरे स्वयं के परीक्षण से पता चला कि 256 बाइट सीमा से अधिक 1 बाइट वाला एक संदेश अस्वीकार कर दिया गया था। यह देखते हुए कि डॉक्स इस बिंदु पर बहुत स्पष्ट हैं, मेरा सुझाव है कि यह 256 का उपयोग करने के लिए सुरक्षित है चाहे आप प्रयोगात्मक रूप से प्राप्त करने में सक्षम हो सकते हैं क्योंकि कोई गारंटी नहीं है कि Apple भविष्य में इसे 256 में नहीं बदलेगा।

चेतावनी पाठ के रूप में, यदि आप इसे 256 कुल पेलोड आकार में फिट कर सकते हैं तो इसे आईओएस द्वारा प्रदर्शित किया जाएगा। वे उस संदेश को काटते हैं जो स्थिति पट्टी पर दिखाई देता है, लेकिन यदि आप सूचना केंद्र खोलते हैं, तो पूरा संदेश है। यह भी newline वर्ण प्रदान करता है \n


12

संपादित करें:

नवीनतम जानकारी के साथ उत्तर को अपडेट करना

अधिसूचना पेलोड के लिए अनुमत अधिकतम आकार इस बात पर निर्भर करता है कि आप किस प्रदाता एपीआई को नियुक्त करते हैं।

विरासत बाइनरी इंटरफ़ेस का उपयोग करते समय, अधिकतम पेलोड आकार 2KB (2048 बाइट्स) है।

HTTP / 2 प्रदाता API का उपयोग करते समय, अधिकतम पेलोड का आकार 4KB (4096 बाइट्स) है। वॉइस ओवर इंटरनेट प्रोटोकॉल (वीओआईपी) सूचनाओं के लिए, अधिकतम आकार 5KB (5120 बाइट्स) है

OLD ANSWER: Apple डॉक्टर के अनुसार iOS 8 के लिए पेलोड 2 किलोबाइट (2048 बाइट्स) और iOS 7 और पूर्व के लिए 256 बाइट्स है। (लिंक हटा दिया क्योंकि यह एक पुराना डॉक्टर था और अब टूट गया है)

इसलिए यदि आप केवल पाठ भेजते हैं तो आपके पास 2028 (iOS 8+) या 236 (iOS 7-) वर्ण उपलब्ध हैं।

अधिसूचना पेलोड

प्रत्येक दूरस्थ सूचना में एक पेलोड शामिल है। पेलोड में इस बारे में जानकारी होती है कि सिस्टम को आपके द्वारा प्रदान किए जाने वाले किसी भी कस्टम डेटा के साथ-साथ सिस्टम को कैसे सतर्क करना चाहिए। आईओएस 8 और बाद में, एक सूचना पेलोड के लिए अनुमत अधिकतम आकार 2 किलोबाइट है; Apple Push Notification सेवा इस सीमा से अधिक किसी भी सूचना को अस्वीकार करती है। (IOS 8 से पहले और OS X में, अधिकतम पेलोड का आकार 256 बाइट्स है।)

लेकिन मैंने परीक्षण किया है और आप उत्पादन विन्यास में भी iOS 7 उपकरणों के लिए 2 किलोबाइट भेज सकते हैं


प्रिय downvoter, यदि आप लिंक टूटे होने के कारण डाउनवोट करते हैं, तो सारी जानकारी पहले से ही यहाँ है और यह सही है, लिंक केवल संदर्भ के लिए था। इसके अलावा, यह टिप्पणी करना अच्छा है कि आपने दान क्यों किया।
जर्समोबाइल

10

यहां कुछ स्क्रीनशॉट (बैनर, अलर्ट और सूचना केंद्र) हैं

चेतावनीबैनरसूचना केन्द्र


7

नियमित दूरस्थ सूचनाओं के लिए, अधिकतम आकार 4KB (4096 बाइट्स) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CingingtheNotificationPayload.html है

### iOS की आकार सीमा 256 बाइट्स है, लेकिन जब से iOS 8 की शुरूआत 2kb में बदल गई है!

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

IOS 8 के साथ, Apple ने नए फीचर्स पेश किए जो मोबाइल पुश नोटिफिकेशन के लिए कुछ समृद्ध नए उपयोग के मामलों को सक्षम करते हैं - इंटरैक्टिव पुश नोटिफिकेशन, थर्ड पार्टी विजेट और बड़ा (2 KB) पेलोड। आज, हम iOS 8 के साथ घोषित नई मोबाइल पुश क्षमताओं के लिए समर्थन की घोषणा करते हुए प्रसन्न हैं। हम एक नया iOS 8 नमूना ऐप प्रकाशित कर रहे हैं, जो दर्शाता है कि इन नई सुविधाओं को एसएनएस के साथ कैसे लागू किया जा सकता है, और बड़े 2KB पेलोड के लिए समर्थन भी लागू किया है।


5

WWDC के अनुसार 713_hd_whats_new_in_ios_notifications। पुश पेलोड के लिए 256 बाइट्स की पिछली आकार सीमा अब iOS 8 के लिए 2 किलोबाइट तक बढ़ा दी गई है ।

स्रोत: http://asciiwwdc.com/2014/session/713?q=notification#1414.0


@Diziet क्षमा करें, मुझे उस बिंदु पर एक आधिकारिक नोट नहीं मिल सकता है लेकिन अंतिम WWDC के समय इसकी आधिकारिक घोषणा की गई है। यहां तक ​​कि शहरी हवाई पोत ने भी घोषणा की: शहरीकरण ।.com
blog

यहाँ स्लाइड्स / वीडियो है अगर किसी को एक ऐप्पल लिंक चाहिए: developer.apple.com/videos/wwdc/2014 - "iOS नोटिफिकेशन में नया क्या है" खोजें
Diziet

@ kl91 यह ठीक है। टिप्पणियों के साथ सिंक से बाहर, मैंने स्रोत को ढूंढने पर अपनी टिप्पणी हटा दी। यदि आप पृष्ठ 82 पर पीडीएफ को डाउनलोड करते हैं।
डिजीट

1
@ kl94, इसलिए यदि ऐप अभी भी iOS 7 के लिए लक्ष्यीकरण का समर्थन करता है, तो क्या 2kB आकार की सीमा भी iOS डिवाइसों को भेजे जाने वाले पुश नोटिफिकेशन पर लागू होगी? या सवाल यह है: क्या सभी पुश सूचनाओं के लिए नया 2kB है, इससे कोई फर्क नहीं पड़ता कि यह किस प्लेटफॉर्म पर लक्षित है?
जिंग

@Jing हम आशावादी रूप से सोच सकते हैं कि नए आकार की सीमा हर प्लेटफ़ॉर्म पर लागू होगी।
१२:१४

1

Apple पुश कई कारणों से एक स्ट्रिंग को अस्वीकार कर देगा। मैंने पुश डिलीवरी के लिए कई प्रकार के परिदृश्यों का परीक्षण किया, और यह मेरा काम ठीक था (अजगर में):

#  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 के पीछे तर्क है, हालांकि - आप उस नंबर पर कैसे पहुंचे? क्या यह बेहतर होगा कि उद्धरण और न्यूलाइन्स के बाद लंबाई ट्रंकेशन किया जाए, क्योंकि यह ऐप्पल को भेजे गए अंतिम स्ट्रिंग की लंबाई का बेहतर प्रतिनिधित्व है?
रूप

IOS 11 पर सभी उद्धरण हटाने पर आपकी टिप्पणी के लिए धन्यवाद, इसमें एक अजीब बग है जहां यह संदेश लगता है, लेकिन कुछ भी नहीं दिखाता है।
पेड्रो गोज

1

अपडेट किए गए Apple दस्तावेज़ के अनुसार (मेरी उत्तर तिथि जांचें):

"... HTTP / 2 प्रदाता API का उपयोग करते समय, अधिकतम पेलोड का आकार 4096 बाइट्स होता है। लीगेसी बाइनरी इंटरफ़ेस का उपयोग करके, अधिकतम पेलोड आकार 2048 बाइट्स होता है। Apple पुश अधिसूचना सेवा (APNs) अधिकतम आकार से अधिक किसी भी अधिसूचना को मना कर देती है।"


1

Apple अद्यतित दस्तावेज़:

प्रत्येक दूरस्थ सूचना में एक पेलोड शामिल है। पेलोड में इस बारे में जानकारी होती है कि सिस्टम को आपके द्वारा प्रदान किए जाने वाले किसी भी कस्टम डेटा के साथ-साथ सिस्टम को कैसे सतर्क करना चाहिए। अधिसूचना पेलोड के लिए अनुमत अधिकतम आकार इस बात पर निर्भर करता है कि आप किस प्रदाता एपीआई को नियुक्त करते हैं। HTTP / 2 प्रदाता API का उपयोग करते समय, अधिकतम पेलोड का आकार 4096 बाइट्स होता हैविरासत बाइनरी इंटरफ़ेस का उपयोग करते हुए , अधिकतम पेलोड आकार 2048 बाइट्स है। Apple पुश अधिसूचना सेवा (APNs) अधिकतम आकार से अधिक किसी भी अधिसूचना को अस्वीकार कर देती है।


0

मेरा परीक्षण यहाँ देखें

मैं 33 चीनी अक्षरों और कस्टम मूल्यों के 13 बाइट्स तक भेज सकता था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.