リアルタイムログ閲覧をサポートする CI2Go をリリースしました
@circleci iOS クライアント CI2Go のリアルタイムログ閲覧をサポートする新しいバージョンをリリースしました。
このバージョンで、リアルタイムログをサポートしたため、API 更新インターバル機能は削除しました。
リアルタイムログの舞台裏
v1.0.0 の記事で言及したとおり、このソフトウェアは、CircleCI が、公開 API を用意していないため、実行中のビルドログは閲覧できませんでした。
そこで、GitHub に公開されている、CircleCI のコードを読み、彼らの WebSocket 通知の接続方法がわかりました。
ドキュメントにはありませんが、彼らの Pusher 認証エンドポイント は、ログインセッションだけでなく、API トークンもサポートしていました。
curl -i "https://circleci.com/auth/pusher?circle-token=${CIRCLE_TOKEN}" \
--data 'socket_id=123456.87654321&channel_name=private-ngs'
{"auth":"1cf6e0e755e419d2ac9a:..."}
これを実装している中で、pusher-websocket-swift のバグも見つけたので、修正対応しました。
pusher-community/pusher-websocket-swift/pull/22
Realm でオフラインキャッシュ
このバージョンから、ローカルデータベースを CoreData から Realm に変更しました.
Watch OS 2.0
また、Apple Watch アプリも、Watch OS 2.0 を元に、再実装しました。
が、まだ、パフォーマンスの問題があります。
このバージョンは 50 MB の Watch OS アプリケーションの上限を超えないために (ほとんど Realm.framework でした) WatchConnectivity Framework を使って、iPhone からデータを転送しています。
ITMS-90389 Size Limit 50 MB Exceeded
しかし、WCSession
のデータ転送速度が遅いために、描画にかなりの時間がかかります。
現在、この問題に対応するために、Watch OS アプリから、直接 API にアクセスする様に修正対応中で、次バージョンでリリース予定です。
もし、Apple Watch のヘビーユーザーで、リアルタイム更新がさほど重要でない場合には、このバージョンアップは見送っていただければ幸いです。
もし、ほかに何か問題がありましたが、New Issue を GitHub に投稿して下さい。