iOS関連のことを調べてみた2022年11月07日

iOS関連のことを調べてみた2022年11月07日
目次

【Swift】UIColorPickerViewControllerをRxSwiftに対応した

# はじめに
1ヶ月前くらいからRxSwiftを学習し始めまして、最近はRxSwiftを使って個人開発をしています。
UIColorPickerViewControllerがRxSwiftに対応していなかったのでDelegateをRxSwiftで使えるようにしてみました。

# 何をするか
`colorPickerViewControllerDidSelectColor`と`colorPickerViewControllerDidFinish`をRxSwiftで使えるようにする
“`swift
extension ViewController: UIColorPickerViewControllerDelegate {
func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) {
}

func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewC

元記事を表示

[SwiftUI / CoreMotion]iPhone で測定した気圧を画面に表示する

## 記事の内容
iPhone で測定した気圧を画面に表示する

## 開発環境
|項目|内容|備考|
|—|—|—|
|PC|MacBook Air M1 (2020) メモリ:16GB ストレージ:1TB
macOS Ventura(ver 13.0)||
|iPhone|iPhone SE(2nd) iOS 16.1||
|IDE|Xcode ver 14.1||

## 注意事項
– このアプリを起動するためには PC と iPhone を接続する必要があります。
– 下記で紹介するコードにはエラー処理を実装していません。必要に応じて実装してください。

## ポイント
クロージャを利用して気圧のデータを ContentView に渡す

“`swift:測定した値を渡す処理
func st

元記事を表示

Flutter Push通知

FlutterでのPush通知が結構面倒だったのでまとめておきます
FCMの基本準備と設定は他の記事を参考にしてください
## 特徴
##### iOS
APNsとFCMTokenのマッピングを行う

##### Android
フォアグラウンドの時にはFCMをLocalMessageに変換して表示する

## iOS準備
Signing&Capabilities でこの設定を入れる
![スクリーンショット 2022-11-06 12.03.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566476/0f336759-ce5d-fc06-8da0-1ff8f073e0d9.png)

## コード
“` swift: AppDelegate.swift
import UIKit
import Flutter
import Firebase

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override f

元記事を表示

【SwiftUI】Combineを使ってデジタル時計を作る

# はじめに
以前はTimelineViewでデジタル時計を作成してみました
今回はCombineを使用してデジタル時計を作成してみようと思います。

# 完成形
![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/257b146a-ef0d-f222-e6ed-69b67fab5b3f.gif)

# 完成コード
“`ContentView.swift
import SwiftUI

