メッセージ送受信機能を作りました。

概要

Androidアプリ内で例外をキャッチしたときのログをGoogleAppEngineにためてメールで知らせます。
ついでなんで例外だけじゃなくて普通のメッセージを送信できるようにしてみました。

ダウンロード

Android
  • メッセージ送信機

http://bit.ly/5cPFJc

GAE/J
  • メッセージ受信機

http://bit.ly/5w0Wcm
ライブラリファイルは除外してあります
GAE/Jの通常のライブラリの他にjsonicのライブラリも必要です
jsonic - simple json encoder/decoder for java
今回使用したバージョンは1.1.2です

データ設計

やり取りするデータの型はJSONです。
メッセージの種類は通常メッセージと例外メッセージの二つです。

通常メッセージ
{
  AppName:アプリケーション名 , 
  AppVersion:バージョン , 
  Tag:タグ , 
  SendMail:メール送信フラグ , 
  Message:メッセージ
}

メール送信フラグはfalseにするとメールを送信しません

例外メッセージ
{
  AppName:アプリケーション名 , 
  AppVersion:バージョン , 
  Tag:タグ , 
  SendMail:メール送信フラグ , 
  Message:メッセージ
  StackTrace:{
    スタックトレース
  }
}

メール送信フラグはfalseにするとメールを送信しません
メッセージはException#getMessage()の値
スタックトレースはException#getStackTrace()の値

準備

そのままでは使えません。
実際にアプリに使う場合はいくつか設定するポイントがあります

メッセージ送信機
9:public static final String TAG = "MessageSender";

アプリ名でも入れておきます

  • MessageFactory.java
 9:private static final String APP_VERSION = "1.0.0";
10:private static final String APP_NAME = "MessageSender";

バージョンとアプリ名を入れます。
自動的に設定できるようにしたかったんですけど、引数を増やすのが面倒かなと思い定数にしました。

6:private final String MESSAGE_URL = "http://*****.appspot.com/messagereceiver";
7:private final String EXCEPTION_MESSAGE_URL = "http://*****.appspot.com/exceptionmessagereceiver";

"*****"の部分にGAEのアプリケーション名を入れます

メッセージ受信機
18:private final static String MAIL = "*****";
19:private final static String NAME = "tomoki yamashita";

自分自身のメールアドレスの名前を入れます。名前は適当でおk

  • appengine-web.xml
3:<application>*****</application>

"*****"にGAEのアプリケーション名を入れます

問題

当然だけど、キャッチした例外しか報告できないのが難点
一番知りたいのはキャッチできなかった例外のことなんで、
これじゃバグ報告機能として完全ではないのではないかと思っています。
あと、バージョン番号とかアプリ名とか自動的に設定されるようにしたいなー