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

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

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)の内容が良さそうに見えたので自分用のメモも兼ねて投稿します。

– – –
# 詳細

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

2023年9月にリリースされたXcode15からは`String Catalogs`という新しい仕組みが導入されました。
この仕組みにより、1箇所でローカライゼーションしたいワードを管理できるため、これまでよりも効率的にローカライ

元記事を表示

【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の動画で見直すのもありだな
ものを覚えるには、他人に教えるのが一番だというのがあ

元記事を表示

【SwiftUI】MapStyleについて調べた(iOS17)

# はじめに

# 本記事のベースコード
“`swift
import SwiftUI
import MapKit

struct ContentView: View {
// 東京駅の座標
@State private var position: MapCameraPosition = .region(.init(
center: .init(latitude: 35.681236, longitude: 139.767125),
span: .init(latitudeDelta: 0.1, longitudeDelta: 0.1)
))

var body: some View {
Map(position: $position)
.mapStyle( /* ここにスタイルを指定 */ )
}
}
“`

# スタイル
|`.standard`|`.imagery`|`.hybrid`|
|-|-|-|
|![simulator_screenshot_CEE0EE7

元記事を表示

SwiftUI ScrollView の bounces を無効化する (したかった)

## はじめに

iOS の ScrollView には、コンテンツの端までスクロールするとバウンドをするようなアニメーションがデフォルトで実装されています。

参考画像

![ScrollViewDemo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555559/01aff3c4-9217-6a20-6887-3a22c2cdb290.gif)

しかし、アプリによってはコンテンツの端までスクロールしてもバウンドしないように設定したい場合もあると思います。
その場合、どのように実装すればいいのでしょうか?

### UIKit の場合 (UIScrollView)

`scrollView.bounces = false` を設定することで対応できます。

https://developer.apple.com/documentation/uikit/uiscrollview/1619420-bounces

“`s

元記事を表示

FlutterFlowで画面の向きを固定する方法

## はじめに
### FlutterFlowについて
[FlutterFlow](https://flutterflow.io/)は、爆速モバイルアプリ開発を実現する、画期的なビジュアルプログラミングツールです。簡単なアプリなら本当にその日のうちにテストフライトまでが完了していると優れたツールです。
### FlutterFlowの優れている点
FlutterFlowの優れた点として拡張性があります。プリセットで用意されていない機能や要素は自分でコーディングすることができるため、痒いところになるべく手が届くようになっています。

## 目標
アプリの画面を縦に固定するCustom Actionを作成して、アプリの全ページを縦画面に固定します。

## CustomActionの作成
サイドバーから、「Connect > CustomCode」を選択します。
新しい「CustomAction」を作成します。名前を`setPortraitUp`としてください。
Action Codeには以下のように記述します。
作成すると自動的に`import`が複数書かれます。この部分はその他の設定に

元記事を表示

【SwiftUI】CustomAnimationを使って点滅アニメーションを自作する(iOS17)

# はじめに
iOS17から`CustomAnimation`というものが追加されました。
これは名前の通り、アニメーションをカスタムできる機能っぽいです。
使ってみたので記事にしておきます。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-11-26 at 23.03.52.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/3d981e5a-c217-149f-ed20-ea9d954571ea.gif)

# 実装
経過時間の小数点第一の偶数と奇数を判定して進行値に前後する値を渡す事で、点滅させる事ができます。
“`swift
import SwiftUI

struct ContentView: View {
@State private var isHidden = false

var body: some View {
VStack(spacing: 10) {

元記事を表示

[Unity] iOS で ATTダイアログ表示前に admob で設定したUMP IDFA メッセージを表示したい!

# 前置き

iOS 14以降にて表示することが可能になっていた ATT(App Tracking Transparency)ダイアログだが、筆者はAdmob のために利用していた。

で、最近のGoogle Admob のアップデートで、ATTダイアログ表示前に、カスタムIDFAメッセージを表示できるようになった。(どうやら Google User Messaging Platform SDK というのを使うらしい。)

![Screenshot 2023-11-26 at 18.28.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1900756/4587b545-6ac0-5074-e244-7390f9bc358a.png)

このメッセージは、Admob ダッシュボード上で設定でき、アプリ側ではAPIのコールをしさえすれば表示できるらしい。

![Screenshot 2023-11-26 at 18.25.07.png](https://qiita-image-store.s3.ap-

元記事を表示

【Xcode15】【エラー】「Sandbox: rsync.samba(43610) deny(1) file-write-create /Users/開発者名/Library/Developer/Xcode/DerivedData/アプリ名-gzyuowsnikwwxlgolkqjdiieoeqg/Build/Products/Debug-iphonesimulator/アプリ名/Frameworks/Realm.framework/_CodeSignature」

Xcode15で下記のようなエラーが発生しました。

Sandbox: rsync.samba(43610) deny(1) file-write-create /Users/開発者名/Library/Developer/Xcode/DerivedData/アプリ名-gzyuowsnikwwxlgolkqjdiieoeqg/Build/Products/Debug-iphonesimulator/アプリ名.app/Frameworks/Realm.framework/_CodeSignature

こちらのエラー解決方法について記載します。

![スクリーンショット 2023-11-26 17.23.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621000/5124f3a7-76aa-cfe7-fba4-5cfd8004ee25.png)

①アプリの設定画面を開く
②Build Settingを選択
③「User Script Sandboxing」をYes→Noへ変更
④build

元記事を表示

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

# ProvisioningProfileとは
ProvisioningProfileとは、iOSアプリのコード署名に必要なファイルです。
ProvisioningProfileの中には以下の情報が格納されています。
– アプリ発行元の証明書(公開鍵)
– アプリID
– 開発実機端末のUUID(開発用プロファイルのみ)

Xcodeはアプリバイナリのビルド時にProvisioningProfileを使用して、これらの情報を組み込んでいます。

## ProvisioningProfileの目的
ProvisioningProfileが果たす主な役割は、以下の二つです。
– アプリの開発元が正当であることを証明する。
– 特定の端末にのみアプリをインストール可能にする(開発版アプリのみ)。

これらの目的を達成するため、開発元の証明書やデバイスの情報をProvisioningProfileにパッケージ化し、アプリに組み込む必要があります[^1]。
[^1]: そういう風にCodeSigningの仕組みはつくられました。筆者個人としては、もっとよい設計があるのではないかと考えていますが、

元記事を表示

【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~~

~~Unity 2023.1.20f1~~

👍👍👍 Unity 2023.1.15f1 👍👍👍

元記事を表示

OTHERカテゴリの最新記事