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

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

SwiftUIのAnimationについてふわっと学ぶ(animatableData編)

# はじめに
SwiftUIのアニメーションを実装するときに時々見かける`animatableData`
何のことかさっぱりだったので、キャッチアップしてみました。

# animatableDataとは
早速`animatableData`とはなんなのか、`animatableData`でググって一番最初に出てきた下記の記事を見てみました。

https://qiita.com/takehito-koshimizu/items/786dac0741e19552907b

`animatableData`は`Animatable`プロトコルが持つプロパティのようで、`animatableData`に設定した値が変わることでその値に紐づくコンポーネントがアニメーションできるようになるみたいです。

とは言っても文面だけでみても理解しきれなかったので、サンプルコードを書いてみます。

# やってみる
まずはanimatableDataを定義せずにアニメーションするのかを確認しました。
四角形のカスタムShapeをタップすると横幅と縦幅を変えるようにしました。
`animatableData

元記事を表示

ToggleとToggleライクなボタン (iOSアプリ)

# ToggleとToggleライクなボタン (iOSアプリ)

ToggleはAppleのデザインガイドライン[Toggles](https://developer.apple.com/design/human-interface-guidelines/toggles)によると、リスト形式のみで使用することが推奨されています。

例えば、

![Simulator Screenshot – iPhone 15 Pro – 2024-09-26 at 00.27.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373549/7fcd210d-9574-5ff6-24ae-6fbd0ea11243.png)

上の画面では、リスト形式でToggleを使用しています。これはAppleのデザインガイドラインに沿った設計となります。

それ以外ではToggleライクなボタンの使用を推奨しています。例えば、iOSで元から搭載されているカレンダーアプリの右上で使われています。

![Simulator Scre

元記事を表示

iOS18でLiveActivityのAppIntentが動かない問題の対応

# 遭遇した問題
iOS18のシミュレーターでLiveActivityにAppIntentで実装したボタンが効かなくなった
具体的には下記キャプチャの赤枠部分をAppIntentで実装しており、タップしても実装している処理が走らなくなりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3359094/aa1cdc0d-9cb1-8d12-b7b1-d82016989003.png)

AppIntentは以下のように実装していました。
“`
import AppIntents

struct TimerStopIntent: AppIntent {

static var title: LocalizedStringResource = “Stop”

@MainActor
func perform() async throws -> some IntentResult {

・・・

元記事を表示

fastlaneでのTestFlight自動配信備忘

# 概要
fastlaneを用いてTestFlight配信の自動化を目指します。
以下はその手順の美貌になります。

# 環境
– Xcode: ver16
– CI: GitHub Actions
– Tool: fastlane
– パッケージ管理: SPM

# 前提
– Xcodeがインストールされていること
– TestFlight配信したいアプリがGitHubリポジトリにPushされていること
– fastlaneがインストールされていること
– Apple Developer Programに登録していること

# ざっくり手順
1. Distribution用のProvisioning Profileの用意
2. App Store Connect APIキーの作成
3. fastlaneの初期化
4. Fastfileの実装
5. GitHub Actionsのworkflow実装
6. 証明書用のGitHubのPrivateリポジトリを作成
7. fastlaneのmatchで証明書をリポジトリにPush
8. GitHubにシークレット変数を定義
9. GitHu

元記事を表示

友達可視化アプリ~MIYORI~の開発

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3894106/572ca996-1a3a-4451-4997-6877a47f1ea6.png)

### 差別化
・友人と友人にもチャットできる(承認制度)

### リンクシェル
・3つまで所持できる

### 役職

マスター・・・リンクシェル作成者
・メンバー勧誘
・リーダー/メンバー除名
・LS解散
・LS名称変更
・リーダー設定
・リーダー解除
リーダー・・・パールサックをもつ
・メンバー勧誘
・メンバー除名
メンバー・・・リンクシェルをもつ

メンバーの勧誘は、同じ位置情報にいる端末にしかできない。

元記事を表示

iOSシミュレーターでIn-App purchaseをテストしてみました。

### StoreKit構成ファイルとは?
StoreKit構成ファイルは、IAPのテストをローカル環境でシミュレートするJSONファイルです。このファイルでは、購入や返金のシミュレーションなど、StoreKitアクションを実際の支払いなしで行えます。サンドボックスと似ていますが、開発中のテストも可能なので、IAPビルドを作成する手間を省き、開発時間が大幅に短縮されます。

### テスト設定手順

StoreKit構成ファイルを作成します。App Store Connectと同期するか、手動で新規作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/736127/20c1b158-e463-686a-88ee-a28d2113a171.png)
ファイル名を入力し、必要ならApp Storeと同期するチェックボックスをオンにします。
購入テストのためにビルドスキームを「編集」します。Xcodeの「Edit Scheme」で、StoreKit Configuration file

