Android MQTT Pushを実現

4638 ワード

まずこれはネット上ですでに多くの例があります。ここでは自分の流れと必要な問題だけを書きます。
コードツール部分:
1.クライアントコード(java):
ダウンロード元:https://github.com/tokudu/AndroidPushNotificationsDemo
2.サーバ端コード(php):
ダウンロード元:https://github.com/tokudu/PhpMQTTClient
3.RSMB部分
Really Small Message Broker(RSMB)はIBMサイトでダウンロードする必要があります。
(添付ファイルにもダウンロードが含まれています。)
設定部分:
1.クライアント:
a.工事自体はとても早い工事なので、ADTはまだ外部のカバンをlibsの下に置くように要求していません。この古い工事はこのようです。運行中は大丈夫ですが、少しのstartはcrashです。以下のように提示します。
参照
09-16 14:48:13.385:E/Android dRuntime(26083):FATAL EXCEPTION:main
09-16 14:48:13.385:E/Android dRuntime(26083):java.lang.VerifyError:com/tokudu/demo/Pusservice
09-16 14:48:13.385:E/Android dRuntime(26083):at come.tokudu.demo.Push Activity$1.onClick(Push Activity.java:32

解決策はjarパッケージをlibsに置いて、以前のプロジェクトのjarパケットに対する参照を削除するだけでいいです。
b.やはり同じ原因で、工事自体は早い工程です。SDKはまだネットワーク要求をしていません。ここでPushサーバを接続するのはServiceでは別にスレッドがありません。ANRを避けるために改善できます。
c.プロジェクト中の
// the IP address, where your MQTT broker is running.
	private static final String MQTT_HOST = "209.124.50.174";
住所はコンピュータの自分のコンピュータ(RSMBを実行するコンピュータ)の住所に変えます。
2.サーバー部分。
a.工事環境
これはPHPコードですので、PHP環境が必要です。私のシステムはMACのために、ちょうどBrewを入れました。同僚の引き出しの下で、Brewを使ってインストールしました。
i.brew install php 54は失敗しました。ii.brew install jecgonzalez/php/php 54失敗。そして、Please tap it and then try again:brew tap josegonzalez/php iii.  brew tap josegonzalez/phpは役に立ちます。iv.brew install jecgonzalez/php/php 54は再試行に失敗します。そして、Please tap it and then try again:brew tap homebrew/dupes v.brew tap homebrew/dupeseが役に立ちます。vi.brew install php 54は成功しました。
インターネットがよくないので、途中で何度もひっかかります。Ctrl+Cを決断して、Brewの断点継続機能に感謝します。
インストールが完了したら、次のようなメッセージがあります。
参照
To enable PHP in Apachhe add the follwing to http.com.com and retart Apache:
    LoadModule php 5_module    /usr/local/opt/php 54/libexec/apaache 2/libphp 5 so
The php.ini file can be found in:
    /usr/local/etc/php/5.4/php.ini
湖南省にある地名。
If PEAR complanis about permissions,'fix'the default PEAR permissions and config:
    chmod-R ug+w/usr/local/Celar/php 54/5.4.19/lib/php
    pear config-set php_ini/usr/local/etc/php/5.4/php.ini
✩✩✩Extensions✩
If you are having ises with custom extension copiling、ensure that is php is
in your PATH:
    PATH=「$(brew--prefix jecgonzarlez/php/php 54)/bin:$PATH」
でも同僚が先にかまわないと言っています。私も大丈夫です。
b.apacheの状態を確認する
ブラウザで試しましたhttp://localhost.it worksを得てapacheが仕事だと知った。
もっと確認するために、Library/WebServer/Dcumentsの下にtestを新設しました。
ブラウザでテストhttp://127.0.0.1/test.html 内容を入手しました。appheを明確にすることは問題ないと知っていますが、phpコードの展開の位置は/Library/WebServer/Dockments/以下です。
c.phpが正常に解析できるか確認する
Library/WebServer/Dcumentsに新しいファイルtest.phpの内容を書きました。
<?php
phpinfo()
ブラウザでアクセスhttp://127.0.0.1/test.php
手に入れる
参照
<?php
phpinfo()
php解析は成功しませんでした。
同僚の指導のもとに
/prvate/etc/apache 2/httpd.com nfに下記のようなものが追加されました。
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php .phtml
そしてapacheを再開しました。
d.apacheを再起動する
i.apphectl statusが役に立たないので再起動します。
ii.ps aux|grephttpd
参照
_。www           38667   0.0  0.0  2437464   1708   ??  S     1:06 pm   0:00.00/usr/sbin/httpd
_。www           38666   0.0  0.0  2437464   1764   ??  S     1:06 pm   0:00.00/usr/sbin/httpd
_。www           38665   0.0  0.0  2437464   1756   ??  S     1:06 pm   0:00.00/usr/sbin/httpd
_。www           38664   0.0  0.0  2437464   1792   ??  S     1:05 pm   0:00.00/usr/sbin/httpd
root           38663   0.0  0.0  2437464   2368   ??  Ss    1:05 pm   0:00.13/usr/sbin/httpd
xxxx         38790   0.0  0.0  2432768    596 s 002  S+。    1:26 pm   0:00.00 grep httpd
今開いている何かを得ました。最後の一つは自分で開けました。
iii.killは自分で開くこれ以外のもの。
sudo kill 38667
sudo kill 38666
sudo kill 38665
sudo kill 38664
sudo kill 38663
iv.sudoアプリhectl start
v.ブラウザで再度表示する
http://127.0.0.1/test.php
php情報があるページが見られます。
これでphpの設定は終了します。
このステップはクライアントプログラマーとして個人的には何をしているのか分かりません。
e.レイアウトコード
コードを/Library/WebServer/Dcuments/にセットします。
3.RSMB部分
1.MacではXXXX/mb/mac/brookを実行します。
直接ファイルを端末にドラッグすると失敗します。ヒントCWNAN 9989 W Could not open message file./message/Message s.1.0
cdから$XXX/rsmb/macまでです。
             $ ./brook er
2.ブラウザで開く
    http://127.0.0.1/mqtt/index.php 携帯にPushメッセージを送ることができます。
ps:ここで一言多く言っても、自分で覚えてください。
    1.ここでは他は終わっていません。メッセージだけを受け取って、メッセージを送っていません。
    2.原理がよく分かりません。大体サーバーが展開するコードからRSMBにメッセージを送ります。RSMBは携帯電話にメッセージを送るために使用されます。携帯のIDで携帯を識別する。