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

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

ProvisioningProfileって何なの?iOSアプリ開発における役割について

# ProvisioningProfileとは
ProvisioningProfileとは、iOSアプリへのコード署名に使用するものです。

コード署名はアプリをストアにリリースする際や、実機端末にインストールする際に必要になります。
– MacOSのキーチェーンに保存された秘密鍵と証明書付き公開鍵の組
– Appleサーバー上で作成したProvisioningProfile

Xcodeがこれらを利用して、発行元やインストール先デバイスの情報をアプリに格納します。

## ProvisioningProfileの目的
ProvisioningProfileを取り巻く仕組みの目的は以下を達成することです。
– アプリの開発元が本物であることを証明すること
– (開発版アプリの場合)開発者が意図した端末にしかアプリをインストールできないようにすること

上記を実現するために、開発元の証明書やデバイスの情報をProvisioningProfileとしてパッケージし、アプリに埋め込まなくてはならないという仕組みになっています。
より目的に適した仕組みがあるのではと筆者個人としては思

元記事を表示

【Unity】iOS ビルド時に Command PhaseScriptExecution failed with a nonzero exit code となってしまう。

# 環境

Unity 2023.1.10f1
Xcode 15.0.1

# 問題

iOS ビルド時に以下のエラーが出る
“`text
Command PhaseScriptExecution failed with a nonzero exit code
“`

# 対処法
Unity を最新版にアップデートする

👇
Unity 2023.2.1f1

元記事を表示

【Swift】標準イニシャライザとメンバーワイズイニシャライザの違い

# この投稿は何?

Swiftの構造体について、自動的に提供される2種類のイニシャライザを解説します。

