CatHand Blog

アプリ開発やMac弄り

開発

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…

AndroidのOpenCVで

More than one file was found with OS independent path 'lib/x86/libc++_shared.so' のようなエラーが出る時。 アプリモジュールの build.gradle に android { packagingOptions { pickFirst 'lib/x86/libc++_shared.so' pickFirst 'lib/x86_64/libc++_sha…

けいさんカード

1年生の算数の宿題でけいさんカードというのがあります。 ↑こういうカードを親が出して子供が答えるんですが、めんどいのでアプリにしました。 github.com 娘のiPhoneにインストールしたところ、勝手にやっているようです。 今後掛け算などにも対応していこ…

Ore2 2.6.0

Ore2CatHand.orgソーシャルネットワーキング¥250apps.apple.com Twitter の API 制限が解除されました。 ただし、API Key が変更になりましたので、再度ログインしてください。ログアウトせずにそのままログインするとタイムラインを引き継ぐことができます…

Ore2

以前、自分用にOre2というTwitterクライアントを作りました。 Ore2CatHand.orgソーシャルネットワーキング¥250apps.apple.com 何度かTwitterから謎のAPI制限を受けることがありましたが、その度連絡して解除してもらっていました。 ですが、1年くらい前に制…

json-serverとGoogle Spreadsheetでモックサーバーを作る

json-serverはREST APIモックサーバーが簡単に作れるOSSです。 github.com json-serverではモックデータはjsonで記述するのですが、非エンジニアにもデータが作成しやすいようにGoogle Spreadsheetでデータを作成できるようにしてみました。 Google Spreadsh…

OAuthConsumerをApp Extensionで使う

iOSでOAuthするライブラリで昔からあるやつなんですが、OAuthConsumerというのがあります。 cocoapods.org シンプルで使いやすいんですが、内部で - [UIApplication openURL:] を使っているのでApp Extensionでビルドが通りません。 他のライブラリを使うこ…

BitriseでFirebase App Distributionへのデプロイが失敗する

Error: failed to upload distribution. it took longer than expected to process your binary, please try again のようなエラーが出るようになりました。 ググると、どうもFirebase CLIのアップデートで直っているらしい。Bitriseのログをみたかんじ、Fir…

SwiftUIで全画面にしてviewがずれるとき

.edgesIgnoringSafeArea(.all) を使えない(使いたくない)Viewで 全画面表示したいときに↓のようにすると、 struct ContentView: View { var body: some View { ZStack() { Color.blue Text("Hello, World!") } .frame(width: UIScreen.main.bounds.width) …

SwiftUIのListでNavigationLinkを付けずにハイライトさせたい

SwiftUI で List のセルのタップを拾うとき、素直に NavigationLink を設定していればセルがハイライトされますが、 onTapGesture() 等でカスタムしたいときはセルがハイライトされません。 struct LandmarkRow: View { var landmark: Landmark var body: so…

PixelFinder

AppStoreで配信されました。無料です。 PixelFinderCatHand.orgユーティリティ無料apps.apple.com ↓でβリリースしてた画像ビューアですが、飽きてきたので正式版としました。 www.cathand.app Finderのアイコン表示に代わるような一覧できる画像ビューアが欲…

BitriseでMac Catalystアプリをビルドする

Bitrise で Mac Catalyst アプリをビルドして、AppStore Connect へアップロードします。 証明書のアップロード www.cathand.app ↑を参考に、3つの証明書を Bitrise へアップロードします。 ビルド Xcode Archive for Mac ではビルドできなかったので、スク…

Mac用画像ビューア PixelFinder βリリース

www.cathand.app ↑のアプリをβ公開しました。 ↓で配布しています。 cathand.org 主な機能: 上部でフォルダ移動、下部にサムネイル表示 高速な画像表示 アニメーションGIF対応(サムネイルのマウスオーバーで再生) Zip, Rar, Pdf の内容を表示 ドラッグ&ドロ…

mac アプリがデバッグ実行できない

突然 mac アプリが Xcode からデバッグ実行できなくなりました。ビルドは通るけどアプリが起動しないかんじ。 実行時のメッセージをみると、 Message from debugger: Error 1 のみが表示されています。 これでは原因がわからないのでコンソールを確認してみ…

BitriseでmacOSアプリをビルドする (App Store編)

macOS アプリを Bitrise でビルドして AppStore Connect に登録します。 Workflow は↓のようになります。 Workflow 証明書のアップロード Apple Development Certificate Apple Distribution Certificate Mac Installer Distribution Certificate が必要です…

BitriseでmacOSアプリをビルドする (Developer ID編)

Bitrise で macOS アプリを Develop ID で署名して公証サーバーに送って Bitrise.io にデプロイします。 Developer IDで署名する 証明書のアップロード Xcode の Preferences -> Accounts -> Manage Certificates... から該当の Developer ID Application Ce…

また画像ビューアー作ってます

上でディレクトリ移動、下にサムネイル一覧なかんじの画像ビューアー作ってます。 PixelFinder 主な機能: アニメーションGIF対応 マウスオーバーでプレビュー再生 zip, rar, pdf 対応 見開き表示対応 ドラッグ&ドロップ等ファイル操作 スライドショー もう…

MyScriptで数字だけ認識させたい

MyScriptという文字認識ライブラリがあります。 developer.myscript.com 認識結果を数字に絞りたい場合、カスタムリソースを作成すると実現できます。 ↓で Subset knowledge (SK)リソースを作成します。 https://developer.myscript.com/support/recogniti…

Bitrise Writers Program

Bitriseの記事を書いたらBitriseの人からDMもらいました。 Bitrise Writers Programというのでグッズとかもらえるとのこと。 go.bitrise.io 登録してみたらいろいろ届きました。ありがとうございます。

Firebase入れたらクラス名が変わった

Tumbletail のクラッシュを収集するために Crashlytics を入れました。 TumbletailCatHand.orgソーシャルネットワーキング¥250apps.apple.com そうしたら、 ブログ詳細画面が正常に表示されない というバグ報告をいくつか頂きました。 いろいろ調べた結果、 …

SwiftUIで影が切れる

横スクロールで要素が並んでるようなUIを考えます。 struct TestView: View { var body: some View { VStack(alignment: .leading, spacing: 0) { Text("上の要素") .padding(.bottom, 10) ScrollView(.horizontal, showsIndicators: true) { HStack(spacing…

SwiftUIで非同期でViewを更新する

SwiftUIでWebAPI等を呼んでViewを更新するやり方です。 単に更新するだけではなく、エラーだったらAlertを表示したり、読み込み中はインジゲータを表示するようにしたいと思います。 何か非同期処理をする ObservableObject を作ります。 class APILoader<T: Decodable>: O</t:>…

SwiftUIでTextが複数行にならない

SwiftUI で複数行に設定してる Text が複数行にならないことがあります。 プレビューでは複数行になっているんですが、シミュレータで実行すると1行で末尾が省略されてしまいます。 VStack で複数の View を並べているときになるような?気がします。 修正す…

MyScriptの設定方法

MyScryptという手書き文字認識ライブラリがあります。 developer.myscript.com 各種設定方法がすごくわかりずらいのでメモ。 OSはAndroidです。 日本語を認識できるようにする 日本語のAssetを↓からダウンロードします。 https://developer.myscript.com/sup…

GraphQLのモデル

GraphQLクライアントライブラリのApolloを使っています。 github.com Apolloでコードを自動生成すると、モデルがQueryやMutation毎に別に生成されます。 例えばユーザ一覧を返すQuery query UserList { users { name username id } } と、ユーザーIDを指定し…

danbooruのAPIが変更されました

DanbooruのAPIが変更になっていたようです。 Help:Api Wiki | Danbooru 今まではクライアント側でパスワードからハッシュを生成してそれを送っていたのですが、Web で生成した API Key を送信するようになりました。 API Key は My Account -> API Key から…

BitriseでPRをビルドして結果をPRのコメントに書き込む

Comment on GitHub Pull Request という Step があります。 github.com これを使えばPRにコメントを書けそうですが、どうもうまく動きません。 なので、汎用でissueにコメントを付けるStepを作りました。 github.com PR番号を指定することもできますが、何も…