セルフホスト型Discourse(Docker)でのiOS/Androidプッシュ通知

6時間以上、Discourse Metaの2018年以降のメッセージを読み、Discourse AI Botと話し、複数のモデルを使って深い調査を行い、テストを行いました。自分の理解を確認したいと思っています。ご辛抱いただきありがとうございます。これはよく聞かれる質問だと承知しています。

大まかな成功点:私は優れたUXを重視しており、優れたUXとは、ユーザーが達成したいことを達成するために最も考えなくて済む状態を指します。私は、WhatsAppのような新しいメッセージ通知を自分のiOSデバイス(iPhone 15 Pro、iOS 26.2)で受け取ることを期待しています。

  1. 最高レベルで、このジレンマ/iOSの制限に対する「最善の答え」はDiscourse Hubのようです。ポーリングを使用するため、わずかな遅延はありますが、これは自己ホスト型Discourseインスタンス(Docker上)からiOS/Androidへのプッシュ通知を取得するための、現在最も良く、最も安定した方法です。もしそうなら、どれくらいの遅延なのか(数分か数時間か)ご存知の方はいらっしゃいますか?その具体的な情報が見つかりません。

  2. もし#1が真実なら、プッシュ通知はチャットに限定されると私が正しく理解しているでしょうか?

  3. 私は、テスト環境で複数のユーザーを対象に、Mac OS X Safari、Chrome、Safariシークレットモード、Chromeシークレットモードでテストするのに何時間も費やしました。また、PWA(プログレッシブ・ウェブ・アプリ)のセットアップと再インストールを20回以上試みました。PWAの通知設定は3回確認しました。複数のアカウントで、異なるブラウザを使用して、すべてDiscourseでチャットメッセージを送信することでテストしました。アカウントがアクティブでないことを確認するために、意図的にすべてのセッションからログアウトしました。最初の「通知が有効になりました」というプッシュメッセージを除けば、3時間以上のテストと、複数のアカウントでのPWAの20回以上の再インストールを経ても、プッシュ通知が表示されたり、PWAにバッジが表示されたりすることは一度もありませんでした。これは2026年1月時点のiOSにおけるPWAプッシュ通知の正確な状況のように思えますか?テストするためのAndroidスマートフォンを持っていません。

  4. これらの一貫性のないプッシュ通知の動作の主な原因は、iOS Safariの通知に関する「技術的な問題」にあるようです。現時点では、その先には希望の光が見えません。

  5. Pushoverアプリという選択肢がありますが、これにはアカウント設定と月額5ドルが必要です。ユーザーに優れたUXを提供したい場合、Pushoverのようなものは選択肢になりません。ntfyは試していませんが、もしかしたら簡単かもしれません。それでも、おそらくユーザーにそれを要求することはないでしょう。これは非技術的な人々のソーシャルグループです。

  6. デスクトップのSafariではプッシュ通知が機能したことがあります。Eメールも問題なく機能します。

  7. もし人々がTelegramやWhatsAppのようなサードパーティ製アプリで通知を受け取るために自己認証できれば、可能性があるかもしれません。Telegramについてはhttps://www.discourse.org/plugins/chat-integrationを見つけました。これは回避策になるかもしれませんが…私の環境では、人々が持っている可能性が最も高いアプリはTelegramだけでしょう。

  8. Twilio連携にも反対はしません。たとえTwilio経由でテキストメッセージの料金を支払うことになってもです。これに関するオプションやプラグインは見当たりません。これは純粋に絶望からの行動になります。そして、Twilioが請求する1メッセージあたり1〜3セントかそれに応じて料金を請求する必要があります。

  9. 「ネイティブのDiscourse iOSアプリ」を目指すのは、おそらく現実的ではなく、Apple App Storeで却下される可能性が非常に高い、これで合っていますか?私はこれに関する多くの報告を見ています。

  10. Androidではプッシュ通知がより良く、一貫性があり、信頼性が高い可能性がありますか?

要するに:2026年1月現在、ネイティブアプリのようにプッシュ通知をiOS/Androidに送信するための、最も優れていて信頼性が高く一貫性のある方法は、Discourse Hubを使用することである。

追伸:私の経験が正確ではなく、何かを見落としていることを密かに願っています。

Androidでは、PWAは非常によく機能するはずです。複数のスタッフが毎日PWAを使用しています。

