IOSプッシュ通知のアラートテキストの最大長は?
ドキュメント は 通知ペイロードは合計256バイト未満でなければなりません ですが、アラートテキストには特定の文字制限があることを確認します。
警告テキストの実際の制限はどこにも文書化されていません。 documentation says のみが:
IOS 8以降では、通知ペイロードに許可される最大サイズは2キロバイトです。 Apple Push Notificationサービスは、この制限を超える通知を拒否します。 (iOS 8およびOS Xより前では、最大ペイロードサイズは256バイトです。)
これは私がいくつかの実験をするのを見つけることができたものです。
ここでの注意点は、公式ドキュメントからの非常に良いメモです:
必要に応じて、iOSは各通知配信スタイルに合うようにメッセージを切り捨てます。最良の結果を得るには、メッセージを切り捨てないでください。
236バイトである必要があります。私が知る限り、アラートテキストのサイズに制限はありませんが、合計ペイロードサイズのみです。そのため、ペイロードが最小でアラート情報のみを含む場合、次のようになります。
{"aps":{"alert":""}}
これは20文字(20バイト)かかり、アラート文字列内に236バイトを残します。 ASCIIを使用すると、236文字になりますが、UTF8およびUTF16ではこれよりも少なくなります。
拡張形式の通知の制限は ここに記載 です。
それは明示的に述べています:
ペイロードは256バイトを超えてはならず、ヌルで終了してはなりません。
ascandroliは 上記 は1400文字のメッセージを送信できたと主張しています。新しい通知形式を使用した独自のテストでは、256バイトの制限を1バイトだけ超えたメッセージは拒否されました。ドキュメントがこの点で非常に明示的であることを考えると Appleが今後256に変更しないことを保証します。
アラートテキスト自体については、256の合計ペイロードサイズに収まる場合、iOSによって表示されます。ステータスバーに表示されるメッセージは切り捨てられますが、通知センターを開くと、メッセージ全体が表示されます。改行文字\n
もレンダリングします。
編集:
最新情報 で回答を更新する
通知ペイロードに許可される最大サイズは、使用するプロバイダーAPIによって異なります。
レガシーバイナリインターフェイスを使用する場合、最大ペイロードサイズは2KB(2048バイト)です。
HTTP/2プロバイダーAPIを使用する場合、最大ペイロードサイズは4KB(4096バイト)です。 Voice over Internet Protocol(VoIP)通知の場合、最大サイズは5KB(5120バイト)です
古い回答:Apple文書によると、iOS 8のペイロードは2キロバイト(2048バイト)およびiOS 7以前の場合は256バイトです。 (古いドキュメントであり、現在壊れているため、リンクを削除しました)
したがって、テキストを送信するだけの場合は、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では、Appleは、モバイルプッシュ通知のいくつかの豊富な新しいユースケースを可能にする新機能を導入しました。インタラクティブプッシュ通知、サードパーティウィジェット、およびより大きな(2 KB)ペイロードです。本日、iOS 8で発表された新しいモバイルプッシュ機能のサポートを発表します。これらの新機能をSNSで実装する方法を示す新しいiOS 8サンプルアプリを公開し、より大きな2KBペイロードのサポートも実装しています。
WWDC 713_hd_whats_new_in_ios_notificationsによると。プッシュペイロードの以前のサイズ制限256バイトが2キロバイトに増加しましたiOS 8の場合。
ソース: http://asciiwwdc.com/2014/sessions/713?q=notification#1414.
pdated Apple document (私の回答日を確認)によると:
"... HTTP/2プロバイダーAPIを使用する場合、最大ペイロードサイズは4096バイトです。レガシーバイナリインターフェイスを使用する場合、最大ペイロードサイズは2048バイトです。Apple Push Notificationサービス(APN)は、最大サイズを超えています。」
Apple更新ドキュメント:
各リモート通知にはペイロードが含まれます。ペイロードには、システムがユーザーに通知する方法に関する情報と、提供するカスタムデータが含まれます。通知ペイロードに許可される最大サイズは、使用するプロバイダーAPIによって異なります。 HTTP/2プロバイダーAPIを使用する場合、最大ペイロードサイズは4096バイトです。 レガシーバイナリインターフェイス、最大ペイロードサイズは2048バイトを使用します。 Appleプッシュ通知サービス(APN)は、最大サイズを超える通知を拒否します。
Apple Pushは、さまざまな理由で文字列を拒否します。私はプッシュ配信のさまざまなシナリオをテストしましたが、これは私の作業上の修正でした(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()
私のテストを参照してください こちら
最大33文字の漢字と13バイトのカスタム値を送信できました。