struct ContentView: View {
@StateObject private var viewModel = ViewModel()
var body: some View {
GeometryReader { geo in
ZStack(alignment: .center) {
Color(red: 132/255, green: 209/255, blue: 78/255)

元記事を表示

RegexBuilderでカラーコードをUIColorに変換するものを作ってみる

Swift 5.7 / iOS 16になって、正規表現の機能が大幅に強化されました。

それまで用意されていた[NSRegularExpression](https://developer.apple.com/documentation/foundation/nsregularexpression)はひたすら使いづらく、悪夢のような代物でしたが、[Regex](https://developer.apple.com/documentation/swift/regex)や[Regex Literals](https://github.com/apple/swift-evolution/blob/644798165cf04084823b8ead8db52f3b3dd03a0d/proposals/0354-regex-literals.md)の導入で、Swiftの正規表現は他の言語とほぼ遜色ない使い勝手になりました。

しかしSwiftはそこにとどまらず、[RegexBuilder](https://developer.apple.com/documentation/regexbuilde

元記事を表示

オーバーライドをめっちゃ簡潔にまとめてみた

## はじめに
オーバーライドについて改めて学んだことを簡潔にまとめることとする。尚、継承の知識も必要である。

## 対象者
この記事は下記のような人を対象にしている。

– 駆け出しエンジニア
– プログラミング初学者

## オーバーライド(override)の詳細
– 子クラスが親クラスを引き継いだ(継承)をした際、親クラスで定義されているメソッドやプロパティを「子クラス」で上書きすることができる。

– 親クラスの上書きは「継承している子クラス」で行われるため、その上書きした子クラスのクラス内でのみ、あるいは、インスタンス化したときに上書き内容が反映される。
– 親クラスで既に定義されているメソッドやプロパティで同じシグニチャ(同じ名前、同じ引数、同じ戻り値)のメソッドやプロパティを定義する場合は、「override」を指定する必要がある。
– プロパティを上書きする場合は、親・子クラス共に「コンピューテッドプロパティ」でなければ上書きできない。
→こうすることで誤って親クラスのメソッドを上書きしてしまうミスを防ぐことができる。目印はoverride。
– また、su

元記事を表示

URLSession × Combine でAPI通信処理を書いてみる

サポート対象がiOS13,14以上のアプリが増えていく中で、より需要を増していると思われるCombine。
中でも今回は、Combineを使った非同期処理の書き方を記事にしてみました。

せっかくなので、API処理をRequest/Responseをジェネリクス・プロトコルで共通化し、エラーハンドリングもちゃんと行いたいと思います。

## 完成コード
“`swift
protocol APIClientProtocol: AnyObject {
func send(_ request: T)
-> AnyPublisher
}

final class APIClient: APIClientProtocol {
private init() {}
static let shared = APIClient()
private var cancellables = Set()

func send

元記事を表示

【Swift】MintでSwiftFormatを導入する

# はじめに
https://github.com/nicklockwood/SwiftFormat

SwiftFormatを使ってみました。
初めて使ったので導入方法を記録しておきます。

# やりかた
### Mintfile
“`:ターミナル
cd プロジェクトフォルダ
“`
Mintfileを作成します
“`:ターミナル
touch Mintfile
“`
Mintfileを開きます
“`:ターミナル
open Mintfile
“`
MintfileにSwiftFormatを記載します
“`:Mintfile
nicklockwood/SwiftFormat
“`
SwiftFormatをインストールします
“`:ターミナル
mint bootstrap
“`
### Run Script
① プロジェクトを選択します
② ターゲットを選択します
③ 「Build Phases」を選択します
④ 「+」を押します
⑤ 「New Run Script Phase」を押します
![スクリーンショット 2022-11-04 20.32.34.png](http

元記事を表示

PropertyWrapperを利用したDIコンテナの利用とRxSwift+MVVMでの処理&UnitTestに関する事例解説

## 1. はじめに

昨年に公開した記事の中で[自前でDIコンテナを作ってみる試みとRxSwiftを利用した構成への適用を試してみる](https://qiita.com/fumiyasac@github/items/8d6b77c3547b8b7839ad)というタイトルで、実務を通じてDIコンテナを自作した際のTIPS等を簡単ではありますがまとめました。

この記事の中でも少しだけ触れていますが、この記事を書いたタイミングでは残念ながら実践適用を見送った自作DIコンテナ構築のアイデアとしまして、 [【実装MEMO】PropertyWrappersの機能を利用したDependency Injectionのコードに触れた際の備忘録](https://fumiyasakai.medium.com/%E5%AE%9F%E8%A3%85memo-propertywrappers%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9Fdependency-injection%E3%81%AE%E3%82%

元記事を表示

【Swift】for文内のif文を省略できるらしい

# はじめに
SwiftLintを使ってたら警告が表示されて気づいたのですが、for文内のif文は`where`を使って1文にできるらしいです。

# やりかた
“`swift
for user in users {
if user == “SNQ-2001” {
print(“自分です”)
}
}
“`

“`swift
for user in users where user == “SNQ-2001” {
print(“自分です”)
}
“`

# おわり
こういうコードの省略形みたいなの知るとめっちゃ嬉しくなっちゃいます笑

元記事を表示

画面ミラーリング専門開発キット「LetsView SDK」とは?インストール&設定する方法についての説明

画面ミラーリングは現在娯楽だけでなく、テレワークやオンライン授業、VRメガネの使用など様々な場面で応用されています。企業や組織にとって、もしアプリに画面ミラーリング機能を追加したい場合、1から開発するより、SDK開発キットを直接に導入したほうが便利で速いでしょう。このような理由でスクリーンミラーリング用の専門SDKキットが誕生されました。今回はご紹介致します。

「LetsView SDK」とは?

「LetsView SDK」とは、プラットフォームやシステムを問わずに動作可能でプロな画面ミラーリング開発キットです。AirPlay、Miracast、DLNA、AMCast(自社開発)など、さまざまなスクリーンミラーリングプロトコルとの互換性があり、アプリなどに便利に導入することができます。人気画面ミラーリングアプリApowerMirrorの開発とサポートは「LetsView SDK」開発チームが担当されています。

![what-is-

元記事を表示

IntelliJ エミュレータがサイドバーに出てしまう問題

IntelliJは初期設定でエミュレータをサイドバーに表示しますが
今回、サイドバーじゃなくて、普通に表示してほしいんじゃい!!ということで
エミュレータをサイドバーではなく、普通に表示します?

# 設定の編集
まず、IntelliJの`preferences`(設定)に行きます。
Windowsの方は、上に出ているメニューバーから
Macの方は、画面上にカーソルを当てて、`IntelliJ IDEA`>`Preferences`を押しましょう。

次に、検索バーに`emulator`と入力し、検索しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/3f6ffa49-b538-b9d5-07c7-b217c991ec4c.png)

検索結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/5e28d24b-8522-573c-3b0c-f77eb9

元記事を表示

以前作った@resultBuilderでHTMLを書き出すDSLを手直ししながら、@resultBuilderの使い所について考える

SwiftUIとともに颯爽と登場した`@_functionBuilder`(aka `@resultBuilder`)ですが、いまいち使い所を見出せないまま時は過ぎました。

自分の観測範囲に限れば、SwiftUI以外で`@resultBuilder`が有効に使われているライブラリは見当たらず、持て余してるのは自分だけじゃないと思って溜飲を下げていたところです。

そんな中、Swift 5.7が正規表現に対応し、その中で正規表現構築用のDSLを用意してきました。

[RegexBuilder | Apple Developer Documentation](https://developer.apple.com/documentation/regexbuilder)

[swift-evolution/0351-regex-builder.md at main · apple/swift-evolution](https://github.com/apple/swift-evolution/blob/main/proposals/0351-regex-builder.md)

「**そ

元記事を表示

【iOS】アプリの設定にバージョンを記載する

# はじめに
タイトルだけだとイメージできないと思うので画像載せます。
![IMG_1572.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/50cc2add-fe02-13ee-e411-9be155ee3399.jpeg)

こんな感じのよくあるやつです

# 実装方法
### Settings.bundleの設定
メインターゲットのフォルダを選択します
![スクリーンショット 2022-11-02 17.56.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5aeab3e3-5f14-5e43-e585-b0e7c8920a9a.png)
⓪ 「`⌘ + N`」で「Choose a template for your new file:」を開きます
① `Setting`と検索します
② 「Setting Bundle」を選択します
③ 「Next」を選択します
![スクリーンショ

元記事を表示

iOS16時代のStoreKit使用法 (SwiftUI)

# はじめに

SwiftUIで作成したアプリで、
ユーザーに評価やレビューを依頼するViewを表示しようと思ったのですが、
iOSのバージョンによって使い方がコロコロ変わっているのでまとめてみました。
(iPadOS, macOS, Mac Catalystでも事情は同じですが省略します)

# APIの変遷
* iOS 13.0 – (14.0でdeprecated)
“`Swift
SKStoreReviewController.requestReview()
“`

* iOS 14.0 – (deprecatedではない)
“`Swift
// 事前にUIWindowSceneを取得する必要がある。
SKSt

元記事を表示

SwiftのWebKitを使ってHTTPリクエストやレスポンスの中身を見てみる。

Swiftでアプリを開発している際に、Webブラウザの特定のページにおいて、特定の処理を実行したい場合があったので、その方法を共有してみたいと思います。

目次

  • HTTPリクエストとレスポンスの構造
  • 実装
  • 実行結果
  • 終わりに
  • 参考記事

HTTPリクエストとレスポンスの構造

 そもそもHTTPとは、Webサーバーから情報を取り出したり、Webサーバーへ情報を送ったりするために決められた通信の手法のことです。

図1:クライアントとサーバーの関係

HTTPの流れ

  1. クライアント側でURLを入力すると、URLで指定されたWebサーバーにリク
元記事を表示

UIViewをアニメーションさせるとタッチイベントが認識されない

## 問題

UIViewをアニメーションさせると、UIViewに配置したボタンなどのタッチイベントが認識されない。

### 例

* ポップアップを表示して、一定時間後にアニメーションしながら消す(スナックバー)

## 解決方法

* UIView.animateのdelayを指定する場合、animateを実行した時点からタッチイベントが発火しなくなるため、TimerでDelayする
* アニメーション開始まではイベントの捕捉が可能
* optionsにUIView.AnimationOptions.allowUserInteractionを指定する

“`swift
Timer.scheduledTimer(timeInterval: SnackBarView.Delay, target: self, selector: #selector(timerUpdate), userInfo: nil, repeats: false)

@objc private func timerUpdate() {
UIView.animate(withDuration: Sn

元記事を表示

【SwiftUI】Combineでテキストフィールドの文字数制限を実装してみた

# はじめに
「[比較して学ぶRxSwift入門](https://www.amazon.co.jp/%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E5%AD%A6%E3%81%B6RxSwift%E5%85%A5%E9%96%80-%E6%8A%80%E8%A1%93%E3%81%AE%E6%B3%89%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%EF%BC%88NextPublishing%EF%BC%89-%E9%AB%99%E6%A9%8B-%E5%87%8C-ebook/dp/B07LGMNXS3/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=XXQFBR71LQ04&keywords=%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E5%AD%A6%E3%81%B6RxSwift%E5%85%A5%E9%96%80&qid=1667274135&qu=eyJxc2MiOiIwLjgxIiwicXNhIjoiMC4

元記事を表示

[iOS] サブスクリプションの実装 (StoreKit2, Xcode14)

# はじめに
最初に宣伝ですが、英語など外国語の学習に使える**iOSの単語帳アプリ**をリリースしました。
興味がある方は触ってみてください。

https://apps.apple.com/jp/app/id1633552796

このアプリにサブスクリプションを実装をしたので、本記事ではiOSのサブスクリプションの実装方法についてまとめました。

# StoreKit2ノススメ

iOSではサブスクリプションなどのApp内課金は、`StoreKit`フレームワークを使って実装しますが、StoreKitにはバージョン1と2があり、その2つはかなり実装方法が異なります。

StoreKit2はiOS15以降でしか使えませんが、**StoreKit1と比べて実装がかなり楽になる**ので、これからリリースするアプリならStoreKit2を使うのがお勧めです。

StoreKit2のメリットは、大きく**サーバーサイドのレシート検証が不要になった**点と、**全体的にAPIが便利になった**点で、これにより肌感覚ですが、StoreKit1の3分の1くらいの時間で課金周りの機能が作れるように

元記事を表示

【Xcode】実機でビルドできなくなった

# エラー
![スクリーンショット 2022-10-30 20.40.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/392b2ec6-c6d7-5fa8-46a1-a2c0324019e2.png)
“`
This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need to restart your Mac and device in order to correctly detect compatibility.
“`

# 原因
サポートされていないバージョン

# 確認方法
![スクリーンショット 2022-10-30 20.42.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174

元記事を表示

OTHERカテゴリの最新記事