iOS / Android Dev Tools

APNsトークン変換

入力の進数を指定し、同じバイト列を別の表記で確認できます。

APNsトークン変換

トークン入力

hexは外側の<…>とASCII空白に対応。10進数は0〜255の符号なしバイトです。

整形結果

バイト数は形式の情報であり、有効なAPNsトークンであることを示しません。

ブラウザー内で処理し、入力を送信・保存しません。

オプション

完全なバイト列を入力してください。

APNsトークン変換は、デバイストークンのログと送信側の入力欄で表記が異なるときに役立ちます。先頭の00もデータの一部です。全体を整数にすると、このバイトを失うことがあります。

登録コールバックの完全なData型の値を使ってください。デバッグ表示が一部を省略している場合、括弧を除去しても元のバイト列には戻せません。

APNsトークン変換を使う理由

先頭ゼロも並び順も保持

APNsトークン変換が除去するのは、許可した空白と外側の山括弧1組だけです。ログ中の不正な文字を勝手に削除せず、位置を示して修正を促します。

括弧と隙間のあるバイトの列が、先頭のゼロと順序を保って連続した列になる図。

文字列として解読しない

16進数文字列と10進配列は同じデータの別表記です。バイト区切りで確認すると、数値の境界を比較できます。大文字と小文字の切り替えでバイトの内容は変わりません。

異なる3つの配置から同じ順序のバイト列につながる図。

進数と更新タイミングを確認する

01

数字だけでも進数を選ぶ

hex入力の10は10進数の16です。10進入力の10とは異なります。数字を見て自動判別はしないため、入力形式を先に指定してください。

02

自動更新を止めて検討する

通常は編集後350msで更新します。自動をオフにすると実行ボタンが表示され、Ctrl/Cmd + Enterでも実行できます。編集直後は古い結果のコピーと保存が無効になります。

03

書き出す前にバイトを照合する

先頭の00はバイト区切りで、符号なしダンプは10進配列で照合できます。例の読み込みと消去はプレビュー後に適用し、一度だけ入力と結果をまとめて元に戻せます。

バイトを保ったまま表記を変える

1バイトにつき必ず2桁

00 01 ffは0001ffになります。1ffのように先頭を省略しません。これは各バイトの表記規則であり、トークン全体の長さを固定するものではありません。

10進入力は独立した構文

0から255の整数を、カンマまたは空白で区切ります。カンマがある場合、各区間には整数を1つだけ記述してください。1 2,3のような混在は受け付けません。

元の入力に対応するエラー位置

奇数桁、範囲外の値、不正な文字、閉じていない括弧は行と列で示します。変換しても入力欄を書き換えないため、ログの該当箇所を探せます。

整形で分かることの限界

長さによる合否判定はしない
Appleはデバイストークンの長さを固定しないよう案内しています。32バイトや64文字を必須条件にせず、入力予算内の空でないバイト列を処理します。
欠けたバイトは復元しない
hexで許可するのはASCII空白と外側の山括弧1組です。0x、引用符、コロン、カンマ、省略記号はエラーになります。奇数桁をゼロで補いません。
別種のトークンは対象外
JWT、FCM、Base64、ブロードキャストのチャンネルIDは変換しません。デバイス情報や環境を取り出したり、文字コードを指定して文章に戻したりする機能もありません。
通知の到達を保証しない
成功は構文をバイト列に変換できたという意味です。登録状態、topic、環境、認証は送信側で別途確認します。証明書の入力や通知送信は行いません。
1つのテキストに限定
入力上限は65,536 UTF-16コード単位です。超過時は切り捨てずに停止します。ファイル、URL、複数トークンの一括処理、履歴保存はなく、10進数の負数、先頭ゼロ、小数、指数表記も拒否します。

APNsトークン変換のよくある質問

NSDataのデバイストークンをNSStringへ変換するには?

実際の各バイトを2桁の16進数にします。このページでは完全なhexまたは符号なし10進数を、対応する入力形式で指定できます。省略されたデバッグ表示をデータとして使わないでください。

iPhoneのデバイストークンは何バイトですか?

Appleは可変長としています。よく見る長さは将来の保証ではありません。このページでは実際に入力されたバイト数だけを表示します。

APNsやGCMのトークンを検証できますか?

見た目だけでは登録の有効性を確認できません。ここで確認するのはAPNsデバイストークンのバイト表記だけです。GCMやFCMの解析は行いません。

BadDeviceTokenが返るとき、どの形式を使うべきですか?

デバイストークンには16進数のバイト列を使います。値の完全性に加え、送信環境とtopicも確認してください。空白を除去するだけで全原因が解消するわけではありません。

APNsトークンの表示形式が突然変わるのはなぜですか?

デバッグ表示は固定されたシリアライズ形式ではありません。登録コールバックのバイトを明示的にエンコードしてください。省略記号や長さだけの表示から欠けたデータは復元できません。

文字コードや解析に問題がありますか?

次のデバイストークンを確認

APNsトークン変換で手元のバイトを照合し、送信側が必要とする表記の最新結果をコピーしてください。