はじめに
iOS端末が増えてきた...
- iPod touch 4th
- iPhone 4S
- iPhone 5
- iPhone 6
- iPhone 6Plus
- iPhone SE
- iPad mini 1st
- iPad Pro 1st 9.7inch
バッテリー状況が確認したいがいちいち端末を引っ張り出してスリープ解除するのが面倒。
ということで一覧を確認するやつを作ろう
リポジトリ
使用技術
- Python3
- Bottle for web framework
- SQLAlchemy for database o/r mapper
- Swift
- Alamofire for http request
- Silent Push Notification
流れ
- 監視したいデバイスに
client/LocalBattery
下のアプリをインストール(sandbox) - プッシュ通知を受け取るダイアログを許可する
- サーバ側
/token
に対して対応するパラメタでPUTメソッドで送信 - cron等でPayloadの
apns
内を"content-available": 1
だけにする AppDelegate.swift
内application:didReceiveRemoteNotification:fetchCompletionHandler
が呼ばれるのでバッテリー状況をサーバ側/receive
に対応するPayloadでPOSTする- サーバ側
/
にデバイスのuuid
でgroup_by()
クエリをして端末ごと最新のものを取得する - templateに流し込む→表示
結果
全端末に対して行っていないのであれなんですが、
注意点
アプリがバックグラウンドにないとSilent Push Notificationが受信できないっぽいので常時起動かつバッググラウンドにある状態にする
Bottleのdaemon起動
$ cd /path/to/local-ios-battery/server $ pip install -r requirements.txt $ gunicorn battery:app -b 0.0.0.0:8080 -D
最後に
特にいうことないですが、iOSでもアプリが死んでる状態で何らかの処理をさせるようなことができればいいなぁ...