iOS関連のことを調べてみた2023年01月09日

iOS関連のことを調べてみた2023年01月09日
目次

podの ””is only available in ios xx.x or newer”” エラー解決

iOSのバージョンを上げてもエラーが出てくるので困っていた

![スクリーンショット 2023-01-08 23.49.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517291/a42fb57c-4673-f61d-3d07-24619e01f579.png)

## 解決方法

podfileに書かれている値を
15.0に修正

“`podfile
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings[‘IPHONEOS_DEPLOYMENT_TARGET’] = ‘15.0’
end
end
“`

元記事を表示

【Swift/Storyboard】iOSアプリにFirebaseを用いたGoogle認証を導入する。

## 注
この記事に記載されている情報は、2023年1月8日時点のものです。

## 概要

iOS用のネイティブアプリに、Firebaseを用いたGoogleログインを導入します。

## 環境

Version 14.2 (14C18)

“`terminal
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -v
Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51)
Target: arm64-apple-macosx12.0
“`

以下二つのpodは、バージョンを指定していません。

“`Podfile
pod ‘Firebase/Auth’
pod ‘GoogleSignIn’
“`

## 参考Document

– AppleプラットフォームでのGoogleサインインを使用した認証

https://firebase.google.com/doc

元記事を表示

【Swift】macOSアプリ開発で通信できない時に確認すべき設定

# はじめに
現在、個人開発でMacのメニューバーアプリを開発しています。
URLSessionを使用して通信を行おうとしてたのですが、
データ取得できずに苦戦していました。

意外と見落としがちな設定があったので記録しておきます。

# 原因
![スクリーンショット 2023-01-07 21.26.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/cf3038f1-1dcd-2ac6-4751-b12b5cb16bd3.png)

この設定をしていないと外部との通信ができないっぽい?です

|||
|-|-|
|Outgoing Network Connections|YES|

# おわり
久しぶりのMacアプリなので初歩的なところで何時間も無駄にしてしまいました。。。。

元記事を表示

[Flutter][iOS] nfc-manager を使ってNFC タグを読み込む

