Flutter アプリを GitHub Actions & Xcode Cloud で社内配布する

沖縄モバイルアプリ開発勉強会 #2 で登壇しました。 okimobdev.connpass.com 当日の資料はこちら。 この記事では、資料に書ききれなかった補足と、当日いただいた質問について書いていきます。

Flutter の Firebase Crashlytics がムズすぎる

Flutter アプリに Crashlytics を導入しようとドキュメントを読んでたんですが、 なんかエラーハンドラをいっぱい定義しないといけないっぽい、けど違いがわからない そもそも Crashlytics のドキュメントと FlutterFire のドキュメントで書いてることが違う…

Makefile で設定した PATH が効かないとき

タスクランナー的な用途で make を使っていて、パスが通ってるんだけど通ってない…?みたいな現象に出会ったときのメモです。 PATH := $(HOME)/.pub-cache/bin:$(PATH) .PHONY: path path: which fvm fvm --version ↑ のような Makefile があったとき、この…

Android 10 時代の Connectivity Monitoring

ConnectivityManager.CONNECTIVITY_ACTION は API level 28 で、 ConnectivityManager.getActiveNetworkInfo() と NetworkInfo クラスそのものは API level 29 で、それぞれ Deprecated になりました。 長きにわたり大変お世話になりました。 Android 10 で…

Android Studio 3.5 で XML のタグがソートされてしまう問題の対応

AS 3.5 Canary 8 以降で、 xml を reformat するとタグ名でソートされてしまう不具合が発生していました。 Android Studio 3.5 Canary 8、layout.xml で Rearrange Code するとタグの順番がタグ名でソートされるんだけど..???LinearLayout とかでやるとレ…

Firebase iOS SDK でも使われている Objective-C の †黒魔術†

iOSDC 2018 で @_bannzai_ さんの ~~ †††† 漆黒の魔法 Objecitve-C Runtime API †††† ~~ というセッションを聞いたので、 Objective-C の Method Swizzling について書いてみます。 セッションの資料はこちらです

xib で作った Custom View / ViewController を Storyboard とコードの両方から扱う

iOS

まとめ Custom View / Custom ViewController どちらの場合も、 Storyboard とコードの両方から扱うためには、 View や ViewController そのものを xib で定義するのではなくて root view を xib で定義してinstantiate するのが良さそうです。

Objective-C からの見え方を意識した Swift の Error

TL; DR Objective-C からも利用できる Swift コードを書く場合、 throws キーワード付きのメソッドは戻り値の型に制限がある 引数や戻り値にエラーを指定する際はカスタムエラー型ではなく Swift.Error 型を使う の 2 点に気をつけたほうがよいです。

WKWebView を継承したカスタムクラスで Web ページが表示されなくなった

iOS

表題の通りで、 WKWebView を継承したカスタムクラスを作って色々いじっていたら、 Web ページが表示されなくなってしまいました。 何も表示されず真っ白 スクロールやピンチイン・ピンチアウトはできる スクロールできる量は表示したい Web ページと同じっ…

アプリのコミットハッシュを取得する

開発中のアプリを複数の端末に入れたり消したりしながら動作確認していると、「これはどの時点のコミットからビルドしたんだっけ?」を知りたくなることが増えてきたので、 git のコミットハッシュを取得して Android / iOS アプリに表示する方法を調べまし…

JS デバッグに便利な GCS の Static Website Hosting

最近はもっぱら JavaScript ( TypeScript ) を書いています。ドメインを跨ぐときの挙動をデバッグするのに Google Cloud Storage の静的ホスティングが便利でした。

iOS 11 の SFSafariViewController は Cookie が共有されない

iOS

iOS 11 で SFSafariViewController の仕様が変わり、 Cookie 等のデータが Safari とは独立した領域に保存されるようになりました。 これによってユーザの行動がアプリをまたいで追跡されるのを防ぎ、閲覧履歴の公開範囲を個々のアプリに限定することができ…

Safari 11 の Auto-Play Blocking を試してみた

TL; DR Auto-Play Blocking は音声つき動画が自動再生されないよう Safari を設定できる機能ですが、 「音声なし動画の自動再生」「音声つき動画をミュートで自動再生」「音声つき動画を、ユーザ操作を契機として再生」することは可能です。

WKWebView と SFSafariViewController の見分け方

iOS

iOS アプリに搭載されているアプリ内ブラウザが WebView なのか SafariViewController なのかは、実は見た目で判別することができます。 iOS エンジニアでない方にはあまり馴染みがないようなので、まとめました。

CAMPFIRE Android #1 に参加しました

CAMPFIRE Android とは CAMPFIRE Androidは、Androidにおける技術情報を共有するイベントです。 今回はYahoo! JAPANの技術情報に特化して開催します。 Yahoo! JAPANでは様々な分野のアプリを開発しており、 エンジニアの持つ知見もアプリ設計論からIoTまで多…