CatHand Blog

アプリ開発やMac弄り

開発

Jetpack Composeで滑らかなViewPagerを作成する

Composeで横にページングするViewを実現したいとき、AccompanistのHorizontalPagerを使います。 google.github.io ですが、HorizontalPagerはページごとにバウンスするような挙動になっており、連続してスワイプすると引っかかるような動きになります。(し…

Illustail v5.0.1

でてます。 IllustailNaomoto Niwayamaソーシャルネットワーキング無料apps.apple.com Share Extension経由でInstagtamの投稿をIllustail Cloudへ保存できるようになりました Illustail Cloudへ保存時のデフォルトをプライベートにしました 投稿へのアクショ…

Illustail v5.0.0

Illustail v5.0.0 でてます。TwitterやTumblr等に対応した画像収集アプリです。 IllustailNaomoto Niwayamaソーシャルネットワーキング無料apps.apple.com ↑ iOS / macOS どちらも同じURLです。 Illustail Cloud 今回、画像投稿をタグを付けてクラウドへ保存…

App Extension ターゲットがビルドできない

App Extension を含んだアプリターゲットはビルドできるけど、App Extension ターゲット単体では Multiple commands produce ... のようなエラーが出てビルドできない、ということがありました。 原因は Scheme の設定に複数のアプリターゲットが含まれてい…

Visual Studio CodeのTerminalのアーキテクチャをarm64にする

↓の方法でターミナルのアーキテクチャを表示するようにしていたところ、VSCodeのターミナルがx86アーキテクチャで実行されていることに気づきました。 www.cathand.app のでarm64で実行されるようにします。 VSCodeの環境: バージョン: 1.69.1 コミット: b06…

dart_twitter_api で users/lookup を呼ぶ

dart_twitter_api はFlutterのTwitter APIラッパーです。 github.com 便利なんですが、 users/lookup が notImplemented になっていて呼べませんでした。 github.com なので呼べるようにしたコードがこちらです。 gist.github.com 同じような方法で、他のAPI…

bStat Android

Bitriseのステータスを表示したりトリガーをかけたりするアプリ、bStatのAndroid版が公開されました。 play.google.com SwiftUIのマルチプラットフォームでiOSとmacOS向けに作成していたものをFlutterで書き直しました。なのでiOS / macOS版も同じUIでアップ…

BitriseでflutterのmacOSアプリをビルドしてAppStore Connectへアップロードする

Workflowは↑のようなかんじになります。 Flutter Install 必要なバージョンのFlutterをインストールします。今回は 3.0.1 を使いました。 Script flutter build macos します。 ただし、必ず error: Provisioning profile "******" doesn't include the curr…

flutterとmacOSネイティブアプリでやり取りする

ネイティブアプリの一部をflutter化したとき、ネイティブコードとflutter間でやり取りするには FlutterMethodChannel を使います。 api.flutter.dev ネイティブ側とflutter側でお互いに FlutterMethodChannel を作ってやり取りする形になります。 iOSでは [F…

Failed to commit edit, error: googleapi: Error 400: Prices are missing for the following billable countries: GI., badRequest

Google Play API でバイナリをアップロードすると表題のようなエラーが返る場合があります。 Failed to commit edit, error: googleapi: Error 400: Prices are missing for the following billable countries: GI., badRequest これは、有料アプリで国別の…

Bitrise の Set Xcode Project Build Number ステップが反映されないとき

BitriseでXcodeプロジェクトのビルドナンバーをセットするのに Set Xcode Project Build Number ステップを使います。 devcenter.bitrise.io いつのまにかこのステップが効かなくなっており、ビルドナンバーが常に 1 でアプリが配信されていました。Set Xcod…

macOSのFirebase SDKでTwitter認証

公式ドキュメントのやり方は以下のようになっています。 firebase.google.com ですが、macOSでは getCredentialWith() が呼べません。 API_UNAVAILABLE(macos, tvos, watchos); となっています。なので別のアプローチが必要です。 FIRTwitterAuthProviderは …

Combineのassign()で循環参照

SwiftUIの @Published されてる値をUIKit側から監視したいとき等、↓のようなかんじでCombineのassign()を使うことがあります。 class HogeViewController: UIViewController { private var cancellables = Set<AnyCancellable>() private var hugaValue: Data? { didSet { up</anycancellable>…

Unexpected nil property at path: 'Provider/attributes/developerTeamId'

XcodeからAppStore Connectへアプリをアップロードするときに Unexpected nil property at path: 'Provider/attributes/developerTeamId' というエラーが発生するようになりました。 XcodeのPreferences -> Accountから該当アカウントを選択しても同様のエラ…

IllustailがiOS14で起動しない(解決)

画像収集アプリ Illustail の動画対応を行いました。 IllustailCatHand.orgソーシャルネットワーキング無料apps.apple.com それ以降TwitterでIllustailが起動しないという報告をいくつか見かけたのですが、再現できず困っていました。ありがたいことに環境な…

Spotlightプロセスが暴走する

macOS Monterey にアップデートしたあたりから、Spotlightプロセスが高効率コアを100%占有しっぱなしになる現象が発生していました。MacBookを閉じていても動作しているようでバッテリーを消費して落ちてしまうので困ります。 最近スリープ中にバッテリー消…

ITMS-90283 エラー

去年の今頃くらい(たぶんXcode12がでたあたり)から、IllustailのMac版がAppStore Connectに登録できなくなっていました。Xcodeからアップロードしようとすると以下のようなエラーになります。 ERROR ITMS-90283: "Invalid Provisioning Profile. The provi…

Bitriseのビルドステータスをステータスバーに表示するアプリ作りました

CI / CD サービスはBitriseを使っています。 app.bitrise.io Bitriseでは手動でWorkflowを実行することが多いんですが、BitriseのWebは割と重いので、ステータスバーに常駐してビルドステータスを表示したりWorkflowを実行したりできるMacアプリを作りました…

Carthageで作成したxcframeworkを追加した後archiveのvalidationでエラーになる

CarthageでRealmとかFirebase等の大きめのライブラリがxcframework化できるようになったのでビルド時間短縮のために導入しています。 その際、ストアに提出しようとしたときに以下のようなエラーが出る場合があります。 error: exportArchive: IPA processin…

PixelFinder 1.1.0 で動画に対応しました

Mac用画像ビューアの PixelFinder ですが、v1.1.0で動画に対応しました。 PixelFinderCatHand.orgユーティリティ無料apps.apple.com サムネイルのマウスオーバーでプレビュー再生したり、画像と混ぜて見開き表示されたりするところはアニメーションGIF等と同…

Xcode12.5でCould not attach to pidエラー

久しぶりにMacアプリのプロジェクトを開いて実行しようとしたら以下のようなエラーでデバッガ接続できなくなっていました。 Could not attach to pid : “1948” Domain: IDEDebugSessionErrorDomain Code: 3 Failure Reason: attach failed (Not allowed to a…

M1 Macでシミュレータ向けビルドが通るようにする

CocoaPods等でバイナリの形で公開されているライブラリの中には、実機ビルドや Intel Mac のシミュレータ向けビルドは通るのにM1 Macのシミュレータ向けビルドが通らないものがあります。 例えば GoogleSignIn です。これは以下のissueでも盛んにリクエスト…

PHPickerViewControllerで複数選択した場合のエラー

iOS14では UIImagePickerController の代わりに PHPickerViewController を使うことで複数の画像を選択することができます。 複数選択した画像を全部UIImageにして取得したくて、以下のようなコードを書きました。 func picker(_ picker: PHPickerViewContro…

SwiftUIのListのseparatorを消す

SwiftUIの List はデフォルトでセパレータ(区切り線)が表示されていて、非表示にすることができません。 iOS13 iOS13では、以下のどちらかの方法で消すことができます。 UITableView のappearanceを変更する List { ListItem(title: "タイトル1") ListItem…

SwiftUIに足りないイージングアニメーションを追加する

SwiftUIのAnimationには easeIn とかはあるんですが、 easeInCubic とかがありません。 ちょっと検索してみたところ、↓が見つかりました。 github.com しかしこれは時間に対する値を返す関数群のライブラリなので、SwiftUIの Animation では使用できません。…

MXParallaxHeaderのヘッダーの高さを可変にする

Twitterのユーザー詳細画面のような、上からヘッダー、タブ、コンテンツのような画面を作る時、MXParallaxHeaderが便利です。 github.com こういう画面。 SwiftUI対応 ヘッダーの高さを中身によって可変にする ということがやりたかったんですが、地味に大変…

BitriseからDeployGateへデプロイする

BitriseからDeployGateへデプロイするのは DeployGate Upload ステップがあるので簡単そうです。 ですが、既存のDeployGateアプリの配布ページへデプロイ設定する際にいくつかハマった部分があるのでメモしておきます。 DeployGate: API Key API Keyには、De…

Xcodeが断続的にレインボーカーソルになる

Xcodeを使っているとランダムにレインボーカーソルが発生して数分操作不能になる、という現象が発生しました。 MacBook Air (M1, 2020) / macOS 11.1 / Xcode 12.3 キャッシュ削除、シミュレータ全削除、Xcode再インストール等試したが改善せず Wifiを切ると…

Carthageでxcframeworkを作成する

Carthageでxcframeworkを作成できるようになりました。M1 Macで開発するにはライブラリのxcframework化はほぼ必須なので助かります。 github.com 既にCarthageのreadmeでは carthage update --use-xcframeworks を使うよう案内されていますが、現状最新のバ…

コマンドラインでターミナルのアーキテクチャを変更する

Apple Silicon対応していないコマンドをターミナルから使う時、いちいち「情報を見る」から「Rosettaで起動」をチェックしてターミナルを再起動するのは面倒です。 コマンドを呼び出す際に先頭に arch -x86_64 をつけるとRosettaでコマンドを実行することが…