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は、1400文字のメッセージを送信できたと上に述べています。新しい通知形式を使用した私自身のテストでは、256バイトの制限をわずか1バイト超えたメッセージが拒否されることが示されました。ドキュメントがこの点で非常に明示的であることを考えると、Appleが将来256に変更しないという保証がないため、実験的に達成できることには関係なく256を使用する方が安全であることをお勧めします。
アラートテキスト自体については、合計ペイロードサイズ256に収まる場合、iOSで表示されます。ステータスバーに表示されるメッセージは切り捨てられますが、通知センターを開くと、メッセージ全体が表示されます。改行文字もレンダリングします\n
。
編集:
回答を最新の情報で更新する
通知ペイロードに許可される最大サイズは、使用するプロバイダーAPIによって異なります。
レガシーバイナリインターフェースを使用する場合、最大ペイロードサイズは2KB(2048バイト)です。
HTTP / 2プロバイダーAPIを使用する場合、最大ペイロードサイズは4KB(4096バイト)です。Voice over Internet Protocol(VoIP)通知の場合、最大サイズは5KB(5120バイト)です。
古い回答:Apple Docによると、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
AppleはiOS 8で、モバイルプッシュ通知のいくつかの豊富な新しい使用例を可能にする新機能を導入しました—インタラクティブプッシュ通知、サードパーティのウィジェット、およびより大きな(2 KB)ペイロード。本日、iOS 8で発表された新しいモバイルプッシュ機能のサポートを発表できることをうれしく思います。これらの新機能をSNSで実装する方法を示す新しいiOS 8サンプルアプリを公開し、より大きな2KBペイロードのサポートも実装しました。
WWDC 713_hd_whats_new_in_ios_notificationsによると。プッシュペイロードの以前のサイズ制限である256バイトは、iOS 8 では2キロバイトに増えました。
出典:http : //asciiwwdc.com/2014/sessions/713?q=notification#1414.0
Appleプッシュは、さまざまな理由で文字列を拒否します。私はプッシュ配信のさまざまなシナリオをテストしましたが、これは私の作業修正でした(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()
更新されたAppleドキュメントによると(私の回答日を確認してください):
「... HTTP / 2プロバイダーAPIを使用する場合、最大ペイロードサイズは4096バイトです。レガシーバイナリインターフェースを使用する場合、最大ペイロードサイズは2048バイトです。Appleプッシュ通知サービス(APN)は、最大サイズを超える通知を拒否します。」
Appleが更新したドキュメント:
各リモート通知にはペイロードが含まれています。ペイロードには、システムがユーザーに警告する方法に関する情報と、提供するカスタムデータが含まれます。通知ペイロードに許可される最大サイズは、使用するプロバイダーAPIによって異なります。HTTP / 2プロバイダーAPIを使用する場合、最大ペイロードサイズは4096バイトです。レガシーバイナリインターフェイスを使用する場合、最大ペイロードサイズは2048バイトです。Appleプッシュ通知サービス(APN)は、最大サイズを超える通知を拒否します。