【オープンソースプロジェクト2】Androidプッシュフレームワークandroid pn
6603 ワード
androidpn (Android Push Notification)は、XMPPプロトコルに基づくjavaオープンソースAndroid push notification実装である.完全なクライアントとサーバが含まれています.プロジェクトのトップページ 1、Androidpnの構成と使用方法Androidpnの構成と使用方法:android-pnのサービス側とクライアントを先にダウンロードし、アドレスは:http://sourceforge.net/projects/androidpn/files/サービス側を解凍し、binディレクトリの下でrunをダブルクリックする.bat運転.アクセス:http://127.0....7070/index.do、あなたのパソコンがjavaの環境変数を構成しなければならないことに注意してください!!修正android pn.propertiesファイルのxmppHostはxmppHost=192.118.19(ネイティブIPアドレス)であり、プロジェクトを実行します.ここでは接続されたシミュレータが表示されます.次にクライアントにメッセージを送信します:それからクライアントでサーバーから送信されたメッセージを受け取ります:プッシュメッセージを見ておめでとうございます.この時、構成に成功しました!!2、android pnを使用してandroid携帯電話のメッセージプッシュ(簡単なソース分析)サーバー部分の主なパッケージ構造は以下の通りである:org.androidpn.server.dao,org.androidpn.server.modelとorg.androidpn.server.サービスはhibernateを使用してデータベースをリンクし、簡単なユーザーログイン認証を実現するために、開発では独自の認証モジュールで置き換えることができます.残りのバッグはプッシュの本体実装です.次はバッグごとに見ます:1.utilパッケージのクラスはresourcesのプロファイルをロードするために使用され、プロファイルではリスニングポートやssl証明書ディレクトリなどのプロパティを指定できます.2.org.androidpn.server.xmppパッケージには、主にserverプログラムの起動と停止に使用されるエントリクラスXmppServerが含まれている異常タイプが定義されています.3.org.androidpn.server.xmpp.authパッケージには認証のいくつかのクラスがあり、私たちの認証モジュールはここでandroid pnと結合することができます.4.org.androidpn.server.xmpp.codecはXMPPプロトコルのXMLファイル解析パケットであり、serverが受信および送信したメッセージはこのパケットによってxmppプロトコルの符号化および復号化を行う.5.org.androidpn.server.xmpp.handlerパッケージは主にメッセージの処理であり、異なるメッセージタイプに対して自分のhandler,6を定義することができる.org.androidpn.server.xmpp.Netパケットはclientとの間の永続的な接続を維持し、xmppメッセージを送信する際に使用するためのいくつかの伝送方式を実現します.7.org.androidpn.server.xmpp.presenceには、クライアントのオンライン状態を維持するためのPresenceManagerクラスのみが含まれています.8.org.androidpn.server.xmpp.Pushパッケージ内のNotificationManagerクラスにはclientにメッセージを送信するインタフェースが含まれています.9.org.androidpn.server.xmpp.routerパケットは、受信したパケットを対応するhandlerに送信して処理するルーティングパケットである.10.org.androidpn.server.xmpp.セッションパケットは、永続的なリンクを表すセッションを定義し、各セッションには接続のステータス情報が含まれます.11.org.androidpn.server.xmpp.sslは、接続をssl認証するツールパッケージです.serverがメッセージを送信するプロセス全体は主に:1.NotificationManagerのpushインタフェースが呼び出されます.2.SessionManagerを使用して、現在のセッションセットで適切なクライアントリンクを検索します.3.独自のXMPPメッセージフォーマットを定義して組み立てる.4.対応するセッションを介してclientにメッセージを送信します.このプロセスで修正する必要があるのは、適切な情報をクライアントに伝え、クライアントの解析を容易にするために、独自のxmppメッセージを定義し、組み立てる必要があるステップ3です.簡単なメッセージ・アセンブリの例は次のとおりです.
elementを作成するときに、受信したnamespaceはclient解析で使用されるnamespaceと一致することに注意してください.サーバ側がメッセージを受信して処理するプロセスは:1.接続はpacketを受信しtscを使用する.push.server.xmpp.codec復号.2.routerは、packetのnamespaceなどの情報に基づいて、packetを対応するhandlerにルーティングする.3.handlerで処理します.対応するrouterクラスとhandlerクラスはandroid pnで参考になる例がありますが、ここではコードを貼りません.開発ではクライアントがメッセージを送信するフォーマットに従って独自のrouterとhandlerクラスを定義し,PacketRouterにrouterを登録し,IQRouterにhandlerを登録すればよい.Client部分の主なパッケージの構造は以下の通りです:Clientこちらにはメッセージの送受信、解析、持続的な接続の開始、再接続などの機能が含まれています.また、コード構造も簡単です.AndroidのサービスクラスとBroadCastクラス、およびいくつかのツールクラスと定数クラスを削除します:1.NotificationIQ,NotificationIQprovider,NotificationPacketListenerの3つのクラスは受信Notificationフォーマットのメッセージの解析と処理を担当する.XmppManagerはメインコントローラで、NotificationServiceはこのクラスを通じて、androidpn接続をバックグラウンドで維持します.3.PersistentConnectionListener,PhoneStateChangeListener,ReconnectionThread.JAvaの3つのクラスは、携帯電話の状態を傍受し、断線再接続を担当しています.メッセージをカスタマイズするには、**IQでメッセージのエンティティを定義し、**IQproviderでメッセージを*IQエンティティに変換し、**PacketListenerでエンティティを処理する3つのクラスを定義する必要があります.具体的な実装は、NotificationIQ、NotificationIQrovider、NotificationPacketListenerの3つのクラスを参照してください.これらのクラスを定義した後、XmppManagerでこの3つのクラスをconnectionに登録する必要があります.コードは次のとおりです.
注意しなければならないのは、***IQproviderを登録するときに、受信したnamespaceは、サービス側がメッセージを組み立てるときに使用するnamespaceと一致しなければ、正しく受信できないことです.
01
<font style=
"color:rgb(51,51,51)"
>
private
IQ createMessageIQ(String title, String message, String userId,
02
String json) {
03
Element notification = DocumentHelper.createElement(QName.get(
04
"message"
, INQURIE_NAMESPACE));
05
notification.addElement(
"title"
).setText(title);
06
notification.addElement(
"text"
).setText(message);
07
notification.addElement(
"userId"
).setText(userId);
08
notification.addElement(
"json"
).setText(json);
09
IQ iq =
new
IQ();
10
iq.setType(IQ.Type.set);
11
iq.setChildElement(notification);
12
return
iq;
13
}</font>
elementを作成するときに、受信したnamespaceはclient解析で使用されるnamespaceと一致することに注意してください.サーバ側がメッセージを受信して処理するプロセスは:1.接続はpacketを受信しtscを使用する.push.server.xmpp.codec復号.2.routerは、packetのnamespaceなどの情報に基づいて、packetを対応するhandlerにルーティングする.3.handlerで処理します.対応するrouterクラスとhandlerクラスはandroid pnで参考になる例がありますが、ここではコードを貼りません.開発ではクライアントがメッセージを送信するフォーマットに従って独自のrouterとhandlerクラスを定義し,PacketRouterにrouterを登録し,IQRouterにhandlerを登録すればよい.Client部分の主なパッケージの構造は以下の通りです:Clientこちらにはメッセージの送受信、解析、持続的な接続の開始、再接続などの機能が含まれています.また、コード構造も簡単です.AndroidのサービスクラスとBroadCastクラス、およびいくつかのツールクラスと定数クラスを削除します:1.NotificationIQ,NotificationIQprovider,NotificationPacketListenerの3つのクラスは受信Notificationフォーマットのメッセージの解析と処理を担当する.XmppManagerはメインコントローラで、NotificationServiceはこのクラスを通じて、androidpn接続をバックグラウンドで維持します.3.PersistentConnectionListener,PhoneStateChangeListener,ReconnectionThread.JAvaの3つのクラスは、携帯電話の状態を傍受し、断線再接続を担当しています.メッセージをカスタマイズするには、**IQでメッセージのエンティティを定義し、**IQproviderでメッセージを*IQエンティティに変換し、**PacketListenerでエンティティを処理する3つのクラスを定義する必要があります.具体的な実装は、NotificationIQ、NotificationIQrovider、NotificationPacketListenerの3つのクラスを参照してください.これらのクラスを定義した後、XmppManagerでこの3つのクラスをconnectionに登録する必要があります.コードは次のとおりです.
01
span style=
"white-space:pre"
> </span>connection.connect();
02
Log.i(LOGTAG,
"XMPP connected successfully"
);
03
// packet provider
04
ProviderManager.getInstance().addIQProvider(
"message"
,
05
Constants.NOTIFICATION_NAMESPACE,
06
new
NotificationIQProvider());
07
<span style=
"white-space:pre"
> </span>
// packet filter
08
PacketFilter packetFilter =
new
PacketTypeFilter(
09
NotificationIQ.
class
);
10
// packet listener
11
PacketListener packetListener = xmppManager
12
.getNotificationPacketListener();
13
connection.addPacketListener(packetListener, packetFilter);
注意しなければならないのは、***IQproviderを登録するときに、受信したnamespaceは、サービス側がメッセージを組み立てるときに使用するnamespaceと一致しなければ、正しく受信できないことです.