Bitriseで特定ブランチだけXcode 7 beta 5を使ってCI
Bitriseはとにかく新しいXcode及びXcode betaでCIできる画期的なサービスです。
Travis CIやCicle CIもGM版が出ればXcode 7に対応してくれると思いますが、待ちきれない方も大勢居るかと思います。
では早速Bitriseのアカウントを作りましょう、gihtubアカウントで登録できて便利ですね。
次にアプリの登録ですがなんとなくやればすぐ出来ると思います。(Travis CIやCicle CIをなんなく使いこなせている人は)
さて本題はmasterブランチはXcode、特定ブランチはXcode-betaでテストしたいという設定です。
Bitriseでは自レポジトリに設定を書くのではなくGUI上でWorkflowをゴリゴリ弄って設定します。
Xcode-betaでテストしたいブランチ名のWorkflowを作成。
「Select Xcode Version」を追加
「-beta」を指定して保存し...、ライブラリの場合は忘れず「Xcode: Create Archive」を消しておきます
対象ブランチのビルドを実行すると見事Xcode betaでのテストが出来ました!
めでたしめでたし
Nexus5ここに眠る
Nexus5おかえり
Nexus5が帰ってきました。
この手に馴染む感じがやはり自分のメイン機という感じがあり、またNexus 5をメインに戻そうと思います。
Nexus5こわれる
急に再起動したかと思ったら「アプリの最適化」が行われ、「あれ?アップデートしたのかな?」と思って待っていたら、終了後の再起動直後にまたアプリの最適化(以下無限ループ)に陥り困り果てた。
奇遇にもつい先日あんちぽさんがNexus6で同じ現象に陥っていたそうで、同じ手順で復旧できた。
しかしwifiは復活しなかった、何度も落としていたしモジュールの接触不良だろう、修理には出すが次のメイン機としてNexus6を購入した。
追記 1
明朝思いとどまりY!mobileの修理に出したところ、修理保証に入っていたため〜1600円負担で修理できそうです。
同機種代替機も用意してくれたので助かりました。
追記 2
結局EXPANSYSでZenfone 2 4GB/32GB 買いました。
UIScrollViewが複数ある時でも楽にステータスバーへのタッチイベントを取得する
scrollViewShouldScrollToTopを使うのが常套らしいのだけれどUIScrollViewが複数ある場合、1つを除いてすべてのUIScrollViewやUITextView/UITableViewなどのscrollsToTopをfalseにするのも楽ではないので touchesBegan を使いました。
AppDelegate.swift
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { super.touchesBegan(touches, withEvent: event) let touch = touches.first as! UITouch let location = touch.locationInView(self.window) if CGRectContainsPoint(UIApplication.sharedApplication().statusBarFrame, location) { NSNotificationCenter.defaultCenter().postNotificationName("statusBarTouched", object: nil) } }
ViewController.swift
override func viewWillAppear(animated: Bool) { NSNotificationCenter.defaultCenter().addObserver(self, selector: "statusBarTouched:", name: "statusBarTouched", object: nil) } override func viewDidDisappear(animated: Bool) { super.viewDidDisappear(animated) NSNotificationCenter.defaultCenter().removeObserver(self) } func statusBarTouched(notification: NSNotification) { }
iOSで任意のURLをブラウザ(Chrome)で開いた際に遷移元アプリに戻る導線を付ける
内蔵ブラウザを個別のアプリで作り込むのはあまり好きじゃなく、かといって外部ブラウザで開くと元のアプリに戻りづらいジレンマがあったが、Google Chromeは元のアプリ名とcallbackスキームが指定でき、これを指定すると画像のようにアプリケーション名でバックボタンが出現する。
仕様は簡単で、
googlechrome-x-callback://x-callback-url/open/?x-source=アプリ名&x-success=コールバックURL&url=開くURL
といったフォーマットでURLを生成し、`UIApplication.sharedApplication().openURL()` するだけ
参考
実装例
gist.github.com
OpenID Connectに対応しました
移行方法
Google アカウントの認証を OpenID から OpenID Connect に移行する方法 - WebOS Goodies
Google Developer Consoleのプロジェクトの設定で、Google + APIを有効化しないとprofileにアクセス出来ないので注意が必要です。(下記図右下)
コミット