iOS

iOS17 で tableView.tableHeaderView = searchController.searchBar してたらバグったので UISearchBar を使うことにした

iOS17 にしたら tableHeaderView に入れた searchController がバグって表示されるようになってしまった。 iOS17めっちゃバグるやん pic.twitter.com/DO7ewmgVBh— スターホシ (@star__hoshi) October 5, 2023 最初は hidesNavigationBarDuringPresentation …

リリースビルドだけ no such module 'XXX' でてこまったけど Framework Search Paths だった

リリースビルドの時だけ何故か no such module 'XXXXX' って出てこまってたけど、 Framework Search Paths が Release の時だけからになってた。 この Project では CocoaPods を使っている。 Release に $(inherited) を設定したらビルド通った。 リリース…

Apple の審査が早すぎて1日に3回iOSアプリをアップデートリリースできて感動した

タイトル以上の情報はないんだけど1日3回もリリースできて感動しました。特急審査より早いレベル。 v1.1.1 を 11/18 09:42 に審査提出 11/18 23:28 に審査完了 -> 11/19 04:43 にリリース v1.2.0 を 2022/11/19 05:09 に審査提出 11/19 05:47 に審査完了 -> …

OpenSim が便利

iOS

iOS アプリ開発をしている時、Simulator の中身のデータを参照したいことが稀によく発生する。 でも Simulator への Path は毎回忘れてググることになるし、ディレクトリも謎の文字列になっていて簡単には辿り着けない。 そういう時に OpenSim というアプリ…

個人開発のアプリを CocoaPods から Swift PM に移行した

個人開発のアプリを CocoaPods から Swift Package Manager に移行した。 やることはシンプルで $ pod deintegrate して、Xcode の Package Dependencies に Podfile にあるライブラリを追加していくだけでよい。 なのだが、同時にM1Macへの移行やiOS15対応…

Flutter でアプリの画面を Portrait 固定にする

Flutter で画面回転を無効にし縦固定にしたい、としてググると SystemChrome.setPreferredOrientations を設定しろと出てきたりする。 しかし、これだと splash screen は横で表示されてしまうので良くない。AndroidManifest.xml や Info.plist で設定する方…

ITMS-90165 が起きてアプリの提出ができなくなったが証明書再作成で解決した

朝からこんなエラーが起きてて、特に設定変えたりした覚えもないけどなんだろうなあと思ったけど証明書再作成で直った。 Error uploading ipa file: [Transporter Error Output]: ERROR ITMS-90165: Invalid Provisioning Profile Signature. The provisioni…

iOSアプリ開発時のシミュレータはiPadを使うと便利

iOSアプリ(もしくはFlutterアプリ)を開発するとき、iOS Simulator は iPhone を使うより iPad を使うと色々な画面サイズが簡単に確認できて便利。なお、iPadアプリに対応していることが前提。(この開発方法は前職の同僚がやっていた) iPhone だと固定サイズ…

Admob の本番広告はアプリリリース後審査が完了するまで表示されない

support.google.com admob 審査・承認プロセス追加そんな変わった感無いが・審査期間は広告配信無し・通常は24~48時間で審査完了・承認されれば広告出る・不承認ならポリシーセンターの内容解決して再審査出してね・リリース前のテストはテストモード、テス…

Flutter でのタブレット対応を考える Readable Content Guide

iOS には Readable Content Guide という考え方があり、iPad などの大きな端末では横幅いっぱいにコンテンツが表示されないようになっている。 参考: iOSでの読みやすい幅 - クックパッド開発者ブログ Flutter で iPad を意識せず実装するとボタンが横に間伸…

Xcode11 で Resource の Localization をする

Xcode11 から Resource の Localization ができるようになった。 https://help.apple.com/xcode/mac/11.0/index.html?localePath=en.lproj#/dev7c584bb2a やり方は簡単で、まずベースとなる言語のファイルを追加、Localization の設定、Localize 用のファイ…

Share Extension で画像のシェア先に自分のアプリを出す

これの Share 先に自分のアプリを表示させて、保存などの処理を行う。 やることは Target 追加 App Groups の設定 証明書の修正 Podfile 修正 新しいTargetの Info.plist 修正 ShareViewController の実装 データの保存先について Simulator で確認 です。 T…

fastlane で Crashlytics に dSYM をアップロードしようとしたら invalid byte sequence in UTF-8 でハマった

lane :upload_latest_dsyms do download_dsyms(version: "latest") upload_symbols_to_crashlytics clean_build_artifacts end を実行したら、こんなエラーが出た [22:29:22]: ------------------------------------------- [22:29:22]: --- Step: upload_sy…

Xcode10 にしたら Multiple commands produce ... Info.plist で消耗した

個人プロジェクトを Xcode10 対応してたらこんなエラーが出た。 :-1: Multiple commands produce '/Users/hoge/Library/Developer/Xcode/DerivedData/KotaichiDex-eiyecmvfctikcwcspitwpzskudue/Build/Products/Debug-iphonesimulator/PokemonRealm/PokemonR…

Tesseract-OCR-iOS を使う