Flutterで作成した iOS アプリから NFCタグを読み込むのに、 [nfc-manager](https://pub.dev/packages/nfc_manager) パッケージを利用してみました。

読み込むタグの種類としては両方のOSで読み込むことができる NDEF(NFC Data Exchange Format)を対象としました。

nfc-manager の説明によると、
– Near Field Communication Tag Reader Session Formats Entitlements を追加
– NFCReaderUsageDescription を Info.plist に追加
– com.apple.developer.nfc.readersession.felica.systemcodes と com.apple.developer.nfc.readersession.iso7816.select-identifiers を Info.plist に追加(必要なら)

と書いてあります。
今回は NDEF のみが対象なので、3つ目は不要かと

元記事を表示

Flutter×Firebaseでチャットアプリを作る

なんとなくFlutterの勉強がてら作りました。
基本的に以下のサイト様を参考にさせていただいたので詳しく知りたい方は↓を見てください。

https://qiita.com/atm_33/items/0b066c34280b39628910

https://zenn.dev/tama8021/articles/0816_flutter_chat

# Firebaseの準備
以下のサイトの2章「Flutter × Firebase のセットアップ」を参考にFirebaseとFlutterをセットアップします。

https://blog.flutteruniv.com/flutter-firebase/

# さっそく実装
今回作成するのは以下の3つです。(ボトムメニューは別です。)
+ チャットルーム一覧
+ チャットルーム新規作成
+ チャットルーム本体

![Simulator Screen Shot – iPhone SE (3rd generation) – 2023-01-07 at 21.09.10.png](https://qiita-image-store.s3.

元記事を表示

【SwiftUI】Textにブランクが入ったときに意図せぬ高さに設定されてしまう場合の対応

SwiftUIで`Text`を使っていて、
ブランクが入った場合に想定していた値と異なる高さが設定されレイアウトが崩れるというケースがありました。
初歩的かもしれませんが、その事象の共有と対応について記載しようと思います。

## 環境
“`
Xcode:14.1
シミュレーター:iPhone14 Pro(iOS:16.1)
“`

## 事象
`Text`を縦方向に並べるケースを考えます

“`Swift
struct SwiftUIView: View {

var body: some View {
HStack(alignment: .top) {
VStack(alignment: .leading, spacing: 0) {
Text(“Text”)
.foregroundColor(Color.white)
.background(Color.blue)
Text(“Text

元記事を表示

【iOS 16.x】シミュレータの言語を変えようとするとハングアップする

# はじめに
XCodeのSimulatorで言語設定を変えようとしたら、設定が反映されず、「言語を設定中」なままになってしまったので、直し方ないかと探したら、すぐに見つかったので、備忘録として
![スクリーンショット 2023-01-07 16.07.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9961/cd468ee6-a551-fbe7-506c-70b20aec914a.png)

# 更新履歴
2023.1.7 初回投稿

# 環境
– macOS Monterey 12.5.1
– Simulator:Version 14.1 (986.5)
– XCode:Version 14.1

# 参考にしたサイト
https://seishin.me/fix-ios-16x-simulator-hangs-on-language-change-issue/

# 手順
1. XCodeを起動し、Window>Devices and Simulatorsを選択し、該当のSimulatorのU

元記事を表示

iOSの言語選択画面(設定アプリ)のクローン作成で苦労した点

## はじめに
本来はDeepLクライアントをiOS+SwiftUIで作っていたのですが、
翻訳先の言語選択を行うUIを考えていたときに「設定アプリのクローン」を作ったら面白いんじゃないかと思い立ってしまいました。
しかしながら、選択肢の言語リストを表示するだけで引っかかってしまったので共有したいと思います。

## 技術検討
設定アプリの言語選択画面を観察してみます。
各言語のリストは以下のように上下2行で構成されています。
1. 各言語名をその言語を使って(母国語で)表記。 (例:Deutsch)
1. 各言語名を端末の設定言語で表記。 (例:ドイツ語)
![0001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/95033/4c0bd296-2dde-cbd6-990e-a915a9c4f816.png)

### 指針
“`Locale“`を使用すれば、知らない言語や文字であってもほぼ対応できます。
“`Localizable.strings“`で頑張らなくても大丈夫です。:sungl

元記事を表示

【Xcode】Previewを更新する

# はじめに
iOS13からだとPreviewが使用できるので、Previewを使用して開発することがあると思います。
Previewを使用する上で知っておかないと不便なコマンドショートカットがあるので紹介します。

# ツールバーから使用する
① 「Editor」を選択します
② 「Canvas」を選択します
③ 「Refresh Canvas」を選択します
![スクリーンショット 2023-01-06 16.55.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d47de142-996e-e921-d700-4fe8933ff4b8.png)

しかし毎回これをやるのは面倒なのでキーボードショートカットを覚えましょう。

# キーボードショートカット
`control` + `option` + `p`

# おわり
これを使用しないと快適にPreviewを使えないと思います。

元記事を表示

【Swift】画面の明るさを強制的に変更する

# はじめに
PayPayをよく使うのですが、QRコードを表示する際に画面が強制的に明るくなるのでどうやるのか気になって調べてみました。

# サンプルアプリ
動画だと画面の明るさが変わってるのがわからない。。。
![Simulator Screen Recording – iPhone 14 – 2023-01-05 at 19.33.59.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/2a75691e-5db3-d630-f1c1-b6673f425032.gif)

:::note warn
**注意**
実機でのみ画面の明るさが変わっていることを確認できます。
:::

# 実装
“`swift:ContentView
import SwiftUI

struct ContentView: View {
var body: some View {
NavigationStack {
NavigationLink {

元記事を表示

Swiftでテストコードを書くための手順

Swiftでテストコードを書くための手順を紹介しようと思います。

今回はreloadボタンを押すと、内部で1から3の乱数が発生し、1であれば「晴れ」の画像、2であれば「曇り」の画像、3であれば「雨」の画像を表示するといった簡単なアプリを実装します。またそれに伴い、各数字に対応する画像が表示されているかどうかの単体テストを行なってみようと思います。なお、storyboardの実装は省略しているため、WeatherView.storyboardを実装しておいてください。それでは実際の手順です。
## ①まずは何も考えずに実装

“`swift: WeatherViewController.swift
import UIKit

class WeatherViewController: UIViewController {
@IBOutlet weak var weatherImage: UIImageView!

@IBAction func reloadWeatherImage(_ sender: Any) {
updateWeather()

元記事を表示

iOSのアプリをアップデートしたときにリジェクトをくらった理由と対応

# はじめに
iOSのバージョンアップもあり、[CotoGoto](https://cotogoto.ai/)のアプリの最新化を図るために久しぶりにライブラリのアップデートをしたのですが、リジェクトになってしまい、その理由と対応をまとめておきます。

まずは、リジェクトをくらった内容ですね。

> Guideline 4.0 – Design
>
> We noticed that the user is taken to the default web browser to sign in or register for an account, which provides a poor user experience.
>
> Next Steps
>
> To resolve this issue, please revise your app to enable users to sign in or register for an account in the app.
>
> You may also choose to implement the Safari V

元記事を表示

突然始めるFlutter環境構築〜モバイル向け〜

# 動機
AndroidもiOSにも対応したアプリが作りたいなと思いまして。

# この記事の内容
1. Flutterを導入する
2. Android Studioを導入する
3. Xcodeを導入する
4. Android StudioでiOSシミュレータを起動する
5. デバッグ実行

# 環境
PC:MacBook pro(2017)
OS:Monterey

# 参考

https://qiita.com/akatsukaha/items/3b8a5a6d94a3cdb1e047

https://zenn.dev/kboy/books/ca6a9c93fd23f3/viewer/5232dc

# Flutter導入
ここはシンプルに公式が一番。

https://docs.flutter.dev/get-started/install

# Android Studioを導入する
これらを参考に。
導入後、PluginからFlutterとDartを別途インストール

https://developer.android.com/studio/install?hl=ja

元記事を表示

【SwiftUI】MenuBarExtraが開かれた事を検知する

# はじめに

`menuBarExtraStyle(.window)`で閉じたことを検知したかったのですが、未だに出来

元記事を表示

【Xcode】新しいSFSymbolでも全てのOSバージョンで使いたい

# はじめに
「うわ!めっちゃ欲しかったSFSymbolsが追加されてるじゃん!使お」
「まじか、iOS16.1からしか使えないじゃん」

こんな経験ありますよね

大丈夫、使えるんです

# やりかた
① 使いたいシンボルを選択します
② 「ファイル」を選択します
③ 「シンボルを書き出す…」を選択します
![スクリーンショット 2023-01-03 22.05.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/e1c3425e-7664-67c8-b355-7d186d2ba31a.png)

④ 「書き出す」を選択します
![スクリーンショット 2023-01-03 22.08.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/3001404c-3bbc-04fd-c951-4ad427896cb1.png)

⑤ ファイル名を決めます
⑥ 保存場所を決めます
⑦ 「書き出す

元記事を表示

3時間でAIチャットアプリをリリースした話

# 作ったもの
![Simulator Screen Shot – iPhone SE (3rd generation) – 2022-12-27 at 16.44.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1135021/30757d70-134a-cb28-1fdc-008f7129879a.png)

## ちょっと中身の話
アプリはFlutterを使いました。
FlutterのCHatUIコンポーネントを使うと一瞬でチャット画面を構築できます。
マジで一瞬です。

Flutterはマルチプラットフォームに対応しているので、iOSとAndroid両方のアプリが3時間でできました。

フロントの部分はFlutterで一瞬で作り、AIの部分はGPT-3.5のモデルを使っています。
WebAPIで文字列をバックエンドに送り、処理の結果を返してくれるシンプルなものになっています。

ココで重要な点は、世界最高峰のAIモデルであるGPT-3.5を使ったアプリをたった3時間でリリースできてしまうとこ

元記事を表示

【SwiftUI】ProgressView小さくない?

# はじめに
通信するアプリには必ずローディング画面があると思います。
ローディング画面で必須になってくるのが`ProgressView`だと思います。
しかし、SwiftUIの`ProgressView`ちっさすぎません???

いまいちイケてないのでもうちょっと大きくしたいです。
大きくした時のことをここに記録しておきます。

# 実装
“`swift
import SwiftUI

struct ScaleEffectProgressView: View {
private let scaleEffect: CGFloat

init(_ scaleEffect: CGFloat) {
self.scaleEffect = scaleEffect
}

var body: some View {
ProgressView()
.progressViewStyle(.circular)
.scaleEffect(scaleEffect)
.fra

元記事を表示

【Xcode】シュミレーターの画面録画とスクショをキーボードショートカットで行う

# はじめに
昨日に引き続きショートカットの紹介です。
シュミレーターの画面録画やスクショは必ず使うので覚えておきたいです。

# やりかた
## 画面録画
`command` + `R`

## スクリーンショット
`command` + `S`

# おわり
あけましておめでとうございます

元記事を表示

iOSの写真アプリの画像や動画のPHAssetがどのアプリから保存されたのかを調べる

# iOSの写真アプリの画像や動画のPHAssetがどのアプリから保存されたのかを調べる

* Photos Framework を利用して、写真アプリに保存された画像や動画の PHAsset を取得し、iOS の写真アプリのように画像をリスト表示する機能を作る事がよくあります
* 自作した画像リストでも、iOS の写真アプリにある「〇〇から保存」という表示を実現できないか調べてみました

* iOS 15.1 で動作確認しています
(手元で動作確認しただけで、互換性など含めて諸々調べきれていないため、実際に使う場合はご注意ください?)

# xattr を使って保存したアプリを調べる
* Photos Framework には、PHAsset を保存したアプリを提供する機能は見当たりませんでした
* しかし、保存され

元記事を表示

SwiftFormatのプラグインの導入方法(Xcode project 編)

SwiftFormat に、Swift Package Manager ビルドツールプラグインの機能が追加されました。この SwiftFormat プラグインの導入方法についてREADMEに沿って説明します。
おそらく 2022/11/24 にリリースされた SwiftFormat 0.50.4 で対応されたのではないかと思います。

SwiftFormat 0.50.4 リリースノート

https://github.com/nicklockwood/SwiftFormat/releases/tag/0.50.4

> Added Swift package command plugin

関連PR

https://github.com/nicklockwood/SwiftFormat/pull/1297

README.md

https://github.com/nicklockwood/SwiftFormat/blob/master/README.md

:::note info
インフォメーション
記事執筆現在、既に 0.50.7 がリリースされています。
導入される方は最

元記事を表示

OTHERカテゴリの最新記事