6

私はiOSアプリを開発しています。アプリにはさまざまな「領域」があり、ユーザーはそれらに「もの」を投稿できます。同じエリアを見ている他のユーザーは、投稿されたものを自分の電話に送信する必要があります (ただし、アプリが実行されている場合のみ)。

RESTful API を使用してDjangoバックエンドの作業を開始しました。Amazon Web Services でバックエンドをホストする予定で、「エリア」に何かが追加されるたびに、Amazon Simple Queue Serviceを使用して更新時間と「エリア」をキューに入れます。キュー内のアイテムを処理する Python アプリを作成し、データベースにクエリを実行して、ダウンロードできる新しい「もの」を持っているユーザーを確認します。現在、この部分では、Apple プッシュ通知を電話に送信する予定です。アプリが実行されている場合、単純な RESTful リクエストを作成して、新しいデータを JSON 形式で取得できます。

ただし、 XMPPの方が ( iOS 側でXMPPFrameworkを使用して) より優れたソリューションであり、将来的には Android をサポートできるようになると思います。


この目的で XMPP を使用する方法について多くの調査を行いましたが、ドキュメントでは、パブリック XMPP ネットワークを使用すること、ユーザーが XMPP アカウントを設定する必要があること、および非暗号化を送信する方法が不明であることを示唆しています。チャット情報。

このプロジェクトでは、サーバーからユーザーのデバイスに情報を送信するためだけに XMPP を使用する必要があります。したがって、必要なユーザーがこのプライベート ネットワークで XMPP アカウントに登録できる場合は、プライベート XMPP ネットワークである必要があります (ただし、舞台裏では、どのテクノロジがアプリを動かしているのかを知る必要はありません)。


モバイルアプリに情報を送信するためだけに XMPP を使用することは可能ですか? インターネット上の多くの回答/チュートリアルは、基本的にXMPPサーバーとクライアントの使用を提案しているだけです-プライベートネットワークで2つを接続して、XMPPサーバー以外の何かによって決定されたデータを送信する方法については言及されていません.

事前にご協力いただきありがとうございます:)

4

1 に答える 1

15

はい、可能です。それ以上に、XMPP を介して必要なものを送受信することは完全に可能です。

通常、XMPP は Jabber チャット アカウントに使用されます。これはいくつかのことを意味します。

  1. 各ユーザーは、サーバー上でユーザーとして設定する必要があります。これは、サーバーがメッセージをプッシュするクライアントを認識できるようにするためです。ランダムなユーザー/パスを設定して、アプリに直接リンクするだけで難しくありません。

  2. チャット情報を送信するということは、送信者と受信者がいるということです。あなたの場合、おそらく送信者を無視できますが、メッセージの送信元が複数ある場合に役立つ場合があります。

  3. メッセージには、必要な情報を含めることができます。完全には思い出せませんが (XMPP を使用してからしばらく経ちます)、実際のメッセージ自体 (または json など) 内で XML を送信するか、メッセージに追加の XML を ATTACH してそのまま残すことができると思います。メッセージ自体は空白 (または公称値) です。

開始するために必要なのは、XMPP サーバーです。これを Web サーバーにインストールできます (おそらく AWS にインストールできると思いますが、よくわかりません)。これは私がいつも使用しているサーバーOpenfireで、セットアップと使用が非常に簡単です (そして、すべてをセットアップするために使用できる優れた Web インターフェイスを備えています)。これにより、受信メッセージを送信し、すべてを「プライベート」にすることができます。つまり、パブリック jabber ネットワークに接続できる可能性がありますが、サーバーへのアクセスを制限することもできます。

次に、Web ベースの API が必要です。APIのセットアップに役立つ優れたphpフレームワークxmpphpがあります。この API を使用すると、Python スクリプト (curl への post req など) から xmpp サーバーにメッセージを送信して、iPhone に配信できます。メッセージを送り返したくない場合は、準備完了です。PHPを使用してXMPPメッセージをリッスンすることは、まったく別のやかんです!

心に留めておくべきもう1つのことは、サーバーがログインして「リッスン」しているかどうかを知るために、アプリからステータスを送信する必要があるということです. 繰り返しますが、これはすべてインターネット上で十分に文書化されています (正確な詳細は覚えていません)。したがって、python/php スクリプトで、メッセージを送信しようとしているユーザーが現在「ログオン」しており、いわば「リッスン」しているかどうかをテストできます。そうでない場合は、プッシュ通知を実装してプッシュ通知を送信する必要があります。これについてよくわからない場合は、都市飛行船と呼ばれる素晴らしいサービスがありますこれをお勧めします。1 か月に最大 1,000,000 件のプッシュ通知を無料で送信します (その後の通知はかなり妥当です)。そうしないと、自分でサービスをセットアップすることで、大変な事態になることを覚悟してください。(私は聞きました!)

これでほとんどの質問に答えられたことを願っています。これはかなり専門的なテーマです (多くの人は XMPP について知りません。それについて知る必要がある場合にのみ知っていることの 1 つです)。ただし、XMPP は非常に強力であり、http 要求やあらゆる種類の繰り返しよりもはるかに優れたソリューションです。見つけることができれば、インターネット上には非常に多くの情報がありますが、情報を解釈する方法について少し賢くする必要があるかもしれません.私の意見では)。

編集...もう1つ

ドロップアウトに注意してください - インターネットのドロップアウトなど。当たり前のように聞こえますが、いつも噛まれます。インターネットが切断され、XMPP 接続を再接続する必要がある場合があることを常に忘れないでください。特に、人々がアプリをバックグラウンドに置いて、後で戻ってきた場合。:) 必要なときに再接続することを忘れないでください。

于 2011-12-20T16:12:09.437 に答える