iOS関連のことを調べてみた

iOS関連のことを調べてみた

Blazor wasmがiOSで動かない時の解決方法

## TL;DR
*index.html* ファイル内の “`“` の前に “`“` を入れることで解決

## この問題について
### 問題発生条件
– OS: iOS
– ブラウザ: Safari, Chrome, Opera (検証したブラウザ全部)

![エラー画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2769460/07447608-10d4-c987-643a-9b0d4a4a32f5.png)
↑のようなエラーが発生し、画面が読み込まれない
(このスクリーンショットではロードがされているが、実際はロードが98%ぐらいのところで止まっているため、サイドバーや文字は表示されない)

### 解決方法
“`プロジェクト名/wwwroot/index.html“` を以下のように編集する
“`diff_html
<

元記事を表示

【ios 17】アクセシビリティ機能の拡張と向上

## バイブレーションとホームボタンのアクセシビリティ設定

### 概要
バイブレーションやホームボタンのアクセシビリティ設定がios 17で拡充されました。これにより、ユーザーはより快適にデバイスを操作できるようになります。

### バイブレーションの設定
バイブレーションの設定は、ユーザーがデバイスの振動に対して感じる強さやパターンを調整することができます。具体的な設定方法は以下の通りです。

“`swift
// バイブレーションの強さの設定
uidevice.current.isproximitymonitoringenabled = true

// バイブレーションのパターンの設定
audioservicesplaysystemsoundwithvibration(vibrationpattern, -1)
“`

上記のコードを使用することで、ユーザーは自分に合ったバイブレーション設定を行うことができます。また、バイブレーションの強さやパターンはアプリ内で動的に変更することも可能です。

### ホームボタンのアクセシビリティ設定
ホームボタンのアクセシビリティ設

元記事を表示

No such module ‘FirebaseCore’を解決した話

検証のためにFirebaseをiOSプロジェクトに導入しようとしていたところ、
「Apple アプリへの Firebase の追加手順 4.初期化コードの追加」
で以下のようなエラーが出た。

`No such module ‘FirebaseCore’`

このエラーが出た時にそのまま検索しても回答が出ていなかったが、以下のように手順を踏むことで解決できた。

TARGETS>APP NAME>Frameworks,Libraries,and Embedded Content
の+ボタンをクリックし、使用するサービスを選択して追加することで解消する。

今回の検証ではAnalyticsとCrashlyticsを検証する想定であったため、以下のように該当サービスを追加したところ、無事エラーが消えた。
![スクリーンショット 2023-11-30 1.36.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412789/49799468-0c8f-7d76-5d13-b33ea0246f81.png)

元記事を表示

爆速CoreData

## はじめに
こんにちは、watnowのアドベントカレンダー初日を担当させていただきます。
よろしくお願いします!
記事を書くのは2回目なのでかなり拙い文章となっております、ご了承ください。:bow_tone1:

そしてこの記事は、
##### いち早くCoreDataを使いたい!!

そんな人向けの記事になっているので詳しいことは個人的に分かり易いなと思った記事を貼っておくので詳しくはそちらで学習してもらえればと思います。
では本題に移ります。

## CoreDataってなに?(爆速)
CoreDataは、ローカルにデータを保存、取得などをするためのCocoaFrameWorkに搭載されたO\RマッパーのことでありDB自体はSQLiteを使っています。

:::note info
O\Rマッパー
O\RマッパーとはオブジェクトとRDBをつなぐ橋渡しのようなもの
通常プログラムでインスタンスの値を保存するSQL文などを生成するコードを書かなければいけないが、O\Rマッパーはあらかじめ設定しておいた対応関係から自動でデータベースの対応するテーブルに書き出しや逆にデータを

元記事を表示

【SwiftUI】マップ上に範囲を表す円を表示する(iOS17)

# はじめに
昨日に引き続きiOS17で大型アップデートの入ったMapKitに関する記事です。

https://qiita.com/SNQ-2001/items/ae0fd2ff2a415d7e0713

今回はタップした位置に範囲を表す円を表示してみます。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-11-29 at 21.07.52.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d9e951c0-88c6-691a-dd74-f66eafaf1558.gif)

# 実装
“`swift
import SwiftUI
import MapKit

