iOS関連のことを調べてみた2021年10月06日

iOS関連のことを調べてみた2021年10月06日
目次

iOS開発環境におけるデバッグ効率を上げるTips

# はじめに

この記事は自分がデバッグを行う中で便利だと思ったことを記載しています。
定期的に追記/更新していきます。

# 設定

## 言語環境など、特定の設定状態で起動する

シュミレータや実機でデバッグを行うとき、Localizedの確認のために特定の言語や地域で起動したい場合があります。

### After

![IMG_2202.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300780/1340e8b1-5441-bfb1-bda6-2a9ddc5034e4.png)

言語設定の場合、実機やシュミレータでも設定アプリから設定することができます。
しかし、切り替える度に画面が暗転し、短い再起動のような状態に陥ります。

### Before

Edit Scheme -> Run -> Optionsと遷移すると以下のような画面が表示されます。

![Screen Shot 2021-10-06 at 1.21.52.png](https://qiita-image-store.s3.

元記事を表示

2021年版 iOSアプリ配布用証明書の作り方

# はじめに

iOSアプリの配布用証明書(Distribution Certificate)の作り方はいつも忘れてググってしまうのですが、最近ググると古いやり方が大量にヒットするうえ、さらに自分の記憶も2016年頃で止まってたため、大混乱しました。

最近iOS開発を始めた人は何も混乱しないような気がしますが、新しいやり方を備忘録として書き残します。

昔は証明書署名要求(CSR)ファイルをローカルで生成し、Apple Developer へアップロードして iOS Distribution Certificatie を生成してました。検索するとたくさんヒットするのはこちらのやり方です。

Xcode 8以降では証明書の自動管理機能が導入され簡単になっています。現在は、Xcode の Manage Certificates 機能で「Apple Distribution Certificate」を作成するのがシンプルな手順と思われます。

(Xcode の Organizer 経由でも Apple Distribution Certificate が作成できるかもですが、そちらは試し

元記事を表示

iOS AutoLayoutに甘んじた結果の失敗談

昔と違い、近年ではiPhoneの画面サイズも多様かされていて、Android開発同様にAutoLayoutでデザインするのが常識のとなっています
そんな中、AutoLayoutに任せっきりのマインドからきた「おやっ?」と思った失敗談です

※時系列として、iPhone 13が出る前の話です

## 前提
– XCode 12.0
– 画面のレイアウト(制約含む)はStoryboardを使って定義している
一部、データ条件に応じた、表示/非表示、画像の切り替えはコード側で制御
– iPhoneだけをターゲットにした開発

## 発生した問題
iPhone 12 Pro Maxの時だけ、TabBarの表示領域が意図した通りに確保されていなかった
これにより、操作はできるものの見栄えが極めて悪い状態となってしまった

よく見たら、Storyboard上でアイコンが■で表示されているではないか。。
(この時点で、開発者の意図した状態ではなかった)

制約の設定内容

– Tab BarはView上で下付き
Tab Bar自体には高さの制約は設定しない
– UIViewはTab Barに

元記事を表示

SwiftUIで株価をチャートで表示する 「API取得編」

## **APIを叩いて非同期処理で株価を取得する**
本記事の目的は、SwiftUI初心者が[**Alpha Vantage Inc.**](https://www.alphavantage.co/)のAPIを使用して、米株市場の銘柄を取得できるようになることです。株価のチャートを表示するのは別の記事で投稿しようと思います。
![5株価イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128814/5dcdf0ef-4259-c6df-ca29-0a54a46b12ac.png)

## **APIKeyの取得 ~ APIの詳細について**
**APIKeyの取得手順**
1.[**Alpha Vantage Inc.**](https://www.alphavantage.co/)のサイトから「GET YOUR FREE API KEY TODAY」をクリックする。
![1(APIKey取得).png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

Unityビルドにハマった時に見る備忘録

#最初に
これらは備忘録でざっと書いているので日本語がおかしかったりこの方法で直らない可能性があることをご了承ください

#Unityビルドに失敗する場合
##エラーが100個以上大量に出ている場合
エラーの量で雑に分類します。
エラーメッセージを見る。
### Duplicate class com.google.android.gms.ads.identifie … と言われてる場合

例えばこのエラーメッセージの場合

java.lang.RuntimeException: Duplicate class com.google.android.gms.ads.identifier.AdvertisingIdClient found in modules classes.jar (:com.google.android.gms.play-services-ads-identifier-17.0.0:) and classes.jar (:play-services-ads-identifier-17.0.0:)

元記事を表示

【iOS】RxSwiftを使ってMVVMなカウントダウンタイマーの作り方

# リアクティブなカウントダウンタイマーの作り方

手書きでQiita書いたので誤字脱字あったらお許しください…

### ViewController

“`swift:ViewController.swift

class ViewController: UIViewController {

@IBOutlet private weak var countLabel: UILabel!
@IBOutlet private weak var startButton: UIButton!
@IBOutlet private weak var stopButton: UIButton!

private var viewModel: ViewModel!
private let disposeBag = DisposeBag()

override func viewDidLoad() {
super.viewDidLoad()
setupViewModel()
}

private func setupViewModel()

元記事を表示

[Swift] iOS UIKitプロジェクトでPreviewを簡単に使う方法

XCode preview はUIの変更点を容易に見ることができる機能で、SwiftUIでは簡単に使えます。

私は今度、[UICollectionViewCompositionalLayout](https://developer.apple.com/documentation/uikit/uicollectionviewcompositionallayout)を勉強しながら、

UIKitでXcode Previewを書いてみたいと思いました。

今回の掲示板ではiOS UIKitプロジェクトでPreviewを簡単に使う方法について紹介します。

## UIViewController
“`swift

import UIKit

#if canImport(SwiftUI)
import SwiftUI

@available(iOS 13.0, tvOS 13.0, *)
public struct UIViewControllerPreview: UIViewControllerRepresentable where Content : UIViewCon

元記事を表示

非同期処理まとめ(swift)

#非同期処理とは
ある処理を実行中に別の処理を止めないこと処理を非同期処理という。
swiftではスレッドを利用して非同期処理を実現する。

スレッド:CPUにおける最小の実行単位。
     スレッド数はCPUが担当できる仕事の数。

![非同期処理イラスト.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1261100/f20f47c2-d3da-6753-3d7c-5a01c265456c.jpeg)

#どんな場面で非同期処理が必要?
アニメーションやサーバーとの通信など、時間がかかる処理・重い処理などに使用します。

#マルチスレッド処理
通常プログラムはメインスレッドという単一のスレッドから処理を開始するが、別のスレッドを作成して別の処理を実行させることができる。

!!ただし、iosにおいてユーザインターフェイスに関わる処理は通常メインスレッドで行われる!!

しかし!!マルチスレッドは正しく実行しなければ下記の深刻な問題が

元記事を表示

iOSアプリでスクショをトリガーにする方法

# はじめに
AmazonPrimeやNetflixでスクリーンショットをとると、黒塗り画面が保存されますよね。
今回はその実行方法が気になり調べたので、記事にまとめました。

# 方法
`userDidTakeScreenshotNotification`っていう機能を使えば、
スクリーンショット後に処理を実行できるみたい。

# 実装
“`ViewController.swift
import UIKit

class ViewController: UIViewController {

// スクショ時、黒塗りするためのView
@IBOutlet weak var filterView: UIView!

override func viewDidLoad() {
super.viewDidLoad();

// 黒塗り画面を非表示
filterView.isHidden = false;

NotificationCenter.default.

元記事を表示

Flutter 2.5.x 環境をmacOS上に構築する(XcodeとFlutterの複数バージョン対応版)

# なぜこの記事を書いているか?

自分の参画していたプロジェクトで、FlutterおよびXcodeのバージョンの違いに悩まされていたので、違いを吸収する方法は無いかと色々調べていたら以下の方法にたどり着きました。その備忘録です。

# 環境(2021/10/03現在)

– MacBook Pro (Intel Mac)
– macOS Big Sur (11.6)
– Flutter (2.5.2)
– Android Studio (Arctic Fox | 2020.3.1 Patch 2)
– Xcode (13.0)

# インストール

## Homebrew

今回は色々な物をHomebrewでインストールするので、以下を実行します。

“`bash
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

## Google Chrome

なにはともあれ、Chrome。

“`bash
brew install –ca

元記事を表示

Firebase Cloud Messaging証明書更新

しばらく忙しくて自作アプリを放置していたらAPSの有効期限が残り3日を切っていましたw
APS証明書の更新がてら更新手順とFirebaseの証明書更新について備忘録を残そうと思います。

# 1. CSR作成
証明書といえばCSRの作成から始まりますね。

1. キーチェーンアクセス起動
1. 証明書アシスタント
1. 認証局に証明書を要求
1. 以下情報登録
* ユーザのメールアドレス
* 通称
* ディスクに保存
* 鍵ペア情報を保存
1. 続ける
1. 保存場所を決めて保存
1. 鍵ペア情報はそのまま
1. 続ける

# 2. ADPで証明書を作成
1. identifiersから対象のアプリのものを選択
1. Push Notifications -> Edit![スクリーンショット 2021-10-03 16.50.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457333/82599f6f-01f7-808d-c32e-d4693c8aacd4.png

元記事を表示

今更ながらUIViewControllerからUIViewを分離したModel-View-ViewControllerという考え方

## まず始めに

本投稿ではUIViewControllerからUIViewを分離して、UIViewControllerをPresenterやViewModelのような位置づけにする考え方を紹介していきます。
昨今ではSwiftUIが実践導入されることが増えてきているため、UIKitの構成について考えることは少なくなっているとは思いますが、UIKitを利用した場合にこういう考え方もできるのだなという1例として読んでいただけますと幸いです。

以下のようなサンプルアプリを用いて紹介していきます。

– 検索画面で映画のタイトルを検索すると、一覧が表示できる
– 一覧から映画を選択すると、該当の映画の詳細情報が表示できる

動作 | 検索 | 詳細
:-: | :-: | :-:
![sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60325/dd6b636f-643e-4f06-7bd9-c5cd31a42aee.gif) | 【Unity】スマホXR開発の現在について

# はじめに
昨今はOculus QuestシリーズやPico Neoシリーズなどの非常に安価なVRデバイスが市場に流通し始めたため、AndroidやiOSなどのスマホVRはあまり使われなくなってきました。
しかし、現在でもスマホでできるVRは最も小さいVRデバイスであるため、最も普及しているVR対応デバイスであることには変わりがありません。
その点についてもっと注目を集めてもいいんではないか?と考え、スマホVRの現状について調査してみました。

# 開発環境Cardboard SDK
## GoogleVR(GVR)
スマホVRの最盛期で最も人気があったSDKです。
2014年にGoogle Cardboardという段ボールで作られたスマホを差し込むタイプのVRゴーグルが発売されました。
VRデバイスを体験したことがない人でもこのタイプのデバイスを見かけたことがある人は多いのではないでしょうか?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1336886/e12b45e9-6b50-

元記事を表示

Make sure you’re running a packager server or have included a .jsbundle file in your application bundle.の対処法

Xcode:13
ReactNative:0.65.1

#エラー
iOS simulatorでビルドしようとしたら以下のようなエラーが…

“`
Make sure you’re running a packager server or have included a .jsbundle file in your application bundle.
“`

####<解決方法>
実機でのビルドを試したときに、AppDelegate.mの一部をコメントアウトした事が原因だった。

“`:変更前[AppDelegate.m]
// #if DEBUG
// return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@”index” fallbackResource:nil];
// #else
return [[NSBundle mainBundle] URLForResource:@”main” withExtension:@”jsbundle”];
// #endif
“`

元記事を表示

SwiftUIに関する非推奨のmodifierとその代替を一覧にしてみた

## はじめに
SwiftUIもiOS13から登場して今年で3年目になります。
初期の頃から見るとかなり使いやすく、また意図しない動作も減ってきています。
またその過程で非推奨もどんどん増えてきていますので
2021.10.1時点での非推奨と代替の一覧を作ってみました。
また以下公式ドキュメントにもありますので詳細はこちらをご覧ください。

[Deprecated Modifiers](https://developer.apple.com/documentation/swiftui/view-deprecated)

## 一覧
|非推奨|代替|
|—|—|
|colorScheme| preferredColorScheme|
|listRowPlatterColor|listItemTint|
|background(_:alignment:)|background(alignment:content :)|
|overlay(_:alignment:)|overlay(alignment:content:)|
|autocapitalization(_:)|textIn

元記事を表示

[Flutter] iOSのビルド時に Can’t load Kernel binary: Invalid kernel binary format version. のエラーが出た時の対処

## エラー内容
FlutterでiOSの実機でビルドを試みたときに、とあるエラーが出て一向に進まなくなりました。
コンソールには以下のようなエラーが出ていました。

“`
[VERBOSE-2:shell.cc(93)] Dart Error: Can’t load Kernel binary: Invalid kernel binary format version.
“`

## 対処法

まずターミナルで`which flutter`コマンドを流す。

“`
% which flutter
~/flutter/bin/flutter
“`
のようにFlutterのファイルディレクトリがわかるので、該当箇所まで行って
`flutter > bin > cache` をまるごと削除してしまいます。

その後は、`flutter clean`をすると先程削除したファイルが再度生成されるので、`flutter pub get` をしたらビルドが通りました。

Flutterのバージョンを上げて、そのあとダウングレードをしたあとにこのような減少に陥りました。

以上。

元記事を表示

Let’s Encrypt証明書を使ったメールサーバからの送受信がiOSでエラーになる場合の対処方法

# はじめに
無料SSL証明書を発行するLet’s Encryptで従来使用されていたDST Root CA X3証明書が2021年9月30日で使用できなくなり、これに伴い、この証明書で運用していた自身のメールサーバ(Postfix, Dovecot)につき、iOSでのメール送受信(SSL)ができなくなったので対応した。

# 結論
1. Let’s Encrypt証明書をいったん削除し、certbot コマンドに “`–preferred-chain “ISRG Root X1″“` オプションを追加して証明書を再作成する
1. PostfixおよびDovecotで、証明書として cert.pem ではなく **fullchain.pem** を指定する

# 経緯
– [この記事](https://ssl.sakura.ad.jp/column/letsencrypt-root-certificate/)のように、以前からLet’s Encryptで使用されていたDST Root X3のルート証明書は2021年9月30日で使用できなくなることは以前からアナウンスされていた。

元記事を表示

単位換算アプリの作成(swift)

#はじめに

###航空の世界は単位が多い
![83BCF875-DFFB-47F3-91A3-ADFCF12B7C51.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1261100/126eb816-369b-c3eb-0145-7d5e01f73900.jpeg)
>写真はwikipediaより

航空業界は日本では普段使用しない単位を多用します。
また使用する機種によっても単位が違いますので換算が必要です。
(例えば、アメリカ製のヘリコプターは燃料の単位にlbsを使うが
 日本製のヘリコプターは燃料にkgを使用します)

航空単位の例

| | 航空(米) | 通常(日本) |
|:-:|:-:|:-:|
| 高度 | ft | m |
| 重量 | lbs | kg |
| 距離 | NM | km |
| 速度 | kt | km/h |

###単位を間違えたことによる事故も発生している
[ユナイテッド航空173便燃料切れ墜落事故](https://ja.wikipe

元記事を表示

Cocos2d-x v4への移行 iOS編

cocos2d-x v3.17.2のcpp templateをベースに
v4へのmigrationを行う解説を行っていきます

旧バージョンのcocos2d-xからv4へのアップデートに
関心はあるがあまりiOS, Androidには習熟していないよ
という方向けです

私の知見が助力になれば幸いです

## [1.確認環境](#Migration-1)

– XCode 12.5.1
– CocoaPods 1.10.2
– CMake 3.15.3

## [2.Cocos2d-x v4ダウンロード](#Migration-2)

[github](https://github.com)にgithubに履歴を残していますので
差分や動作の確認にお使いください。

cocos2d-x v3.17.2のテンプレートから始めます。

ダウンロードしたcocos2d-xを解凍してフォルダ名をcocos2dに変更後
既存のcocos2dフォルダを置き換えます。

cocos2d-x v4 [ダウンロードリンク](https://www.

元記事を表示

Xcode13 (iOS15 SDK) 対応で UITabBar を修正した際にバッジ表示が崩れた場合の対処法

## 環境

– Xcode 13.0 (13A233)
– iOS 15.0

## 何が起こったのか

Xcode13 (iOS15 SDK) では `UITabBar` に対して、

– 背景色が透過してしまう、適用されない
– タブバー上部のボーダーが表示されない

といった問題が発生するため、 [UITabBar.standardAppearance](https://developer.apple.com/documentation/uikit/uitabbar/3198046-standardappearance) や [UITabBar.scrollEdgeAppearance](https://developer.apple.com/documentation/uikit/uitabbar/3750912-scrolledgeappearance) を設定するといった対応が必要となってきます。

具体的には、以下のようなコードです。

“`swift:UITabBar の Xcode13 対応
// 元々の実装
UITabBar.app

元記事を表示

OTHERカテゴリの最新記事