LoginSignup
9
12

More than 1 year has passed since last update.

無料のpub-subサービスで簡単にプッシュ通知 ntfy

Last updated at Posted at 2022-06-15

はじめに

本記事は無料で使用できるHTTPベースのpub-subサービス、ntfyについて記載しています。

サインアップ(アカウントの作成)も不要で1分もかからずにトピックを作成し、pub-subの仕組みを用いて簡単にWebやモバイルにプッシュ通知ができます。

オープンソースになるので自前でホスティングして、ローカル環境などクローズドな環境でも動かすことができます。

では、早速使っていきましょう。

ntfy

Web app

はじめにWebアプリから試してみます。
ntfyにアクセスし、画面右上の「Web app」を押します。

スクリーンショット 2022-06-10 23.54.44.png

「+トピックを購読」を押します。

スクリーンショット 2022-06-10 23.54.52.png

トピック名を入力します。
注意事項としてサインアップがないため、トピックはパスワードと同等です。
簡単に推測できないものをトピック名に入力してください。

ここではCyberChefで適当に生成したハッシュ値を入力しています。

スクリーンショット 2022-06-11 0.04.14.png

本記事のブラウザ環境はChromeです。初回の場合、通知の許可が求められるため、「許可」を押します。

スクリーンショット 2022-06-11 0.13.16.png

トピック作成後、プッシュ通知のテストをしてみます。
Macの場合はターミナルを起動し、画面中央の例に表示されているcurlコマンドをコピーして実行します。

スクリーンショット 2022-06-11 0.13.24.png

デスクトップに通知音と共に知らせてくれます。:sound:

スクリーンショット 2022-06-11 0.14.00.png

また、通知音はカスタム可能です。

スクリーンショット 2022-06-13 22.30.49.png

Android/iOS

Androidは以前から利用できたようですが、iOSについても2022年5月25日にリリースされ利用できるようになりました。
App Storeからインストールできます。

iOSを例にApp Storeからアプリをインストール後、トピックの設定手順について以下に記載しています。

アプリを起動し、トピックを登録するためには「+」を押します。

IMG_3964.PNG

Server URLにhttps://nfty.shを入力し、Topic Nameに通知したいトピック名を入力します。

IMG_3965.PNG

テストメッセージを送るとプッシュ通知が届きます。

IMG_3969.PNG

Self-hosting

セキュリティを確保する場合は自前でホスティングすることで、ローカル環境などクローズドな環境として使用することができます。

Installing ntfyの記載の通りに、Windows及びLinuxなど各種プラットフォームで使用可能です。

dockerを使用する場合は以下のコマンドで実行できます。(キャッシュなしの場合)
$ docker run -p 80:80 -it binwiederhier/ntfy serve

ローカル環境の場合、トピック名については適当な名前でも大丈夫です。

スクリーンショット 2022-06-13 23.03.22.png

留意事項としてローカル環境でもアプリでメッセージを受信できますが、iOSについてはプッシュ通知がサポートされていません。iOS instant notificationsを参考にFirebase/APNSの対応が必要になります。

その他

その他、リマインダーや認証機能もありますが、本記事ではメッセージを加工する方法について一部紹介します。

Message priority

Message priorityはメッセージに対して優先度を定義します。

以下はアンチウイルスソフトウェアと組み合わせてスキャン結果からウイルスを検出した場合を想定した例です。

スクリーンショット 2022-06-15 1.27.22.png

  • 実行例
    $ curl -H "X-Priority: 5" -d "FOUND" <サーバURL>/<トピック名>

Action buttons

Action buttonsは便利な機能です。
アクションを促したい通知に対して設定できます。

以下の例ではメッセージで通知したリンクの参照ができます。

スクリーンショット 2022-06-13 23.04.15.png

  • 実行例
    $ curl -d "Somebody retweetet your tweet." -H "Actions: view, Open Twitter, <リンクURL>" <サーバURL>/<トピック名>

GitHub

リポジトリはhttps://github.com/binwiederhier/ntfyです。
新しいリリースについてiOSはTestFlightに参加できます。

Contributingについても歓迎しています。OSSに興味ある方にも良いと思います。

おわりに

デスクトップ等ブラウザに対するプッシュ通知を実現したい場合は、最適なサービスだと思います。
また、デザインもシンプルなUIで素敵です。

9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12