Boxcarのメール通知ダイアログ表示時に自動でメール受信するBoxcarPushFetcher
2011/04/14
価値ある情報をユーザー視点で発信するブログ
2011/04/14
BoxcarのメールのPush Notification。
これが表示されたときにMail.appのメール受信が自動的に始まったら、と思ったことありませんか。
それを実現するのがBoxcarPushFetcherです。(続きは[MORE]から)
もくじ
2011.04.14追記
BoxcarPushFetcherは、BoxcarのPush Notificationの中からメールのPush Notificationを判別するために、ダイアログに表示される定型フォーマットのテキストを利用しています。
正常に動作させるためには、BoxcarのSettingsのメールの項目で、Alertのフォーマットを「Full Message」にする必要があります。
BoxcarPushFetcherをインストールすると、BoxcarのメールのPush Notificationが到着するやいなや、Mail.appに設定されている全アカウントのメール受信処理を開始するようになります。
従って、次にMail.appを起動するときには、既に受信の終わったメールをすぐに読むことができるわけです。
メールの受信を開始するためにはMail.appがバックグラウンド(ないしはフォアグラウンド)で起動していないとなりません。
BoxcarPushFetcherは、基本的にMail.appをバックグラウンドで起動させておいて使うことを前提にしています。
Mail.appをバックグラウンドで常時起動させるには、「設定>メール/連絡先/カレンダー>データの取得方法」のプッシュないしはフェッチのいずれかを有効にする必要があります。
プッシュ、フェッチの両方をオフにしておくと、Mail.appは自動的に起動することはありません。
この場合の動作を二つ選べます。
デフォルトではMail.appがバックグラウンドで起動していない状態でメール受信告知ダイアログが表示された場合、ロック中のみMail.appを起動して、メールの受信を開始します。ロック中でなければ、ただメール受信告知ダイアログが表示されるだけで終わります。
「設定>BoxcarPushFetcher」に「Launch Mail Anywhere」というオプションがあります。
これをオンにすると、ロック中でなくともメール受信告知ダイアログが表示されるやいなやMail.appを起動して、メールの受信を開始します。
メール受信告知ダイアログが表示されたのが例えばゲーム中だった場合、Mail.appがいきなり割り込んできてゲームを中断させられることになります。
一番いいのはメールが届いたときに最前面のアプリケーションを中断しないようMail.appをバックグラウンドで起動させることですが、この方法が分からないので半端な二者択一になっているわけです。
こういう制約があるので、BoxcarPushFetcherは、基本的にMail.appがバックグラウンドで起動させておいて使うことを前提にしているのです。
使っているメールを全部Boxcarの転送アドレスに転送しておけば、1時間間隔のフェッチで十分ということになります。
BoxcarPushFetcherを使うことが即ちバッテリの消耗につながるわけではありません。
結果としてMail.appがどれだけの頻度でメール受信をすることになるか、それによってバッテリの消費度が決まります。
BoxcarPushFetcherに対して疑心暗鬼になっている人もいるかもしれませんので、仕組みを説明しましょう。
BoxcarPushFetcherはPush Notification、そしてMail.appの動作を変更し、Push NotificationからMail.appにメッセージを送信できるようにします。
BoxcarPushFetcherというアプリケーションがどこかに新たに起動するというようなことはありません。
普段は何もしません。BoxcarのPush Notificationの着信時に初めて変化が現れます。
BoxcarPushFetcherによって改変されたPush Notificationは、自らの表示の直前でMail.appにメッセージを送信するべきかどうか判断します。
いろいろなPush Notificationの中からBoxcarによって呼び出されたものを判定し、さらにダイアログに表示されるメッセージのフォーマットからBoxcarのメールのPush Notificationであるかどうかを判定してMail.appにメッセージを送信しています。
Boxcarのメールなのか、Boxcarのそのほかのサービスなのかの判定は、非常に原始的な方法で実現しています。それはメッセージの中に「Mail From: 」と「Subject: 」が含まれているかどうか。こういった具合なので、判定を誤るケースもあるかもしれません。
Mail.appは、Push Notificationからのメッセージを受け取ると、メール受信処理を開始します。
仕組みとしては基本的にはこれだけです。
冒頭に述べた通り、最終的にMail.appがどれぐらいの頻度でメール受信処理をするか。それにかかっています。
本来であれば、BoxcarのPush Notification表示時に毎回Mail.appがメール受信処理を開始するというようなことはありませんから、その意味では増える傾向になるといえます。
一方で、BoxcarPushFetcherによって必要なときにだけメール受信処理をすればよくなるともいえ、頻繁なフェッチ、また一般的に電池を消費する傾向にあるプッシュに頼らなくてもよくなるため、それとのプラスマイナスで結果としてバッテリを消費しなくなることもあるでしょう。
逆に、Mail.appの設定でフェッチを最短の15分間隔、プッシュが有効なアカウントを設定した上でBoxcarPushFetcherを導入したら、メール受信処理の機会は単純にオンされるので、バッテリの消費は確実に増えるでしょう。
New野良リポジトリに置いておきました。
「BoxcarPushFetcher」で検索してください。
無保証です。