iOSアプリ開発
本日はタイトルの通り、App Storeでのアプリ配信を停止する方法を紹介したいと思います やっていく とりあえず App Store Connect にログインして、指定のアプリを選択します。 価格および配信状況を選択します。 下の赤で囲んだ配信可否セクションで配信か…
久しぶりにAPNs証明書の更新を行ったので、本日はそのメモでも残しておきます♀️ ちなみに、今回のプロジェクトではPush通知を送るためにApple Push Notification Service SSL(証明書)を使用していますが、基本的にはApple Push Notification Authentication…
App Store Connect のメタデータをローカルで編集後、アップロードしようとすると下記のようなエラーが発生していました $ bundle exec fastlane metadata ... The provided entity includes an attribute with a value that has already been used - The ve…
いつものごとくアプリの申請を出していたら、久しぶりにリジェクトされてしまいました 既存機能でのリジェクトだったので、Apple の方が休暇前に本気でレビューしてくれたんでしょうね 、、 Guideline 5.3.2 - Legal - Gaming, Gambling, and Lotteries Your…
みなさん、最近 CollectionView は使っていますでしょうか?CollectionView っレイアウトの方法がいっぱいあってどれを使うべきか結構迷いますよね〜♀️ 今回はそんな CollectionView を使って、ページをめくるようにスクロールすることのできる UI を作って…
今回は、iOS14 の新機能として注目されている Widget について調べたことを簡単にまとめてみようかと思います。なお、本記事では Widget の実装について詳しくは記載していないので、また別の機会に書こうかと思います✍️ 目次 3つのポイント Widget の定義 …
自動更新サブスクリプションとは、ユーザがAppのコンテンツやプレミアム機能を継続的に利用できるようにするもので、ユーザがキャンセルしない限り自動的に更新されます。 やること サブスクリプションを提供するにはアプリに StoreKit API を実装し、そのサ…
Xcode12 の対応に伴って、新しく出た warnings を修正しようとしていると、PHAuthorizationStatus 周りで何やら Switch must be exhaustive という warning が発生していました。 全てのケース網羅してるはずだけどな〜と思い、PHAuthorizationStatus のソー…
Xcode12(swift5.2.4 -> swift5.3) への以降に伴い、Carthage で build していたライブラリを swift5.3 で build 使用とすると失敗するようになってしまいました $ carthage build XCGLogger --no-use-binaries --platform iOS *** xcodebuild output can be …
今回は、iOS・WatchOS デバイス CPU の ISA(Instruction Set Architecture) について簡単にまとめてみようかと思います。 ISA とは? ソフトウェアとハードウェアのインターフェースで、あるマイクロプロセッサ(CPU/MPU) を動作させるための命令語の体系です…
プロジェクトルートのローカル ruby のバージョンを 2.7.1 に更新しようと、rbenv 経由でインストールすると下記のような Error が、 $ rbenv install 2.7.1 ruby-build: definition not found: 2.7.1 See all available versions with `rbenv install --lis…
今回は、NSDataDetector を使って特定の文字列を抽出する時に少しハマったポイントを紹介したいと思います。 ハマりポイント いつもの如く NSDataDetector を使用して、文字列の中に存在するリンクを下記のように取得していると、意図しない場所でリンクがき…
今回は、Storyboard や xib などの Interface Builder を使ってレイアウトを設計する際などに知っておくと少し便利な、@IBDesignable・@IBInspectable について簡単にまとめていこうかと思います。 @IBDesignable とは? Storyboard や xib などの Interface…
今回は昨日の import と Link の記事に引き続き、Bridging Header や Module Map について簡単にまとめていきたいと思います。 Bridging Header Bridging Header は Objective-C で書かれたコードを Swift で利用する仕組みで、それぞれの Objective-C 製ラ…
今回は iOS 開発における Library および Framework のインポートおよび、リンクの仕組みについて学んだことをまとめていきたいと思います。 これらのことを学ぶことで、今まで Xcode が暗黙的に行っていた処理がどのようになっているのかが分かり、ライブラ…
今回は、Swift で使用されるライブラリの形式について調べたことをまとめていきたいと思います。 ライブラリの種類 今回は、ライブラリという言葉で Framework と Library をまとめていますが、両者には違いがあるのでご注意ください。それでは、それぞれの…
今回は、Swift で文字列に含まれている URL を抽出する方法を簡単にまとめていこかと思います 結論 下記のように NSDataDetector というクラスを使用して、テキストからリンクを抽出することができます。 func getLinkTextList(text: String) -> [String] { …
ライブラリ依存管理ツールである Carthage のコマンド一覧をまとめていこうと思います。リストは v.0.34.0 のものなので、最新バージョンの方は公式の Repo を確認してみてください。 github.com コマンド一覧 コマンド 内容 archive Framework の zip を生…
ライブラリを Check out と使用とコマンドを実行すると、下記のような Error が、、 $ carthage bootstrap A shell task (/usr/bin/env git clone --quiet "") failed with exit code 128: fatal: unable to open "": No such file or directory fatal: inde…
今回は iOS アプリがどのようなライフサイクルで動いているのかを簡単にまとめて行きたいと思います。なんとなくボヤッとした感じでライフサイクルを認識していた人はぜひ目を通してみてください アプリの状態 状態 内容 Not running アプリは開始されていま…
Xcode12 に対応するためにちょこちょことマイナーアップデートをしていた時に発生したエラーについて共有します。この Error は調べたところ色々なケースで発生しているので一概には言えませんが、Carthage のアップデート周りで発生した場合はこの解決方法…
今日も前夜の記事に続きiOSDC2020のセッションを聞けた範囲でおもしろかったもののまとめをしておこうと思います。 ※ よかったら毎日ブログ書いてるので、暇な時に見てください yamato8010.hatenablog.com 4年間運用されて表示速度が低下した詳細画面を改善…
iOSDC2020 の HomeKit に関するセッションが面白かったので、セッションで聞いた内容含め簡単にまとめておこうかと思います。暇があったら何か作ってみたい HomeKit とは? iOS、iPadOS、macOS、watchOS などの Apple製品からデバイスを管理・コントロールで…
ReactorKit はリアクティブかつ一方向のデータフローをサポートするための Framework です。ReactorKit について詳しく知りたい場合は以前の記事を参照してください。 yamato8010.hatenablog.com yamato8010.hatenablog.com ReactorKit はユーザアクションか…
今回は RxSwift(RxCocoa) でたびたび使用する Subject・Relay の違いや Observable との違いについて簡単にまとめようと思います。また、Trait などはまた別の記事で触れようかと思います。 Subject・Relay とは? これらのクラスはイベントの検知もできます…
今回は、CocoaPods や Carthage などでインストールしたライブラリなどを Storyboard・xib などで使用する場合に時々発生する。[Storyboard] Unknown class 〇〇 in Interface Builder file. の対処法を残しておこうかと思います。 原因・解決法 今回のケー…
今回は View の制約を更新する際などに登場する updateConstraints() について簡単にまとめていきます なんのメソッド? このメソッドはUIView のインスタンスメソッドで、View の制約を更新する際に呼び出します。基本的にはシステム側がレイアウトパフォー…
今回も初学者向けに階層の異なる特定の View の座標を取得したい時に使用する convert() 関数の使い方を簡単に説明していきたいと思います。 実際に使ってみる 下記のような階層の View を参考に convert() メソッドを使って見て座標を取得してみます。 緑…
今回は初学者向けに上限・下限値を設けた値の取得が便利にできる max・min 関数を紹介したいと思います。 max max() 関数は指定された引数の中で最も大きい値を返します。つまり、これ以上小さくしたくないという値を引数に含めることで下限を設定して値を取…
今回は AutoLayout 関連で、なんとなく使っていて詳しく理解できていなかった Content Hugging Priority と Content Compression Resistance Priority を調べていきたいと思います。 Content hugging priority とは? この Priority(優先度) は View が本来…