- 1. 【Swift】HTTP通信時のコネクションの再利用
- 2. iOS長期インターンに参加してから4ヶ月経って、学んだこと
- 3. 【Swift5】キーボードを閉じる方法
- 4. [Swift] PKToolPicker in iOS14
- 5. iOS開発環境におけるデバッグ効率を上げるTips
- 6. 2021年版 iOSアプリ配布用証明書の作り方
- 7. iOS AutoLayoutに甘んじた結果の失敗談
- 8. SwiftUIで株価をチャートで表示する 「API取得編」
- 9. Unityビルドにハマった時に見る備忘録
- 10. 【iOS】RxSwiftを使ってMVVMなカウントダウンタイマーの作り方
- 11. [Swift] iOS UIKitプロジェクトでPreviewを簡単に使う方法
- 12. 非同期処理まとめ(swift)
- 13. iOSアプリでスクショをトリガーにする方法
- 14. Flutter 2.5.x 環境をmacOS上に構築する(XcodeとFlutterの複数バージョン対応版)
- 15. Firebase Cloud Messaging証明書更新
- 16. 今更ながらUIViewControllerからUIViewを分離したModel-View-ViewControllerという考え方
- 17. 【Unity】スマホXR開発の現在について
- 18. Make sure you’re running a packager server or have included a .jsbundle file in your application bundle.の対処法
- 19. SwiftUIに関する非推奨のmodifierとその代替を一覧にしてみた
- 20. [Flutter] iOSのビルド時に Can’t load Kernel binary: Invalid kernel binary format version. のエラーが出た時の対処
【Swift】HTTP通信時のコネクションの再利用
## 概要
URLSessionオブジェクトを再利用することによる通信処理の効率化について記載します。
[Androidについてはこちら](https://qiita.com/cwan/items/391557a9edc4524cd685)
## 障害事象
弊社が開発しているiOSアプリのデータ転送量が多すぎるのではないかという報告を受けました。データ転送量を測定してみると、HTTPリクエスト・レスポンスのヘッダーおよびボディサイズの合計の2.5倍程度の量が発生していました。
※このアプリの外部への通信はすべて[Swift標準のHTTPRequest](https://developer.apple.com/documentation/foundation/urlrequest)を使用して実装されています。
## 調査方法
XCodeのDebug Navigatorで通信状況を調べてみることにしました。
1. シミュレーターでアプリを起動
1. ツールバー > [View] > [Navigators] > [Debug] を選択
1. [Network] をクリック
iOS長期インターンに参加してから4ヶ月経って、学んだこと
# 自己紹介 & はじめに
都内の情報系の大学に通う大学生です。iOS開発は今年はじめくらいから勉強していて、6月から長期インターンに参加しています。
インターン初めて3ヶ月ちょいですがこの間でもたくさんのことを学び、技術面に関わらず人間的な面でも色々気付かされたので、**「長期インターンは楽しいぞ!」**ということが少しでも伝えられればいいなと思います。![Screenshot-from-2021-09-28-19-15-48-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/861241/916169d6-8d29-f54e-aa8d-5bb155d0d5cd.png)
# 学んだこと、気づいたこと
### モチベーションは爆上がりする
インターンシップは、学んだことが社会に出て価値になる環境の1つであるので、やはり嬉しいです。### 独学では学ばない部分にも手が届いて楽しい!
アプリ開発は
– 提案
– 設計(デザイン?)
– 実装
の3つに集約されると思うのですが、やはり**提案*
【Swift5】キーボードを閉じる方法
# はじめに
この記事は、アプリを作っている際に幾度も「なんだっけ?」を解決するために作成した記事です。記事というか公開ノートのようなものです。# 前提
classに`UITextFieldDelegate`を追加します。“`swift
import UIKitclass ViewController: UIViewController, UITextFieldDele{
@IBOutlet weak var TextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()TextField.delegate = self
}“`
`TextField`は任意のtextFieldです。
# タッチでキーボードを閉じる
キーボード以外の場所をタップするとキーボードが閉じます。“`swift
override func touchesBegan(_ touches: Set,
[Swift] PKToolPicker in iOS14
#iOS14でPKToolPickerのshared(for:)がDeprecatedされている件
これまでのやり方
~~~swift
if let window = UIApplication.shared.windows.first {
if let toolPicker = PKToolPicker.shared(for: window) {
toolPicker.addObserver(canvasView)
toolPicker.setVisible(true, forFirstResponder: canvasView)
canvasView.becomeFirstResponder()
}
}
~~~iOS14 でのやり方
PKToolPickerのインスタンスをmakeUIView外で宣言。
~~~swift
@Binding var canvasView: PKCanvasView
let toolPicker = PKToolPicker.init()func makeUIVie
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
“`swiftimport 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 UIKitclass 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のバージョンを上げて、そのあとダウングレードをしたあとにこのような減少に陥りました。
以上。