> Swiftを基礎から学ぶには
自著、工学社より発売中の「[まるごと分かるSwiftプログラミング](https://amzn.asia/d/7YPWJwl)」をお勧めします。変数、関数、フロー制御構文、データ構造はもちろん、構造体からクロージャ、エクステンション、プロトコル、クロージャまでを基礎からわかりやすく解説しています。
> また、Swiftプログラミングを基礎から動画で学びたい方には、Udemyコース「[今日からはじめるプログラミング](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwii1qTuj_2BAxV4hlYBHbj5BqEQFnoECBYQAQ&url=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fstart-programming-today%2F&usg=AOvVaw2vs4Sccq-bpfA

元記事を表示

[備忘録] カスタムセルをコードで作成 (UITableViewCell)

Storyboardを使わないカスタムセルの作成方法を、毎回調べてしまうので備忘録として残しておきます。

# 作成
– UITableViewCellを継承したクラスを作成します。
– `init`と入力して3番目くらいに出てくる`init(style:, reuseIdentifier:)`を選択して、親クラスのを呼び出します。
– 出てくる警告の[Fix]を押して`required init?(coder: NSCoder)`を補完します。
“`swift
class CustomCell: UITableViewCell {
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setUpViews()
}

required init?(coder: NSCoder) {
fatal

元記事を表示

【React Native】Jotaiによってグローバルステートを永続化する

## 事象

ニュースアプリ開発において、ユーザーがクリップした記事をアプリを閉じたあとも保持する必要がありました。この記事では、Jotaiを使用してグローバルステートを永続化する方法を共有させていただきます。

## 対処法

以下のコードは、`Jotai` の `atomWithStorage` を使用して、クリップした記事の状態を永続化します。`createJSONStorage` は、`AsyncStorage` と連携してデータをJSON形式で保存・取得します。`Jotai` のGitHubディスカッションによると `createJSONStorage` は型安全ではないため、回避策として、いったん `any` を指定しております。以下によって生成する `clipAtom` を必要な箇所にて `useAtom` によって呼び出します。

“`clip.ts
import AsyncStorage from ‘@react-native-async-storage/async-storage’;
import { atomWithStorage, createJSONSto

元記事を表示

【SwiftUI】特定の角だけ丸角にする(iOS16)

# はじめに
iOS15以下を対応する場合は以下の記事の方法が良さそうです。

https://qiita.com/chocoyama/items/1cb7040f0e717406a6f4

# 完成サンプル
![Simulator Screenshot – iPhone 15 – 2023-11-25 at 12.58.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/f81c4469-ce53-c5d6-e530-d6343add1c45.png)

# 実装
“`diff_swift
import SwiftUI

struct ContentView: View {
var body: some View {
Image(.sample)
.resizable()
.scaledToFit()
+ .clipShape(.rect(
+ topLeading

元記事を表示

【ios 17】パフォーマンス改善と最適化

## アプリ起動の高速化とレスポンス改善

ios 17では、アプリの起動時間を短縮し、レスポンスを改善するための最適化が行われています。これにより、ユーザーはよりスムーズにアプリを利用することができます。

具体的なアプリ起動の高速化とレスポンス改善のためのポイントを以下に示します。

### 1. コードの最適化

アプリの起動時間を短縮するためには、コードの最適化が重要です。無駄な処理や重い処理を見つけ、効率的な処理への書き換えを行いましょう。

“`swift
// 重い処理の例
func heavyprocess() {
// 重い処理を実行するコード
}

// 軽量化した処理への書き換え例
func lighterprocess() {
// 軽量化された処理を実行するコード
}
“`

### 2. 画面の最適化

アプリの起動後に表示される画面の最適化も、レスポンス改善に繋がります。特に、初期表示される画面の描画処理が重い場合には、パフォーマンスが低下する可能性があります。

“`swift
// 重い描画処理の例
func heavydrawi

元記事を表示

[Unity] iOS Resolver にて 不幸にも Failed to install CocoaPods となってしまう。実際はCocoapods が入っているのに.

# 問題

m3 mac の Unity にて

iOS Resolver > Install Cocoapods としたときに

以下の現象が発生。
“`text
WARNING: You don’t have /Users/USER_NAME/.gem/ruby/2.6.0/bin in your PATH,
gem executables will not run.
ERROR: Error installing cocoapods:
The last version of drb (>= 0) to support your Ruby & RubyGems was 2.0.5. Try installing it with `gem install drb -v 2.0.5` and then running the current command again
drb requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.210.
“`

…まずうちさぁ、Flutter の初期

元記事を表示

【Xcode】シュミレーターを実寸大のサイズに変更する

# はじめに
Kyomeさんのツイートを見てシュミレーターを実寸サイズにする方法を知ったので記事に残しておきます。

https://x.com/kyomesuke/status/1727873051306647716

# やりかた
① 「Window」を選択します。
② 「Physical Size」を選択します。
スクリーンショット 2023-11-24 16 10 42

# おわり
`command` + `1`でも同じ事ができます

元記事を表示

ipaやappをコマンドラインでインストールする

アプリの再インストールを頻繁に繰り返す必要がある時に以下のようにコマンドラインでインストールすることができます。

“`
ideviceinstaller -i hoge.ipa
ideviceinstaller -i hoge.app
“`

元記事を表示

【TCA】DependencyClientマクロでボイラープレートを大幅削減

# はじめに
swift-dependenciesの[v1.1.0](https://github.com/pointfreeco/swift-dependencies/releases/tag/1.1.0)で`DependencyClient`というマクロが導入されました。

https://github.com/pointfreeco/swift-dependencies/pull/132

このマクロを使用すると、`”struct of closures”`スタイル[^1]で依存クライアントを実装している場合に記述しているボイラープレートを大幅に削減することができます。

[^1]: TCAやってる人にはお馴染みの、ネットワーク通信等を行うクライアントを構造体で実装する設計パターンを指しています。PRの概要欄にそう書いてあったので引用しました。これが定着すると伝えやすいなあ。

# マクロ導入前のコード
Githubの検索APIをリクエストするクライアントの実装を考えます。

インタフェースは例えばこんな感じになるでしょう。

“`swift
import Dependenci

元記事を表示

Expoプロジェクト起動時のnon-std C++ exceptionエラーとその対処法

## 事象

`npx expo start` コマンドを使用して Expo プロジェクトを起動し、Xcodeを通じてiOSデバイスでのアプリ動作を確認しようとした際に、以下のエラーが発生しました。

“`
non-std C++ exception
“`

## 対処法

以下のコマンドを実行することで、キャッシュをクリアし、問題を解消することができました。このコマンドは、Expoのキャッシュをクリアし、再起動することで、潜在的な問題をリセットします。詳細な原因は調査中です。。:thinking:

“`
npx expo start –clear
“`

## 参照

https://github.com/facebook/react-native/issues/35652

https://stackoverflow.com/questions/76375461/how-can-i-solve-a-non-std-c-exception-in-my-react-native-typescript-applicatio

自らの備忘録のために投稿してますが、なにかお役に

元記事を表示

iOS開発でよく使うWebサイト

## apple 公式

iOS & iPadOS Release Notes
https://developer.apple.com/documentation/ios-ipados-release-notes

日本語ドキュメント
https://developer.apple.com/jp/documentation/

iOSのバージョン割合
https://developer.apple.com/support/app-store/

## apple 非公式

OSStatus.com
https://www.osstatus.com/

Xcode Build Settings
https://xcodebuildsettings.com/

## Swift

Swift Package Manager
https://www.swift.org/package-manager/
フレームワークを使用可能になる、podsの代わりにもなる

元記事を表示

【SwiftUI】ScrollView内でframeを指定せず、画面にあったサイズに調整する

# はじめに
iOS17で追加された`containerRelativeFrame`を使用すれば実現できます。

# 目指すUI
今回の完成系のUIはこちらです。
![simulator_screenshot_1DA64188-71A9-4F99-8A37-AFFD79AD1E89.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/f7304e97-606b-98eb-4ab8-732100c15545.png)

# 何が問題か説明
縦に図形を並べようと以下のようなコードを書きます。
“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
ScrollView(.vertical) {
VStack(spacing: 16) {
ForEach(0..<50, id: \.self) { _ in

元記事を表示

コマンドラインでiOSアプリをビルドしシミュレータで起動する

# はじめに

本稿は、コマンドラインでiOSアプリをビルドし、シミュレータにインストールおよび起動する方法について書いています。

# シェルスクリプトの作成

以下のbuild.shをプロジェクトのルートディレクトリに配置します。
build.shには `chmod +x build.sh` して実行権限を与えておきます。

“`shell:build.sh
#!/bin/sh

SCHEME=’Your Scheme’
SIM_NAME=’iPhone 15′ # シミュレータ名
DESTINATION=”platform=iOS Simulator,name=$SIM_NAME”
CONFIG=’Debug’ # ‘Debug’ or ‘Release’
DERIVED_DATA_PATH=’./build’
APP_NAME=’Your App Name’
APP_PATH=”$DERIVED_DATA_PATH/Build/Products/$CONFIG-iphonesimulator/$APP_NAME.app”
BUNDLE_ID=’your.bundle.id’

元記事を表示

【SwiftUI】ATTが表示されない問題の解決策

# はじめに
「ATTが表示されない」で検索すると同じ問題で記事を書いてる方が割といます。
それらの記事は`DispatchQueue.main.asyncAfter(deadline: .now() + 1.0)`で遅延実行してATTを表示させてました。
1秒遅延させたら表示されないってことはなかなかないと思いますが、個人的には美しくないと思うので、別の解決策を考えました。

# 原因
おそらく、`applicationState`が`active`になっている時にATTリクエストしないとアラートが表示されないっぽい?です。

`applicationState`の確認方法です。

“`swift
func debugApplicationState(mark: String) {
switch UIApplication.shared.applicationState {
case .active:
print(“\(mark): active”)
case .inactive:
print(“\(mark): inacti

元記事を表示

sheetの中でキーボードにフォーカスさせたい時の注意点

# やりたかったこと
ボタンを押すと下から入力フォーム的なのを出す
出すと同時にテキストフィールドにフォーカスし、キーボードを出す

# 遭遇した現象
`FocusState`を`onAppear`内で`true`にしたのにフォーカスされない

# 原因
ミニマムなViewを作っていろいろ検証した結果、いくつかわかったので共有

### フォーカスされないコード

“`swift
struct ContentView: View {
@FocusState private var isFocused: Bool
@State private var showSheet = false
@State private var text = “”

var body: some View {
Button {
showSheet = true
} label: {
Text(“Show sheet”)
}
.sheet(isPresente

元記事を表示

[Swift]enumで変数が定義できる?

# 目次
[1.enumで変数が使える?](#1-enumで変数が使える?)
[2.実例](#2-実例)
[3.おわりに](#3-おわりに)

# 1. enumで変数が使える?
Swiftにおいて何かと便利に使用できるenumですが、実は変数(プロパティ)が定義できるってご存知ですか?
ちなみにenumは個人的にはデータ管理に非常に役立っていると感じます。

# 2. 実例
~~~swift: enumプロパティ
enum Month: Int {
case january = 1
case february = 2
case march = 3
}

extension Month {
var japanese: String {
switch self {
case .january:
return “睦月”
case .february:
return “如月”
case .march:
return “卯月”

元記事を表示

【ios 17】新機能とアップデートの魅力

## 【ios 17】新機能とアップデートの魅力

こんにちは。今回は、ios 17について初心者エンジニアに向けて、新機能とアップデートの魅力についてご紹介します。

## 新デザインとインターフェースの革新

ios 17では、新たなデザインとインターフェースが導入され、使いやすさと視覚的な魅力が大幅に向上しました。これにより、ユーザーはより直感的に操作できるようになり、素晴らしいユーザーエクスペリエンスを体験することができます。

新たなデザインとインターフェースの革新によって、アプリの起動速度や画面遷移のスムーズさも向上しました。これにより、ユーザーはストレスなく素早くアプリを利用することができます。

以下に、新デザインとインターフェースの革新に関するサンプルコードを示します。

“`swift
// タブバーのアイテムの設定
tabbaritem.title = “ホーム”
tabbaritem.image = uiimage(systemname: “house”)
tabbaritem.selectedimage = uiimage(systemname: “hous

元記事を表示

【Swift】OptionSetという複数の値をまとめて管理できるものがあるらしい

# はじめに
デフォルトで用意されているコードスニペットを見ていたら使ったことのない機能を見つけたので使ってみました。
![スクリーンショット 2023-11-21 22.35.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0ee0c7d7-186d-371e-2e98-3b46fc52f5b0.png)

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-11-21 at 22.34.58.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0ea152a9-4188-f89a-d4b0-dd8d86c8fe52.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@State private var sectionOptions: Sect

元記事を表示

OTHERカテゴリの最新記事