web-dev-qa-db-ja.com

iPhoneプッシュ通知の文字制限

IOSプッシュ通知。私はそれらについて読んでいて、この情報をどこにも見つけられないようです。プッシュ通知のサイズ制限は256バイトです。このサイズ制限には、送信する必要のあるデバイストークンや通知に関するその他のオーバーヘッド情報などが含まれますか?その場合、コンテンツに使用できる実際のサイズはどれくらいですか。

また、私が送信したテキストを解釈するためにどの形式を使用していますか?変換は1文字= 1バイトですか、それ以上ですか。本当にプッシュ通知で送信できる文字数を知りたいです。

プッシュ通知ペイロードの制限を理解する上で助けてくれてありがとう。

30
jcmitch

各プッシュ通知には、ペイロードが含まれています。ペイロードは、クライアントアプリケーションへのダウンロードを待機しているデータに対してユーザーに警告する方法を指定します。通知ペイロードに許可される最大サイズは256バイトです。 Appleプッシュ通知サービスは、この制限を超える通知を拒否します。

通知ごとに、プロバイダーはRFC 4627に厳密に準拠するJSON辞書オブジェクトを作成する必要があります。この辞書には、キーapsによって識別される別の辞書が含まれている必要があります。 aps辞書には、次のアクションを指定する1つ以上のプロパティが含まれています。

  • ユーザーに表示する警告メッセージ
  • アプリケーションアイコンにバッジを付ける番号
  • 再生する音

- ローカルおよびプッシュ通知プログラミングガイド

だから、あなたの質問に答えて、

このサイズ制限には、送信する必要があるデバイストークンや通知に関するその他のオーバーヘッド情報などが含まれますか。

はい。このサイズ制限には、デバイストークンおよびその他のオーバーヘッド情報が含まれます。

変換は1文字= 1バイトですか、それ以上ですか。

これは、通知でラテン文字のみを使用している場合に当てはまります。

49
Andrey Zverev

「include」は「すでに含まれている」または「含める必要がある」ことを意味するため、上記はすべて明確ではありません。明確にするために、デバイスIDはペイロードの一部ではなく「メタデータ」であり、256文字の予算からは出ていません。ただし、他のAPSオーバーヘッド(標準ペイロードディクショナリ)はそうです。

出典:上記のドキュメントと検証のための実験。

5
tooluser

実稼働環境でのAPNSテストでは、最大33の漢字と13バイトの2つのカスタムプロパティを正常に送信できました。

{

    "aps": {
        "alert": "一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三",
        "badge": 12,
    }
    "t": 123,
    "v": "1234567890"
}

上記のペイロードの長さは、スペース文字をカウントせずにファイルとして保存した場合、158バイトでした。各漢字は3バイトとしてカウントされました(サイズの変更を確認するためにすべてを削除することで確認しました)。

公式文書で述べたように、256バイトの制限にはデバイストークンは含まれていませんが、明示的に使用しなくても、「サウンド」や「コンテンツ利用可能」など、APNSがカウントされる他の文字があると思います。

そのため、特にカスタムペイロードを使用する場合は、長すぎないように注意してください。 APNS開発環境ではペイロードの長さが制限されないことに注意してください。開発環境の使用中にテストはパスしますが、製品で失敗する場合があります。確実に受け取らないでください。

3
firebear