元記事を表示

【Flutter】Firebase Dynamic LinksからApp Links/Universal Linksへの置き換え攻略ガイド

:::note info
**Firebase Dynamic Linksの廃止が予定**されているため、Flutterアプリでのディープリンク機能を **App Links(Android)**/**Universal Links(iOS)** に変更する方法を解説します。
※ここではFlutterの`app_links`パッケージを使用します。
:::

※この記事は2024年9月24日時点での情報をもとに作成されています。

## なぜFlutterでDynamicLinkを置き換えるのか?

**Firebase Dynamic Linksが2025年8月25日に廃止される予定**であるため、代替手段としてApp Links/Universal Links、カスタムURLスキームなどへの移行が必要となります。

> カスタム URL スキームはディープ リンクの許容可能な形式ですが、ユニバーサル リンクを強くお勧めします。ユニバーサル リンクの詳細については、「アプリと Web サイトがコンテンツにリンクできるようにする」を参照してください。

カスタムURLスキームについては

元記事を表示

iOS18新機能アプリアイコンのダークモード、色合い調整用のアイコンを実装する方法

## Xcodeでのアプリアイコンの実装方法

Xcode16から新規作成した場合は最初から表示されています。

![AppearancesP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1344207/d3d67634-e673-8ed5-b1f2-ca951144ae2c.png)

Xcodeの「Assets」→「AppIcon」を開いて下さい。
「Any Appearance」「Dark」「Tlinter」が表示されています。
ここにそれぞれのアイコンを設定して下さい。それぞれをクリックしてファイル選択でも設定できて、またドラック&ドロップで設定できます。

### アイコンの種類
「Any Appearance」→従来と同じ通常のアイコン

「Dark」→アイコンをダークモード変更時に使用されるアイコン

「Tlinter」→色合い調整を選択した時に使用されるアイコン
以上のようになります。

![IconType.png](https://qiita-image-store

元記事を表示

FlutterやらないといけなくなったiOSニキ無事死亡

# Flutter? きいてないよ
プロジェクトがFlutterで作られているので、やらないといけない。
前任者は見当たらない。
ビルドスムースに通らない。

# やるしかない

### 手順
ChatGPTにきく。以上。

# ChatGPTに教えてもらった手順

### FlutterSDKのインストール

以下のリンクからFlutterSDKをダウンロードする。

https://docs.flutter.dev/get-started/install/macos/mobile-ios

解凍してパスを通す。

“`shell
unzip ~/Downloads/flutter_macos_arm64_3.24.3-stable.zip \
-d ~/development/
“`

“`shell
ex

元記事を表示

【SwiftUI】Identifiableプロトコルとは?

# 概要
iOSアプリ開発経験はあるのですが、
SwiftUIはあまりやったことがなく修行中・・・!

その際「Identifiable」というプロトコルに出くわした際
理解が難しかったので記事にしました。

## 開発環境
・macOS Sonoma
・Xcode16
・iOS 18

## きっかけ

下記のコードを記載した際にとあるエラーが出てきました。

“`sample.swift
// エラーが出たコード
import SwiftUI

struct User {
let id: Int
let name: String
let age: Int
}

struct ContentView: View {
var users: [User] = []

var body: some View {
VStack {
ForEach(users) { user in // <- ここでコンパイルエラーになる Text("\(user.name)"

元記事を表示

MAUI VisualStudio2022でmacOS15でデバッグできない!?方向けのTIPS

## はじめに
WindowsのVisualStudio2022でMAUIを使って開発している方へ。

:::note warn
2024年9月現在、macOS15にアップデートすることでiOSアプリのデバッグができなくなるので注意です。
:::

:::note info
いくつか一時凌ぎの回避策があるのでそれを共有します。
:::

:::note warn
これらの解決方法はMicrosoftが正式対応するまでの暫定的な方法です。
:::

## 対象者
WindowsでVisualStudio2022を使用してMAUI開発をされている方で、MacにペアリングしてiOSアプリをデバッグしている方

## 参考記事
こちらの記事に助けられました。ありがとうございます!
[Xcode 16.0 Support for .NET 8/9 and MAUI ](https://github.com/xamarin/xamarin-macios/issues/20802)

## TL;DL 結論

・MacOS15にアップデートするとXcode15が使えない状態になる

:

元記事を表示

「Message from debugger: Terminated due to signal 9」エラーの原因と対応~CPU利用率・メモリ使用量改善~

# エラーの原因
個人開発アプリのアップデートのための実装中に「Message from debugger: Terminated due to signal 9」というエラーが起きたので調べてみました。
**CPU利用率が大きい・メモリ使用量が大きい**ことが原因と考えられるエラーが発生し、クラッシュしました。
|CPU利用率|メモリ使用量|
|—|—|
|||

# 改善・考察
アプリの状態によって改善方法は変わってくると思いますが、自分の個人開発のアプリでエラーの原因を考察しながら改善してみました。

元記事を表示

iPhone / iPad で Ad Blocker を使う

## この記事の目的

この記事では、iOS で無料で使える広告削除アプリを紹介します。

随時更新していきます。

## NextDNS

App Store: [NextDNS](https://apps.apple.com/jp/app/nextdns/id1463342498)

👉 docomo Wi-Fi で使用する DNS がブロックリストに含まれているようで、NextDNS 使用時は docomo Wi-Fi が使えなくなります。😱

:::note info
Wi-Fi が使えなくなる理由は、NextDNS が 280blocker のリストを参照していて、

その [280blocker](https://280blocker.net/welcome/) のリストに、 docomo Wi-Fi の DNS が含まれているためだと想像。
:::

“`txt:https://280blocker.net/fi

元記事を表示

実在する人間一人につき1アカウントのみを付与できるSNSサービスを作ってみた

# はじめに
:::note warn
皆さん実在する人間一人に1アカウントのみを付与するSNSサービスが今だに実現できてないことをご存じでしょうか?
:::

ちなみに`ChatGPT(MS Cpilot)で以下のような質問`を投げかけてみました。

**(Q)SNSで一人1アカウントを付与するサービスは技術的に実現してませんよね?**

>**(ChatGPT)**
>はい、現時点ではSNSで一人1アカウントを付与するサービスは技術的に実現していません。これは、以下のような理由によります:
ユーザー認証の難しさ:一人一人を確実に識別するためには、非常に高度な認証技術が必要です。例えば、顔認証や指紋認証などの生体認証を導入する必要がありますが、これにはプライバシーの問題や技術的な制約があります。
プライバシーとセキュリティの問題:ユーザーの個人情報を一元管理することは、セキュリティリスクを高める可能性があります。データ漏洩やハッキングのリスクが増大するため、慎重な対応が求められます。
運用コスト:一人一アカウントを厳密に管理するためには、膨大なリソースとコストがかかります。これを実

元記事を表示

【Flutter】inapp_webviewの使用で ITMS-91061: Missing privacy manifest の警告が来る

# iOSの審査に出すと問題があるといわれる
iOSの審査に提出
ITMS-91061: Missing privacy manifest – Your app includes “Frameworks/OrderedSet.framework/OrderedSet”, which includes OrderedSet, an SDK that was identified in the documentation as a privacy-impacting third-party SDK. Starting November 12, 2024, if a new app includes a privacy-impacting SDK, or an app update adds a new privacy-impacting SDK, the SDK must include a privacy manifest file. Please contact the provider of the SDK that includes this file to get an upda

元記事を表示

iOS脱獄(Jailbreak)検知機能の実装

# はじめに
この文書では、iOSデバイスが脱獄(Jailbreak)されているかどうかを判断するSwiftクラス**JailbreakChecker**について解説します。
このクラスは、いくつかの方法を用いてデバイスが脱獄(Jailbreak)されているかをチェックします。
# 機能概要
**JailbreakChecker**クラスは以下の機能を提供します:
1. **シミュレーターのチェック** – デバイスがシミュレーターかどうかを判断します。
2. **Cydiaのインストールチェック** – CydiaアプリがインストールされているかをURIスキームを用いて判断します。
3. **怪しいパスの存在チェック** – 脱獄(Jailbreak)されたデバイスに特有のファイルパスが存在するかをチェックします。
4. **システムファイルの編集権限チェック** – アプリがシステムファイルを編集できるかどうかをテストします。
# 実装詳細
### 1. シミュレーターのチェック
“`swift
private static var isSimulator: Bool {

元記事を表示

【iOS】App Store Connect API アプリのダウンロード数をLINEへ通知する

## 自己紹介
個人開発でいくつかアプリをリリースしている者です。

## LINE通知までの経緯
ダウンロード数のチェックでApp Store Connectに頻繁にアクセスするのですが、都度チェックしに行くのは面倒!

よし、LINEに通知してくれるようなアプリを作ってみようということで、作りました。

## 使用技術、言語
– Google Cloud Functions
– Python
– LINE Notify

### 構成図
![スクリーンショット 2024-09-20 11.21.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469133/9a983d79-11e7-9e15-0657-eff855eca8aa.png)

## CloudFunctions
ここで情報の取得〜LINE通知まで全て行います。
大まかな流れです。
– JWTトークンの作成
– App Store Connect APIへリクエスト
– レスポンス情報の加工
– LINE Notify経由でLINEへ

元記事を表示

[SwiftUI]ボタンをカスタムしてみた

## はじめに
SwiftUIを使った開発を経験して、ボタンとかイメージとかもう少し読みやすくできんかなと思い立ちました。
宣言的UIあるあるかとは思うんですが、「()」や「{}」がどうしても多く、ネストが増えたりするのがちょっと嫌だったので自分なりに改良してみました。

## SwiftUIのボタンコンポーネント
まずは通常のボタンの実装をしてみます。
“`swift
// 標準ボタン1: テキストのみ
Button(action: { print(“Standard: Login tapped”) }) {
Text(“Login”)
}
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)

// 標準ボタン2: イメージ付き
Button(action: { print(“Standard: Settings tapped”) }) {
HStack {
Image(systemName: “gear”)
.font(

元記事を表示

初めてのハッカソン体験とRevenueCat SDKの導入体験

はじめまして、モバイル開発者のヨウと申します。

先日、MeltingHackが主催するハッカソンに参加する機会がありました。とても貴重な体験ができたので、ここでその経験を共有させていただきます。

ハッカソンに参加するのは今回が初めてだったため、最初は非常に緊張していました。しかし、スタッフの皆さんがとても親切で、わかりやすい日本語と英語でサポートしてくださったおかげで、すぐに不安は消え、イベントを楽しむことができました。

チームメンバーだけでなく、他のチームの参加者とも交流することができ、良い刺激をたくさん受けました。
![1726488850786.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/736127/482c1bec-e094-41cc-9990-4a6ce9118a69.jpeg)

RevenueCat SDKをiOSアプリに導入してみた。
1. Swift Package Managerを使用してRevenueCat SDKを追加する
2. Apple Connectコンソルで

元記事を表示

RevenueCat SDKを使ったPurchase Managerの作成とPaywallへの実装

1. RevenueCatのセットアップ
RevenueCatを使用するためには、まずプロジェクトにSDKを導入する必要があります。iOSの場合、CocoaPodsを使ってSDKをインストールするのが一般的です。
“`
pod ‘RevenueCat’
“`
Podfileにこの行を追加し、pod installを実行してSDKをインストールします。これが完了したら、AppDelegateやSceneDelegate内でRevenueCatの初期設定を行います。
“`
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
Purchases.configure(wi

元記事を表示

OTHERカテゴリの最新記事