【Swift】文字認識ライブラリ、TesseractOCR for iOSを試してみた - Qiita に使い方があるが、少し古かったので Xcode9.4, Swift4 で動かすための手順。 Podfile pod 'TesseractOCRiOS', '4.0.0' そして pod install、終わったら xcworkspace を開く。 Build…

Xcode 9.3 にしたら IDEWorkspaceChecks.plist というファイルが作られたが何者なのか

Xcode 9.3 でプロジェクトを開いただけで Hoge.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist というファイルが作られた。 Release Note を見ると以下のように書いてある。 Xcode 9.3 adds a new IDEWorkspaceChecks.plist file to a workspace's shar…

Firebase HTTPS Callable Functions を type-safe に叩けるライブラリ

Firebase HTTPS callable function を試してみる に使い方は書いたが、素のまま SDK を使うのは厳しいので APIKit っぽく Endpoint を定義できていい感じに Function を叩けるようなライブラリを作った。 github.com endpoint の path と Decodable な Respo…

続・イケてない JSON を Swift の Decodable で扱いやすいモデルにデコードする

イケてない JSON を Swift の Decodable で扱いやすいモデルにデコードする の続き。 今度も last.fm の user.getRecentTracks を Decode していく。 尚、文字を打つのが面倒になったためこの記事はあらゆる説明を省略している。 JSON これを decode してい…

イケてない JSON を Swift の Decodable で扱いやすいモデルにデコードする

last.fm というサービスがあって、API も公開されているのでそれを Swift で使っているのだが、JSON の構造がイケてなくて苦労している。 こんな感じの JSON があったとする。 { "user": { "name": "RJ", "age": "20", "image": [ { "#text": "https://lastf…

プロモコードを利用したテストに参加する(テスター向け)

プロモコードでのテスト iOS アプリには「プロモーションコード」を利用することでリリース直前のアプリをテストすることができます。 やり方は簡単で、 App Store からプロモーションコードを入力してアプリを DL するだけです。 プロモコード版を入れたと…

iOS10 以下のサポートを切ったら ERROR ITMS-90502 が出た

iOS9, iOS10, iOS11 をサポートしていたのを、iOS11 のみサポートするように変えた。 そして申請しようとしたらエラーがでた。 ERROR ITMS-90502: "Invalid Bundle. Apps that only contain the arm64 slice must also have 'arm64' in the list of UIRequir…

ssh 経由で fastlane match できるようにする

$ ssh my@mac.com $ bundle exec fastlane match ... [12:19:58]: Enter the passphrase that should be used to encrypt/decrypt your certificates [12:19:58]: This passphrase is specific per repository and will be stored in your local keychain [1…

iOS Test Night #6 1周年 まとめ #ios_test_night

testnight.connpass.com iOS Test Night #6 にブログ枠として参加したので、そのレポートです。 ㊗️ 1周年 開始前の挨拶として、Qiita に投稿された iOS のテスト関連の記事がこの一年で増えたのか? という話から始まりました。 結果として、増えはしたけど…

iTunes Connect に Upload 後の bitcode 再コンパイルでエラーが出た

iTunes Connect にバイナリのアップロードは完了したんだけど、 iTunes Connect: Processing stopped for HogeApp みたいなメールが来た。 何か問題があって bitcode の再コンパイルが止まってしまったようだ。 メール全文: iTunes Connect: Processing stop…

iTunes Connect に Upload しようとしたら Info.plist 関連で怒られた

Unable to process application at this time due to the following error: This bundle is invalid. The Info.plist file is missing or could not be parsed. Please check it for embedded control characters.. iTunes Connect にバイナリアップロードし…

Xcode の Other Swift Flag で -D STAGING を指定したのに #if STAGING が有効にならなかった

Xcode で環境別にコンパイルするために Staging の Configuration を作ったんだけど、 -D STAGING を指定しても #if STAGING が false になっていた。 なんでかな〜 って設定眺めていたら、 Active Compilation Conditions が Debug になっていたのが原因だ…

MusicPlayer で音楽を再生しようとしたら __abort_with_payload というエラーが出た

import MediaPlayer ... override func viewDidLoad() { super.viewDidLoad() let player = MPMusicPlayerController.systemMusicPlayer player.setQueue(with: MPMediaQuery.songs()) player.play() } これで音楽が再生できたんだけど、再生開始した瞬間に…

TestFlight でリリースごとにアプリを配布していたらそれに助けられた

TestFlight という、アプリのベータ版などを配布する Apple 純正のサービスがある。 TestFlight - Apple Developer これのいいところは「リリースするアプリと同じアプリをテストできる」というところ。 実際にユーザが使うアプリと同じもので動作確認ができ…

Apple 特急審査 2017

ここ最近は Apple の審査が早いけど、致命的なバグなどを出してしまったら急いでレビューして欲しい、そういう時のために apple expedited review というのが用意されている。 これを使うと優先的にアプリをレビューしてくれる。 しかしこれには注意が必要で…

iTunes Connect の段階的リリースを試してみた

段階的リリースとは WWDC2017 で発表された機能。 1%, 2%, 5% ... 100% と限られた人から段階的に自動アップデートされていく。 新機能のテストや、バグが起きてないかなどの確認で使えそう。 Apple 公式ヘルプ 自動アップデート用の段階的リリース(iOS、wa…