13

私は自分のiOSとAndroidアプリでXMPPを使ってチャットシステムを統合しています。私はサーバー側でejabberd 2を使用しました。チャットシステムは正常に動作します。私はAPNSとGCMを使用して私のチャットにプッシュ通知を統合したい。各チャットメッセージでプッシュ通知を送信するにはどうすればよいですか? ejabberd 2には、この機能を実装するためのAPIまたは拡張機能がありますか?ejabberdとプッシュ通知

ヘルプは

答えて

13

以下のブログを使用してください、それは非常にシンプルで便利です、それは私のためにうまく動作します。

http://symmetricinfinity.com/2013/01/23/ios-push-notifications-from-ejabberd.html

+1

どのようにAndroidのオフラインユーザーにプッシュしていますか? –

+0

AndroidクライアントからFCM設定パラメータをeJabberDに送信するにはどうすればよいですか?私はSmack SDKのクライアント側を使用しています。任意の提案@MickaëlRémond、vks – CoDe

6

のAPNやGCMにはejabberdプラグインはありません、非常にかなりのです。

  1. 与えられたURLにPOST要求を送信しますmod_offline_postモジュールを使用してください:私はあなたがここでは2つの主要なオプションを持っていると思います。その後、既存のバックエンド言語を使ってapnsとgcmの両方を処理することができます(私はバックエンドとしてレールを使用していますので、これを扱うのはもう1つだけです)。

  2. mod_offline_postに基づいて、POSTリクエストの代わりにプッシュ通知を送信する独自​​のモジュールを作成します。 apnsとgcmを実装する例とライブラリはほとんどありません。私。 apnsの場合はapns4erl、gcmの場合はthis codeです。しかし、それはもちろん、いくつかのエルランを知っていると良いでしょう。

3

AFAIK GCMまたはAPNへのインターフェイスを提供するパブリックejabberdモジュールはありません。

ejabberd_hookのカスタムモジュールを実装することをお勧めします。 ejabberd内部モジュールと存在フックhereの例を見ることができます。

あなたがオフラインのユーザーにメッセージを転送したい場合は、私は私が(this stackoverflowの質問を参照)filter_packet({From, To, Packet})を提案し、パケットの種類を確認するメッセージの一般的なフィルタリングのためoffline_message_hookしばらくお勧めします。

受信者は、デバイストークン/登録IDをdbから取得し、いくつかのerlangコードを使用してメッセージを転送することができます。

APNについては、をご覧ください。これはどのように動作するのか、このerlang ex_apnsに説明されています。あなたがAPNのモックサーバーを望むかどうかの詳細については、このブログpostをご覧ください。

GCMの例として、@ Lucasが提供するサンプルリンクを使用できます。

+0

dbからデバイストークンを取得するにはどうすればよいですか? –

+0

これは、トークンをどのように格納するか、またどのデータベースに依存するかによってまったく異なります。 – user601836