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

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

【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

元記事を表示

iOSのブラウザで確認した時だけCSSが崩れてしまう

# なにが起きた?
PCのブラウザで確認すると正常なのに、iOSのどのブラウザで見てもキャッシュを削除してもスタイルが崩れている!(フォントサイズがおかしい)
CSSでfont-sizeを16pxに指定しても明らかにデカい!
![IMG_9277.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798584/49e4aa53-0ddf-c891-944c-9e56fd60f66c.jpeg)
> 画面中央5行はデフォルトの16pxなのだが明らかにデカくて画面からはみ出てしまっている。

# 解決
**結論: `親divの幅をデカくしていたのが原因だった。`
`親divのwidthを小さくしたら(iOSのCSSピクセルサイズに収まるサイズにしたら)解決した。`**
[参考](https://www.genz.jp/useful_information/iphone_size_quickreferencematrix/)

iOSには端末を縦向き、横向きにした時に自動的にフォントサイズを変化させる(小さい文

元記事を表示

iOSアプリケーションのペイウォール配置に関する考察

最近、東京でRevenueCatのShip-a-tonハッカソンに参加しました。このハッカソンの主な目標の一つは、アプリのどこかにRevenueCatのサブスクリプションペイウォールを実装することでした。様々なアプリケーションがこのペイウォールを異なる場所に配置しているため、私たちのチームは、アプリケーションのどこに配置するかという課題に直面しました。

私たちのアプリケーションは、AI駆動の東京アートギャラリーツアーガイドです。このアプリは、ユーザーの選択を利用して、カスタマイズされた展示説明とルートを含む個別のアートギャラリーツアーを作成します。

アプリケーションの基本的な流れは以下の通りです:
まず、ユーザーの現在の気分を評価するために、複数の画面でユーザーを迎えます。音、質感、色の選択肢を提供します。
これらの選択を行った後、ユーザーには東京のエリアを選択できるマップ画面が表示されます。その追加の選択を行った後、アプリのバックエンドは、ユーザーの選択とデータベースにある基本的な展示説明を使用して、定義されたエリア内の各ギャラリー展示のためのカスタムAI説明を生成します。AI

元記事を表示

XCode16の既存プロジェクトで”New Folder”でフォルダ作成すると、”Fatal error: Unknown PBXObject subclass isa=PBXFileSystemSynchronizedRootGroup”のようなコンパイルエラーになる

### 解決方法

* 作成したフォルダを右クリック -> “Convert to Group”

### 何が起こっている?

XCode 16からの新機能である、Folder機能とCocoaPodsを使ったプロジェクトと相性が悪く、Folderがあるとビルドが通らないのだと思われる

### 参考

https://developer.apple.com/documentation/xcode-release-notes/xcode-16-release-notes
https://github.com/CocoaPods/CocoaPods/issues/12456#issuecomment-2298010983

元記事を表示

はじめてのRevenueCat – (2) ダッシュボードでの設定と実装

前回の記事「[はじめてのRevenueCat – (1) SDK稼働確認に必要なApp Store Connectでの対応](https://qiita.com/maktag/items/072a137e73be49a7456f)」の内容までの手順が終わっている前提で、RevenueCat側の管理画面での設定とSDK実装をまとめます。
Paywallの表示をアプリ内で行うところまでを解説します。

## RevenueCat での設定手順

### 1. Projectの作成

Projectには複数のAppが追加が可能で、課金・サブスクリプションの管理が行えます。Collaboratorsとして、自分以外の人にも管理画面へのアクセス権限を与えることもProject単位で可能です。

### 2. Appの追加

ProjectにAppを追加します。ここで、前回の記事で取得している以下の情報を入れてAppを追加します。
– App Bundle ID
– App Store Connect App-Specific Shared Secret
– In-app purchase key

元記事を表示

UnityでビルドしたiOSアプリの表示名 (Bundle display name)

## iOSアプリの表示名を任意に設定
– Bundle display nameは iOSのアプリ名として表示される名前
– 毎回 “My Project (1)” として名前が付けられてしまう
– Bundle display nameの変更は
1. Unity の Project Setting > Player > Product Name によって設定される
1. BuildScriptで自動化できる

“`csharp

using UnityEditor;
using UnityEngine;

public class BuildScript
{
[MenuItem(“Build/Build Prototype 1”)]
public static void BuildPrototype1()
{
Build(“com.companyname.prototype1”, “Builds/Prototype1”, “Prototype 1”);
}

[MenuItem(“Build/Build Pr

元記事を表示

いまさらだけど UIScene についてちゃんと理解する

「UIScene(シーン)」は、iOS 13 以降で導入された マルチシーン機能に関連する概念です。これにより、アプリは複数の「シーン」を持つことができ、1つのアプリに対して複数のウィンドウや画面を同時に表示することが可能になりました。この機能は、特に iPad の マルチタスキングや 複数ウィンドウのサポートを意識して設計されています。

# シーンとは何か?
シーンは、アプリケーションのUIの単位を表します。従来、1つのアプリは1つの画面を持ち、アプリ全体を管理するライフサイクルイベント(フォアグラウンド・バックグラウンドなど)がありましたが、シーンごとに独立したライフサイクルを持つことで、アプリのマルチタスクやマルチウィンドウを可能にします。

# 主な特徴
1. マルチウィンドウ:
– iPad の場合、ユーザーは同じアプリを複数のウィンドウ(シーン)として開くことができます。例えば、Safari アプリで複数のタブを分割して、それぞれのウィンドウで表示したり、ドキュメントアプリで2つの異なるファイルを並べて表示したりします。
2. シーンごとのライフサイクル:

元記事を表示

OTHERカテゴリの最新記事