Push for GmailとMail.appを連動させるGmailPushFetcher
2016/03/16
価値ある情報をユーザー視点で発信するブログ
2016/03/16
Push for GmailとMail.appを連動させるGmailPushFetcherというものを作ってみました。
下掲の動画は、Push for Gmailのダイアログが表示された瞬間、Mail.appで受信が始まっている瞬間を捉えています。Mail.appがバックグラウンド動作中でも動きます。
もくじ
iOSのPush Notificationは、無くてはならない便利なものですが、機能的に少々物足りないと思わなくもありません。
特に、メール着信系のPush Notificationの場合、通知を出すぐらいなら、同時にメールを受信開始してほしいと思うはずです。
でも、Gmailの着信を知らせる何らかのPush Notification対応アプリケーションをインストールし、Push Notificationが着信しても、もちろんMail.appは受信開始しません。(続きは[MORE]から)
Push for Gmail
カテゴリ: 仕事効率化
価格: ¥230
Push for Gmailというアプリケーションがあります。
現在、moyashiがGmailのPush Notification用に使っているものです。
これはもう、いつ買ったか忘れたぐらい、随分前に買いました。
このアプリケーションはモバイル版のGmailに機能を付加したようなもので、全体をWeb Viewが占めています。
最初にPush Notificationの設定をしたら、アプリケーションを起動することはありません。
しかし、Push Notificationは安定していて速く、Push Notification用としてはもう元を取りすぎているといえます。
「Gmailにメール来る→Push Notificationで通知」さえこなしてくれれば問題はないので、特に不満はありません。
App Storeで「Push Gmail」でググって見ましたが、現在でも有力な選択肢になりそうですかね。
今回作ったGmailPushFetcherを導入するとどうなるでしょう? こうなります。
GmailPushFetcherを導入すると、Push for GmailのPush Notificationが着信した時点でMail.appが受信を開始するようになります。
基本的に、GmailPushFetcherのやることはこれだけ。
Push Notificationの表示時に、何のPush Notificationのダイアログなのかを判定して、Mail.appに受信開始の指令を送ります。
バッテリの持ちへのインパクトは、受信するメール数によります。
これまでのフェッチ回数より多くなるなら、バッテリの持ちは悪くなります。
また、GmailPushFetcherは Push Notificationのダイアログにある「View」ボタンを押したときの挙動も変更します。
普通は「View」を押すと、必ずPush for Gmailを起動します。
設定「Mail Client」でリダイレクト先に「Mail App」を選んだ場合はPush for Gmailを経由してMail.appを起動します。
しかし、Mail.appをURL Schemeで起動した場合の仕様で必ず新規メールを開いてしまうので、この設定は実質使いものになりません。
これは他のメール受信Push Notification系のアプリケーションでも同じでしょう。
忸怩たるものがあります。
なぜ、なぜ二人の間にはこんなにも障害が!?
GmailPushFetcherを導入するとどうなるか?
Push for Gmailが出したPush Notificationのダイアログの「View」ボタンを押すと、Push for Gmailを経由せず、直接Mail.appを起動するようになります。
また、起動したMail.appが新規メールを開く動作も抑制しています。
こうなってはPush for Gmailの立場がありませんが、これなら使える!
野良リポジトリからGmailPushFetcherをインストール後、「設定>メール/連絡先/カレンダー>データの取得方法>フェッチ」を「1時間ごと」に設定します。
これは、Mail.appを常駐させておくための処置です。Mail.appを常駐させておかないとGmailPushFetcherは安定して機能しません。
「設定>メール/連絡先/カレンダー>データの取得方法>プッシュ」の方は「オフ」にしています。元々、GmailPushFetcherは、僕のプッシュ嫌いから作ったという経緯があります。
この設定に異存が無ければ、これで設定は終了です。もちろん、Push for Gmailの設定は別途済ませてくださいね。
「設定>GmailPushFetcher」からGmailPushFetcherの設定ができます。
唯一「Launch Mail Anywhere」という項目があります。
これは一体どういう意味でしょうか?
さきほど「これは、Mail.appを常駐させておくための処置です。Mail.appを常駐させておかないとGmailPushFetcherは機能しません」と書きましたが、「設定>メール/連絡先/カレンダー>データの取得方法」でプッシュもフェッチもオフにしていると、Mail.appが起動していない状態が発生します。
この状態ではもちろんMail.appにメールを受信開始させることができないので、GmailPushFetcherはMail.appの起動を試みます。
そのときの起動の仕方を決めるのがこの「Launch Mail Anywhere」です。
「Launch Mail Anywhere」がオンの状態でPush for GmailからのPush Notificationのダイアログが着信したら、構わずMail.appを起動します。
その結果、いきなりMail.appがムワっと前面に出てきて、その時に使っていたアプリケーションはバックグラウンドに回ります。
「Launch Mail Anywhere」をオフにしていた場合は、iPhoneを使用中、別の言い方をすればロック中でなければMail.appの起動をしません。Push for GmailのPush Notificationのダイアログが出てそれでおしまいとなります。
「Launch Mail Anywhere」がオンでもオフでも、ロック中にPush for GmailのPush Notificationが着信したときにはMail.appの起動を試みます。
しかし、パスコードロックをかけているとロック中でもMail.appの起動に失敗します。
Mail.appの起動に使っているAPIが、ロック中だとアンロックの動作を伴うからです。
かように、非常に大きな制約を伴うので、おとなしくフェッチをオンにしてください。設定できる最大のフェッチ間隔でいいです。
Mail.appをフォアグラウンドに回さず、バックグラウンドのまま起動する方法が分からないからです。文句があるなら方法教えろ!
GmailをExchangeとして設定するとプッシュ受信ができます。
しかし、これだと受信時の通知が地味で物足りないのです。
物足りないってか気づかない。
Fetchの間隔を長くした場合と比較して、電池が持たなくなるのもいただけません。
やっぱりGmailにもPush Notificationという結論になるので、Push Notificationの通知時に受信が開始されるのが一番いいことになります。
Push Notificationで受信が開始されるなら、GmailをExchangeとして設定する必要もまたなくなります。
GmailPushFetcherを使ったこと、使えなかったことによる一切の結果について、責任を負いません。
自己責任にてお使いください。
まず、
Push for Gmail
カテゴリ: 仕事効率化
価格: ¥230
をインストールしてください。その上でGmailPushFetcherをインストールしてください。
New野良リポジトリに置いておきました。
「GmailPushFetcher」で検索してください。