Knuffを使ってプッシュ通知のテストをする

これまでPusherというツールを使ってプッシュ通知受信のテストをしてたのですが、最近久しぶりに使ってみたらエラーが出てしまいプッシュ通知が送信できなくなっていました。

github.com


↓プッシュ通知を送信している様子。

f:id:bamboohero:20211115161430p:plain


Unable to read: Read connection closed

というエラーが表示されてしまう。


Issueを調べたら同じ問題にあたってる人が結構いたようで、Knuffというツールが使えるという情報を得ました

f:id:bamboohero:20211115161924p:plain


Pusherと同じような使い勝手で簡単に使うことができました。
ここではKnuffの使い方をご紹介します。

github.com


Knuffのインストール

READMEにダウンロードリンクがありますが、Homebrewでもインストールできました。

$ brew install --cask knuff


プッシュ通知を送信する

まずはデバイストークンを取得します。

デバイストークンについての詳しい解説は割愛しますが、AppDelegateのapplication(_:didRegisterForRemoteNotificationsWithDeviceToken:)メソッドで取得できるので、てきとうにprint文などを仕込んで取得しましょう。

なお、ここで取得できるデバイストークンはData型なので、以下のメソッドで文字列化しておきます。

let token = deviceToken.map { String(format: "%.2hhx", $0) }.joined()

参考: Swiftでプッシュ通知用のDevice Token(Data型)を16進数文字列へ変換する方法 - Qiita


次にKnuffを起動して、「Choose...」をクリックしてキーチェーンに登録されているプッシュ証明書を選択します。

f:id:bamboohero:20211115163519p:plain


Token欄にデバイストークンを入力して「Push」をクリックすれば端末にプッシュ通知が送信されます。
Payload欄は自由に変更できます(カーソルが動かなかったりで編集できなそうに見えますが編集できました)。

f:id:bamboohero:20211115163635p:plain


おわりに

Knuffの使い方についてご紹介しました。

なお、Knuffも2020年5月を最後にコミットがないので、そのうち使えなくなってしまうかもしれません。。