プッシュ通知アラートテキストの最大長は?


回答:


245

警告テキストの実際の制限はどこにも文書化されていません。唯一のドキュメントが言うには、次のとおりです。

iOS 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には表示制限がないことを明確にする必要があります。特定の長さを超えるテキストはスクロールビューに入ります。ただし、SMSまたはプッシュアラートには、おそらく107文字の制限があります。
azdev 2011

1
また、表示されるテキストはペイロードによって制限されません。ローカリゼーションメソッドを使用すると、1対1に一致しなくなるためです。ペイロードは短いかもしれませんが、最終的なメッセージははるかに長いかもしれません。問題は、ペイロードの最大長に厳密に関連していないメッセージを表示することです。
Marcin 14

1
サンドボックスに巨大なペイロードを送信して配信することができましたが、本番サーバーは1バイト以上ではなく256バイトに制限されていました。
DoctorDbx 14

誰でもGCM Androidプッシュ通知の表示テキストの長さを教えられますか?
ハリクリシュナン

1
1. Voice over Internet Protocol(VoIP)通知の場合、最大ペイロードサイズは5 KB(5120バイト)です。2.他のすべてのリモート通知の場合、最大ペイロードサイズは4 KB(4096バイト)です。
vikram 2018

26

236バイトにする必要があります。私が知る限り、アラートテキストのサイズに制限はありませんが、ペイロードの合計サイズのみです。したがって、ペイロードが最小限でアラート情報のみが含まれる場合、次のようになります。

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

これには20文字(20バイト)かかり、警告文字列の中に236バイトが残ります。ASCIIでは236文字になり、UTF8とUTF16ではより少なくなる可能性があります。


ASCIIエンコードは、UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、またはUTF-32BEを必要とするJSON仕様に違反しています。ietf.org/rfc/rfc4627.txtを参照してください。ページ4.
Aaron Brager 2013年

14
ASCIIはUTF-8のサブセットであるため、8ビットASCIIをネットワーク経由で送信しても常に安全です。
Patrick Horn

ちょうど興味がある、なぜあなたがそれから言及したのかそれは236バイトであるべきです。..切り捨ての問題で実行しています。合計文字長を数えると1024文字を超えていない場合、切り捨てアラートメッセージの文字長は509です。応答が切り捨てられる理由として何が考えられますか。なにか提案を !!
Hitendra Joshi 2016

15

拡張フォーマット通知の制限については、こちらに記載されています

それは明示的に述べています:

ペイロードは256バイトを超えてはならず、ヌルで終了してはなりません。

ascandroliは、1400文字のメッセージを送信できたと上に述べています。新しい通知形式を使用した私自身のテストでは、256バイトの制限をわずか1バイト超えたメッセージが拒否されることが示されました。ドキュメントがこの点で非常に明示的であることを考えると、Appleが将来256に変更しないという保証がないため、実験的に達成できることには関係なく256を使用する方が安全であることをお勧めします。

アラートテキスト自体については、合計ペイロードサイズ256に収まる場合、iOSで表示されます。ステータスバーに表示されるメッセージは切り捨てられますが、通知センターを開くと、メッセージ全体が表示されます。改行文字もレンダリングします\n


12

編集:

回答を最新の情報で更新する

通知ペイロードに許可される最大サイズは、使用するプロバイダー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デバイスに送信できます。


親愛なるダウン投票者、リンクが壊れているために投票した場合、すべての情報はすでにここにあり、それは正しいです。リンクは参照用でした。また、なぜあなたが却下したのかコメントすることは良いことです。
jcesarmobile 2017

10

スクリーンショットをいくつか示します(バナー、アラート、通知センター)

アラートバナー通知センター


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ペイロードのサポートも実装しました。


5

WWDC 713_hd_whats_new_in_ios_notificationsによると。プッシュペイロードの以前のサイズ制限である256バイトは、iOS 8 では2キロバイトに増えました。

出典:http : //asciiwwdc.com/2014/sessions/713?q=notification#1414.0


@Diziet申し訳ありませんが、その点に関する公式のメモは見つかりませんが、前回のWWDC中に公式に発表されました。でも、アーバン飛行船はそれをannonced:urbanairship.com/blog/2014/07/02/...を
klefevre

誰もがリンゴのリンクを望んでいるならばここでスライド/ビデオだ:developer.apple.com/videos/wwdc/2014 - 「何がiOSの通知の新機能」検索
Diziet

@ kl91大丈夫です。コメントと同期していなかったので、ソースを見つけたらコメントを削除しました。あなたはPDFをダウンロードする場合は、82ページです
Diziet

1
@ kl94、それでもアプリがiOS 7のターゲティングをサポートしている場合、2kBのサイズ制限はiOS 7デバイスに送信されるプッシュ通知にも適用されますか?または問題は次のとおりです。どのプラットフォームを対象とするかに関係なく、すべてのプッシュ通知用の新しい2kBですか
Jing

@Jing新しいサイズ制限がすべてのプラットフォームに適用されると楽観的に考えることができます。
klefevre 2014年

1

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()

ありがとう。でも重要なのは、120の背後にある推論だと思います。どのようにしてその数値に到達したのですか。引用符と改行の後に長さの切り捨てを行う方が良いでしょうか?それは、Appleに送信される最終的な文字列の長さをよりよく表すためです?
Rup

すべての引用を削除することについてのコメントをありがとう、iOS 11では、メッセージを鳴らすが何も表示しないという奇妙なバグがあります。
ペドロゴエス2017年

1

更新されたAppleドキュメントによると(私の回答日を確認してください):

「... HTTP / 2プロバイダーAPIを使用する場合、最大ペイロードサイズは4096バイトです。レガシーバイナリインターフェースを使用する場合、最大ペイロードサイズは2048バイトです。Appleプッシュ通知サービス(APN)は、最大サイズを超える通知を拒否します。」


1

Appleが更新したドキュメント:

各リモート通知にはペイロードが含まれています。ペイロードには、システムがユーザーに警告する方法に関する情報と、提供するカスタムデータが含まれます。通知ペイロードに許可される最大サイズは、使用するプロバイダーAPIによって異なります。HTTP / 2プロバイダーAPIを使用する場合、最大ペイロードサイズは4096バイトです。レガシーバイナリインターフェイスを使用する場合、最大ペイロードサイズは2048バイトです。Appleプッシュ通知サービス(APN)は、最大サイズを超える通知を拒否します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.