iOSでは、DiscourseによってホストされているサイトはDiscourseHubで完全なプッシュ通知を受け取ります。セルフホストしている場合は、はい、ポーリング経由でプッシュ通知を受け取ります。

残念ながら、セルフホストしているユーザー向けのDiscourseHubのポーリングは、システムのバックグラウンドタスクに依存しています。これらが特定の時間に実行されることは保証されていません…そのため、遅延がどれくらいになるかは誰もわかりません。OSが決定します。アプリを定期的に使用している場合、ポーリングはおよそ15分ごとに行われると(確信度は低いですが)思います。アプリを定期的に使用していない場合は、それよりもかなり頻度が低くなる可能性があります。

いいえ、トピック、チャット、プライベートメッセージ(PM)が対象となるはずです。

Webviewラッパーアプリは却下される可能性が高いです、はい。完全なネイティブアプリは、おそらく却下されません。しかし、完全なネイティブアプリを構築するのはかなり複雑です。

Pushen通知の状況についても、非常に困惑しています。

MacではPWAとして機能しますが、iOSでは機能しません。バッジは表示されますが、(最初の「成功」通知を除いて)通知は表示されません。

なぜ機能しないのでしょうか? communiteq.com を利用してホストしており、アプリをインストールしたくありません。

当社のホスティングはいかなる制限も課しておらず、iOSでの通知とうまく機能します。

ただし、特に管理者の場合は一般的に非常に不安定で、他のアカウントになりすますと通知の設定が壊れるようです。

テクニカルサポートにテストしてもらったところ、動作しないようです(私はなりすましなどは一切行っていません)。

結論としては、私の記憶が正しければ、それはあなたの特定のデバイスでは動作しなかったということでしたか?

これは満足のいく答えではないことは理解していますが、「なぜ動作しないのか」と尋ねるのは、少し一般的すぎるかもしれません。

とはいえ、iOS向けの優れたトラブルシューティングガイドがあれば、それは非常に素晴らしいことです。

いいえ、iOSデバイスでは私たちのコミュニティの誰もうまくいっていません。

もう一度テストすることにしたので、電源を入れたら動作するようになりました!:exploding_head:

たぶんDiscourse(ディスコース)のアップデートで修正されたのかもしれません!誰が知っているでしょう!

私はiOSのアップデートに賭けますね。

他の人もこれを確認しましたか?

ホーム画面から削除して、再度追加しました。通知が有効になっていたら最高ですね!

iOS 16.4 以降のホーム画面に追加された Discourse インスタンスであれば、動作するはずです。

ホーム画面に Meta が追加されている場合、私のこの返信がそれをトリガーします。

@Falco さん、ありがとうございます!

別の自己ホスト型フォーラムにもう一つテストアカウントがあることに気づきました…ログインして、自分自身にテストチャットを送信しました。

動作しました!これで何度か成功しています。

すばらしいですね。

この非常に不運な行が原因です

私には理にかなっているとは思えません。

そろそろその行を削除する時かもしれませんね :grinning_face:

これは、ログアウトしたデバイスにプッシュ通知を送信したくないという稀なケースを防ぐためのものです。プッシュ通知が有効なデバイスにログインしているものの、用事が済んだのでログアウトしたとします。

その後、誰かが後からあなたにプライベートメッセージで機密性の高いメッセージを送信します。すると、登録されているすべてのデバイスにプッシュ通知が送信されます。ログアウトしたデバイスも技術的には登録されたままなので、通知のプレビュー全文がまだ届いてしまいます。おっと。

最初のプッシュでは安全策としてすべてのキーを削除しましたが、これは明らかにやりすぎで煩わしいです。プッシュ通知のサブスクリプションを特定のユーザーセッションに関連付けるか、あるいは期待されるユーザーがまだログインしていることを何らかの方法で確認するべきではないでしょうか?

はい、その通りです!user_id の代わりに、user_auth_tokens.id を持つべきではないでしょうか?

はい、最新の iOS で Discourse の通知が修正されたことに全員が同意しているようですね。シークレットモードで別のアカウントにログインし、自分の携帯電話にメッセージを送信しましたが、問題なく動作しているようです。必要だったのはアプリの再インストールだけでした。よかったですね。

これは素晴らしいです。次は、グループをメンションできるよう通知を修正し、可能であれば Twilio を連携させることです。