struct ContentView: View {
// 東京駅の座標
@State private var position: MapCameraPosition = .region(.init(
center: .init(l

元記事を表示

SwiftUIで元のアスペクト比を保ちつつ、長方形に画像を表示させたい!In LazyVGrud!

# はじめに
SwiftUI楽しいです![むらお](https://twitter.com/ymurao2)です!
LazyVGrid内で、画像のアスペクト比を保ったまま画像の枠の比率を指定したい!ただ、frame指定はやりたくない!という状況に陥り、実装に手こずったので備忘録として残しておきます!

# 想定する画面
以下のようなデザインを想定しています。
* 画像のアスペクト比は1:1
* 画像の枠のアスペクト比は2:1(横:縦 = 2:1)
* 見切れるのは構わない → scaleはfill

* 使用する画像はこちら
* かわいい
RenovateがPRを出してくれない場合の対処法

個人開発しているアプリにRenovateを導入しましたが、なぜかOnboardingのPRが作成されませんでした。そこで今回は、RenovateがPRを出してくれない場合の対処法についてご紹介します。

# 対処法

https://developer.mend.io/

にアクセスし、Renovateを有効にしたいオーガナイゼーションを指定します。

![スクリーンショット 2023-11-29 20.42.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627061/f577457c-4158-e805-65cf-e3c92d355423.png)

次に、設定をクリックします。

![スクリーンショット 2023-11-29 20.45.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627061/69668146-5208-00d4-c1ed-cac57c26c871.png)

そしたらModeをI

元記事を表示

【ios 17】音声アシスタントとai機能の進展

## siriの新機能と自然な対話能力の向上

siriは、iosデバイスの音声アシスタントとして非常に便利な機能です。しかし、ios 17ではsiriの機能がさらに進化し、より自然な対話が可能になりました。たとえば、siriはあなたの声のトーンや感情を検出し、適切に応答することができます。

以下は、siriの新機能を使ったサンプルコードです。

“`
func startconversation() {
let speechrecognizer = speechrecognizer()
let speechsynthesizer = speechsynthesizer()

// 話しかけるユーザーの声を検出する
let uservoice = speechrecognizer.listen()

// ユーザーの声のトーンや感情を分析する
let toneanalyzer = toneanalyzer()
let usertone = toneanalyzer.analyze(uservoice)

// 応答する

元記事を表示

ID by amoのアプリを閉じる挙動を再現

ID by amoにて新着通知を全て確認し終わると、「おわり!」「そっちでも楽しんでね」などのメッセージと共にアプリが終了する

https://scrapbox.io/files/6566b2e4698aa20023c35fd8.mov

これをSwiftでやるには任意の場所で以下を実行する
“`Swift
UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)
Timer.scheduledTimer(withTimeInterval: 0.2, repeats: false) { _ in
exit(0)
}
“`

> ホーム画面に戻る
“`Swift
UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)
“`

`exit(0)`はCの標準ライブラリに存在する関数
 プログラムを正常終了させるもの

元記事を表示

【ios 17】カメラと写真機能の進化

## 新たなカメラ機能と写真撮影のクオリティ向上

こんにちは。今回は、ios 17について初心者エンジニアに向けて、新たなカメラ機能と写真撮影のクオリティ向上についてご紹介します。

ios 17では、カメラ機能がさらに進化し、写真をより美しく鮮明に撮影することができるようになりました。これにより、ユーザーはより高品質な写真を撮影し、思い出をより美しく残すことができます。

具体的には、画質向上や低光環境での撮影の向上など、さまざまな機能が強化されています。カメラの起動が速くなり、被写体の動きによるブレやノイズを少なくすることができます。また、デュアルカメラ搭載の機種では、より広い範囲を撮影することができるようになりました。

以下に、新たなカメラ機能と写真撮影のクオリティ向上に関するサンプルコードを示します。

“`swift
import uikit
import avfoundation

class cameraviewcontroller: uiviewcontroller, avcapturephotocapturedelegate {

var capture

元記事を表示

【Swift】いつも忘れるif let

# 目次
[1.いつも忘れるif letの役割](#1-いつも忘れるifletの役割)
[2.実例](#2-実例)
[3.おわりに](#3-おわりに)

# 1. いつも忘れるif letの役割
私だけかもしれませんが、“`if let ~“`は何しているんだっけ? となります。
本記事は“`if let ~ “`のイメージを心に刻み込むための記事です。

# 2. 実例
~~~swift:if let構文
if let people = friend {
peaple.name()
} else {
print(“no friends TT”)
}
~~~

これを以下のように読み替えてください。
~~~swift: if let構文読み替え
if peaple != nill {
let peaple = friend!
peaple.name()
} else {
print(“no friends TT”)
}
~~~

# 3. おわりに
swiftにおいて「nillを許容するかどうか」の“`

元記事を表示

【SwiftUI】MapKitでストリートビューのような機能を使用する

# はじめに
昨日に引き続き、iOS17以降のMapKitに関することを調べてみました。

https://qiita.com/SNQ-2001/items/23cdfa74f4d554d174b0

今回はGoogleマップでいう「ストリートビュー」をAppleMapを使用して実装します。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-11-28 at 22.08.56.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/69162a45-f6b3-433b-366c-e26702f05fed.gif)

# 実装
“`swift
import SwiftUI
import MapKit

struct ContentView: View {
// 東京駅の座標
@State private var position: MapCameraPosition = .region(.init(

元記事を表示

Xcode15以降のローカライゼーション(多言語対応)

# 概要

iOSアプリのローカライゼーション(多言語対応)の効率的な開発方法を調べていたら、WWDC2023で発表されていた[Discover String Catalogs](https://developer.apple.com/videos/play/wwdc2023/10155)の内容が良さそうに見えたので自分用のメモも兼ねて投稿します。

なお、今までの多言語対応の方法は[こちら](https://developer.apple.com/documentation/Xcode/localization)に記載されています。

– – –
# 詳細

Xcode15よりも前のバージョンでローカライゼーションを対応しようと考えたとき、`String`ファイルと`STRINGDICT`ファイルに対応するワードを記載し、手作業で翻訳を追加する方法がメインでした。
この方法だと翻訳の抜け漏れがあるのをチェックするのが手間だというデメリットがありました。

2023年9月にリリースされたXcode

元記事を表示

【ios 17】新しいアプリケーションと統合機能

## 新機能「app connect」の活用方法

### 概要
ios 17では、新機能「app connect」が追加されました。この機能を活用することで、アプリケーション間のシームレスな連携とデータ共有が可能となります。初心者エンジニアの皆さんに向けて、app connectの活用方法を紹介します。

### 使い方
app connectを使うためには、まずアプリケーションのプロジェクトに以下のコードを追加する必要があります。

“`swift
import appconnect

class viewcontroller: uiviewcontroller {
override func viewdidload() {
super.viewdidload()

// app connectの初期化
appconnect.initialize(apikey: “your_api_key”)

// 他のアプリケーションとのデータ共有を設定
appconnect.enabledatashar

元記事を表示

【ios 17】プライバシーとセキュリティ強化の詳細

## データ保護と暗号化の強化

ios 17では、データ保護と暗号化の強化が行われています。これにより、ユーザーの個人情報や機密データがより安全に保護されるようになります。

### データ保護の強化
ios 17では、端末内のデータを暗号化するための新しいアルゴリズムが導入されました。これにより、データが保管されているファイルシステムやメモリ上でも、第三者による不正アクセスを防ぐことができます。

以下は、データ保護の強化を行うためのサンプルコードです。

“`swift
// userdefaultsのデータの自動暗号化を有効化する
userdefaults.standard.set(true, forkey: “applepersistenceencryptkey”)

// 保護されたファイルシステム上にデータを書き込む
let data = “important data”.data(using: .utf8)
let fileurl = filemanager.default.urls(for: .documentdirectory, in: .userdomainma

元記事を表示

【ios 17】画面デザインとユーザーインターフェースの変更点

# 【ios 17】画面デザインとユーザーインターフェースの変更点

## モダンなデザインとアイコンのリフレッシュ
ios 17では、ユーザーインターフェースのデザインが大幅に変更され、よりモダンな印象を与えるデザインになりました。新しいアイコンは、よりフラットでシンプルなデザインになり、見た目が一新されています。また、従来のアプリケーションのアイコンもリフレッシュされ、よりアップデートされた印象を受けるようになりました。

### サンプルコード
`
class iconviewcontroller: uiviewcontroller {
let iconimageview: uiimageview = {
let imageview = uiimageview()
imageview.image = uiimage(systemname: “square.and.arrow.up”)
imageview.tintcolor = .systemblue
imageview.contentmode = .scal

元記事を表示

【ios 17】通知センターとコントロールセンターの改善

## 通知センターの新しいウィジェットとカスタマイズ

通知センターは、ios 17で大幅に改善されました。新しいウィジェットを追加できるようになり、個々のニーズに合わせてカスタマイズすることができます。

新しいウィジェットを追加するには、以下の手順を実行します。

1. ホーム画面で、画面の上端から下にスワイプして通知センターを表示します。
2. 通知センターの下部にある「編集」ボタンをタップします。
3. 「追加」ボタンをタップし、追加したいウィジェットを選択します。
4. 追加したウィジェットをドラッグして位置を調整し、必要に応じて削除や並び替えを行います。

以下のようなウィジェットが追加できます。

– 時計ウィジェット
– カレンダーウィジェット
– 天気ウィジェット
– ニュースウィジェット
– メモウィジェット

ウィジェットのカスタマイズ方法も簡単です。追加したウィジェットをタップすると、サイズや表示する情報の詳細な設定が行えます。

また、ウィジェットの並び順も自由に変更することができます。通知センターを表示した状態で編集ボタンをタップし、各ウィジェットの右側にあ

元記事を表示

【Swift】Swiftのライフサイクル「UIApplicationDelegate」について

# アプリのライフサイクルの基本
Swiftのアプリ開発におけるライフサイクルとは、アプリが起動してから終了するまでの間の状態遷移を管理する大事な概念!

# UIApplicationDelegateについて
– アプリの起動、終了、バックグラウンドへの移行、他の状態遷移などを管理する。

# AppDelegateの主なメソッド
## *`application(_:didFinishLaunchingWithOptions:)`*
– アプリケーションが起動された直後に呼ばれる。初期化や初期設定を行ったりする。

## *`application(_:willFinishLaunchingWithOptions:)`*
– アプリケーションが開始される前の初期段階で呼ばれる。
– つまり、アプリケーションがまだ画面を表示する前に実行されるタイミング。
アプリの初期化前の最後のチャンスってこと。

## *`applicationDidBecomeActive(_:)`*
– アプリがアクティブになり、ユーザーの操作を受け付ける準備が整った時に呼ばれる。
– たとえば、アプリ

元記事を表示

【Swift】IOSアプリケーションの各ステージとイベントについて

# アプリの主要なステージとイベント
アプリのライフサイクルは、いくつかの主要なステージに分けることができる。
各ステージには特定のイベントや処理が関連している。

## ランチスクリーンの表示
– `起動(Launch)`
ユーザーがアプリをタップし、システムがアプリを起動する。
この時点ではまだアプリのUIは表示されてないが、ランチスクリーン(起動画面)が表示される。

– `application(_:willFinishLaunchingWithOptions:)`
アプリが起動し、基本的な設定が行われる前に呼ばれるメソッド。初期化の準備などが行われる。

– `application(_:didFinishLaunchingWithOptions:)`
アプリの起動が完了し、基本的な設定が終了した後に呼ばれるメソッド。

## フォアグラウンド/バックグラウンドへの移行
– `アクティブ(Active)`
アプリがフォアグラウンドで実行され、ユーザーの操作を受け付ける状態。

– `非アクティブ(Inactive)`
アプリがフォアグラウンドでありながら

元記事を表示

超欲張りな(そして挫折必至な)スマホアプリ開発

## Android iOSを同時進行でマスターしたい
今までスマホアプリ開発はやってこなかった筆者でしたが、この度スマホアプリの開発を行うことになりました。開発と言ってもスクラムのプロダクトオーナーとしての立場で、プログラムを直接つくるわけではありません。ただ、作った中身がわかるように、スマホアプリについて学ぼうと思ったのがきっかけです。
Andorid(Andorid Studio:Kotlin)、iOS(Xcode:Swift)
の環境はすでにあり、そこでイチから学んでいこうと思っています。
## どうせならFlutterもやってやれ
個人的興味もあり、併せてFlutterにもチャレンジしてみようと開発環境まで作りました。
## やってきたことを記録に残す
ただ学習してもフィードバックできなければ意味はないですので、何らかの記録に残したいと思っています。例えばブログやnoteでもいいですし、Qiitaでもいいかもしれない。そのなかでQiitaは有力な候補なので今後も活用したい。
## You Tubeの動画で見直すのもありだな
ものを覚えるには、他人に教えるのが一番だというのがあ

元記事を表示

OTHERカテゴリの最新記事