CatHand Blog

アプリ開発やMac弄り

開発

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でコマンドを実行することが…

M1 macでcocoapods-binaryを使う

cocoapods-binaryはcocoapodsで管理しているライブラリをプレビルドしてくれる便利なプラグインです。主にCIサービス等でビルド時間を短縮するのに役立ちます。 github.com ですが、cocoapods-binaryでプレビルドするとarm64シミュレータ向けのバイナリが作…

MacBook Air (M1, 2020)

届いてから2週間くらい経ちました。 www.cathand.app 現状の開発環境の方針です。 iOS carthage 使うのやめてcocoapodsかSwift Package Managerにする cocoapodsでビルド通らないやつ Firebase SDK Swift Package Managerで入れる OpenCV 自前でビルドしてxc…

OpenCVを含んだiOSプロジェクトをApple Silicon macでビルドできるようにする

MacBook Air (M1) の開発環境を構築してます。 www.cathand.app OpenCVを含んだiOSシミュレータ向けビルドが通らない問題ですが、どうもlipoコマンドでは同じアーキテクチャのデバイス向けとシミュレータ向けのバイナリを混在できないようで、それらを混在さ…

MacBook Air (M1, 2020)

届きました。メモリ16GB / SSD512GB です。 きた pic.twitter.com/NctAaQSUhu— nya (@cathandnya) 2020年11月22日 とりあえず Apple Silicon mac でのアプリ開発環境を整備しています。現状(11/22)の問題点をまとめました。 Rosettaで動くやつ Homebrew Co…

Automatic preview updating paused

SwiftUI で Automatic preview updating paused というエラーが出てプレビューが表示されない場合の対処法です。 stackoverflow.com ↑に書いてあるとおりなんですが、 Run script phase でプレビューの時にスクリプトが実行されないようにすると直ることがあ…

Illustail 4.1.0

でてます。 IllustailCatHand.orgソーシャルネットワーキング無料apps.apple.com iOS14のWidgetを追加しました。任意のタイムラインの最新投稿を順番に表示します。 Widget やっと動いた pic.twitter.com/r5l50bkFYC— nya (@cathandnya) 2020年9月25日 ↑のよ…

iOS14でMultipeerConnectivity.frameworkがエラーになる件の解決編

www.cathand.app ↑のiOS14でMultipeerConnectivity.frameworkがiOS14実機でエラーになる件ですが、Appleのデベロッパーフォーラムに解決策が載っていました。 developer.apple.com Info.plist で NSLocalNetworkUsageDescription を追加する 以下のような NS…

PINRemoteImageでビルドエラー

App Extension と本体アプリの両方で PINRemoteImage を使っていると Archive に失敗することがあります。 環境 macOS 10.15.6 Xcode12 cocoapods 1.9.3 abstract_target 'main' do pod 'PINRemoteImage' ... target 'App' end abstract_target 'widget' do …

iOS14でMultipeerConnectivity.frameworkがエラーになる

近距離で P2P 通信ができる MultipeerConnectivity.framework ですが、iOS14 でエラーが発生する場合があります。 MCNearbyServiceAdvertiser や MCNearbyServiceBrowser 等が NSNetServicesErrorCode = "-72008"; 的なエラーを返します。 このエラーは Xcod…

BitriseでビルドしたAdHocバイナリがインストールできない

www.cathand.app ↑で作っていたけいさんカードアプリのビルドと配信を Bitrise と Firebase App Distribution で自動化したんですが、配信されたバイナリがインストールできません。 いろいろやってみた結果、 Xcode Archive & Export for iOS ステップの Re…