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

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

iOSでサービスを見た時にinputタグでのズーム対策

## 原因

– iOSデバイスでサービスを閲覧して16px以下で指定している`input`タグのフォーカス時にズームされてしまうみたいです。

## 対策

– 今回の行った対策として、`meta`タグの`viewport`の中身に`maxmum-scale=1.0`を指定しました。しかし、参考記事にもよるとこの対策ではアクセシビリティ違反になるみたいです。今回、私が行っていた実装の中身を見ると`meta`タグの`content`属性の中身を見ると`width=375`が指定されていました。その副作用なのか、`initial-scale=1.0`がなかったのでそちらを指定したら改善されました。

## 参考記事

https://zenn.dev/rhirayamaaan/articles/f0209ad6574ed4

https://qiita.com/skwbr/items/b285cc312587c73a4812

元記事を表示

iOS App 「積分ますたー」

# アプリの使い方

![Simulator Screenshot – iPad Air 13-inch (M2) – 2024-10-15 at 10.53.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661763/967fd260-4c3f-c18c-385e-ae4413a95237.png)

![Simulator Screenshot – iPad Air 13-inch (M2) – 2024-10-15 at 10.54.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661763/58cff462-1310-c397-0aa6-5575b28c1de6.png)

## 設定

ホーム画面の左上の歯車アイコンを押下するとシャッフルする問題の設定ができます。

– 不定積分だけ
– 定積分だけ
– 両方

## 積分の問題を解く

ホーム画面で「スタート」を押下すると問題がシャッフルされ

元記事を表示

[SwiftUI]データバインディングを理解する

## はじめに
SwiftUIで開発をしてると、**データバインディング**という言葉をよく聞くかもしれません。
**データバインディング**は、UIとデータの同期を自動で行う強力な機能です。

**データバインディング**を学ぶと他にも
「MVVM」「状態管理」「プロパティラッパー」等、様々なワードが関係してきます。

本記事は上記の説明だけでなく、
サンプルコードも紹介しますので参考になれば嬉しいです!

## データバインディングとは?
データの状態を監視する仕組みを言います。

データとビューの間の双方向のデータフローを自動的に管理できたり、
SwiftUIではユーザ操作により画面の表示をリアルタイムで変更が可能になります!

:::note info
データが変更される
→そのデータを参照しているUI要素も自動的に更新される
※逆に、UIから入力された値をデータに反映も可能!
:::

## MVVMとデータバインディングの関係
### 1. アーキテクチャを簡単にイメージしよう
アーキテクチャの種類に**MVVM**というのを聞いたことがありますでしょうか?
データバイン

元記事を表示

エンジニア転職におけるアウトプットの重要性とそのメリット

## はじめに
**エンジニアとしての転職**を目指すなら、**アウトプット**は欠かせません。特に未経験や異業種からの転職を目指す人にとって、自分のスキルを証明するための手段として、アウトプットは**非常に効果的なアピール手段**です。

この記事では、**アウトプットの重要性**とその**メリット**について解説し、エンジニア転職に向けて行動を迷っている方の後押しができればと思います。

あくまで私自身の意見のため**全て正しいと言う意味ではないので参考程度**にご覧いただけると幸いです。

## 想定している読者
* **未経験でエンジニア転職を目指している人**
* **アウトプットを始めるべきか迷っている人**
* **転職活動において発信の重要性を知りたい人**

## なぜアウトプットが重要なのか?
エンジニアとしてのスキルは、履歴書や面接だけでアピールすることが難しいです。
企業は、「実際にどれだけの技術力があるのか?」を具体的に知りたがります。
アウトプットは、それを証明するための**最も直接的で効果的な手段**です。
### 実力をアピールしやすい
GitHubでの

元記事を表示

【Flutter】Google認証(ログイン/サインイン)の実装

## 1. はじめに

Googleアカウントを利用したログインは、ユーザーにとって簡単でセキュアな方法です。多くのユーザーが既にGoogleアカウントを持っているため、Googleでのサインインはアプリへのスムーズなアクセスを提供し、ユーザーエクスペリエンスを向上させます。

Flutterでは、FirebaseというGoogleが提供するサーバーサイドのモバイルアプリ開発用プラットフォームを使用するのが定石です。Firebaseを利用する事で、Googleアカウントでのログインをセキュアかつシンプルに実装できます。

本記事では、Flutterを使用してFirebase Authenticationを利用したGoogleアカウントでのログインを実装する手順を詳しく解説します。

## 2. 事前準備

### 1. Firebaseの設定
**1.1 [Firebase Console](https://console.firebase.google.com/)でプロジェクトを作成します。**

**1.2 FirebaseプロジェクトにFlutterを追加します。**

初回

元記事を表示

SwiftUi ポップオーバーを実装

iOS16.4からポップオーバーというものがあるみたいなのでこちら実装して見ようと思います。

こちらの吹き出しみたいな実装です。

![Simulator Screenshot – iPhone 16 Pro – 2024-09-27 at 12.05.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/18d701d9-ab8a-10f2-b2ec-9ff6549166f8.png)

# サンプルコード
“`PopoverSample.swift
struct PopoverSample: View {
@State private var isShowPopover = false

var body: some View {
ZStack {
Button(“show popover”) {
isShowPopover = true
}

元記事を表示

ipa形式iOSのアプリをiPhoneにインストールする方法

## 対象者
iOSアプリをビルドしたけど、ipa形式のアプリをどうやってiPhoneにインストールしたらいいのか悩んでいる人

## 方法1
一つ目の方法にして、おそらく結論。これ以外の方法を使うことはないと思う。

### 手順
– ipaファイルをAirDropでインストールしたいiPhoneに送信する
以上

## 方法2
iPhoneを有線でmacに接続し、Xcode経由でインストールする方法

### 手順
[Xcodeを使ってipaをiPhoneにインストールする](https://qiita.com/0ba/items/f0c52b73d40f0ac33d25)を参照

元記事を表示

【2024/10時点】iOSアプリでFCMを使った画像付き通知を受信する方法

## 何をするのか

iOSにて、FCM(Firebase Cloud Messaging)を使って以下のような画像付き通知を受信します。

## 落とし穴

いくつか落とし穴があります。気をつけてください。
– **Firebase(GUI)から通知を送ると、受信するまでに1〜2分ほどラグが発生します**
– PythonやGoなどでアプリサーバーをたて、Firebaseのプッシュ通知サーバー(`https://fcm.googleapis.com/v1/projects/プロジェクト名//messages:send`)へリクエストを送りプッシュ通知を送信してください。これでラグ発生することなく通知を受信できます。
– **画像付き通知を受信するには、iOSアプリ側でNotification Servic

元記事を表示

[iOS] [リモート通知] APNSサーバーの認証処理を実装するときに役立ったツール

# 目的
iOSでリモートプッシュ通知を実装する際、APNSサーバー(Appleのプッシュ通知サーバー)にリクエストを送るための認証処理で苦労したので、その時に役立ったツールを紹介します。この記事は備忘録を兼ねており、同じ問題に直面している方々にとっても参考になれば幸いです。

# APNSサーバーでの認証について
リモートプッシュ通知を送るためには、APNSというAppleのサーバーに対してHTTPSリクエストを送る必要がありますが、リクエストがどのアプリのものかを識別するため、認証が必要です。不正なリクエストやなりすましを防ぐためにも重要なステップです。

Appleが提供している認証方法は以下の2つです:
– [証明書による認証](https://developer.apple.com/documentation/usernotifications/establishing-a-certificate-based-connection-to-apns)
– [トークンベースの認証](https://developer.apple.com/documentation/usernot

元記事を表示

Xcode Cloudの導入〜App Store Connectへアップロードする手順

## はじめに

本記事では [Xcode Cloud](https://developer.apple.com/xcode-cloud) を使用してCIを構築した際の手順を簡潔に紹介します。
**Xcode Cloudの導入 〜 ビルド成果物をApp Store Connectにアップロード** までの手順を紹介しています。

ちなみに、現時点でのXcode Cloudでは無料で **25時間/月** のビルド時間が利用できるので、おそらく個人で使う分には無料プランで十分だと思います。

## 前提条件

Xcode Cloudを使用するための条件が [公式ドキュメント](https://developer.apple.com/documentation/xcode/requirements-for-us

元記事を表示

【Flutter】TODO / タスク管理アプリを作成する方法

## 1. はじめに

この記事では、Flutterを使って基本的な機能を持ったTODO / タスク管理アプリを作成します。Flutterの基礎を学びながら、簡単なアプリを作ってみましょう。

## 2. タスク管理アプリの主な機能:

1. **タスクの追加(作成)**:
画面右下の「+」ボタンをタップすると、ダイアログが表示され、タスク名と締め切りを入力してタスクを追加できます。

2. **タスクの編集**:
リスト上の任意のタスクをタップすると、編集ダイアログが表示され、タスク名や締め切りを変更することができます。

3. **タスクの削除**:
タスクを左または右にスワイプすると削除されます。

4. **タスクの完了/未完了の管理**:
リストの右側にあるチェックボックスをタップして、タスクの完了状態を切り替え、完了したタスクは削除します。

5. **タスクのソート**
タスクの並び順として、締め切り日 (deadline) が近い順にタスクを並べています。

6. **端末のストレージへのタスクの書き込み・読み込み**
端末のローカルストレージにタスクを保存し、アプリが

元記事を表示

複雑化するiOS・macOSの画像処理フローを理解し、開発効率を上げる方法

OSやmacOSの開発では、画像処理において複数のフレームワーク(SwiftUI、UIKit、AppKit)を使いこなす必要があります。

しかし、これらのフレームワークがそれぞれ異なる画像形式やAPIを提供しているため、変換や互換性の確保が煩雑になることがあります。

この記事では、画像処理の煩わしさを解消するためのヒントを紹介します。

# 1. フレームワーク間の画像変換方法
UIKitの“`UIImage“`とAppKitの“`NSImage“`は異なる画像形式ですが、これらを相互に変換する方法が用意されています。

たとえば、“`UIImage“`を“`CGImage“`に変換し、それを“`NSImage“`に渡すことで互換性を持たせることが可能です。

“`swift
if let cgImage = uiImage.cgImage {
let nsImage = NSImage(cgImage: cgImage, size: .zero)
}
“`
このように、Core Graphicsの“`CGImage“`を介して変換することで、画

元記事を表示

URLスキームを使わず任意のアプリで開くWebクリップ

# 使途

# 結論

https://developer.apple.com/documentation/devicemanagement/webclip

– TargetApplicationBundleIdentifier を設定する
– 対応しているMDMがほぼなく、AC2.17もこの設定をGUI上で設定できない
– テキストエディタで編集・追記してやる必要がある
– To use this property, install the profile through MDM
– このパラメータはMDMからのインストールが必要
– と言いつつ、プロファイル手動インストールでも動いていたような気が
– 組織識別情報を持っていたせいかもしれないので基本MDMからで
– 挙動についてはきちんと確認する必要がある
– iOS標準系アプリ(Safariを含む)との相性があまり良くないように見える
– アプリ側の対応も必要か
– アプリ指定、フルスクリーン

元記事を表示

【Flutter】HTTP通信の基本(GET / POST)- http / dio パッケージを比較 –

## 1. はじめに

アプリケーション開発において、HTTP通信は非常に重要な要素です。HTTP(Hypertext Transfer Protocol)は、クライアント(アプリ)とサーバー間でデータを送受信するためのプロトコルです。例えば、ニュースアプリがWebAPIを通して最新のニュースを取得したり、ユーザーが入力した情報をサーバーに送信してデータベースに登録する際に、HTTP通信が使用されます。

この記事では、代表的なHTTP通信パッケージである`http`と`dio`を比較し、さらに`httpbin`という登録不要のWebAPIに対して、GET / POSTリクエストを実装・動作確認する方法を解説します。

## 2. パッケージの比較

FlutterでHTTP通信を行う際に使われる主なライブラリとして、`http`パッケージと`dio`パッケージがあります。それぞれの特徴を以下の丸バツ表で比較してみます。

| 機能/特徴 | `http` | `dio` |
|————————–|——–|–

元記事を表示

SwiftUIの.tabItemがiOS 18.1で非推奨に -> 新しいTabに置き換えましょう

最新のXcodeを使用していると、`.tabItem` ビューモディファイアを使おうとした際に、非推奨の警告が表示されることがあります。

![Screenshot 2024-10-09 at 10.52.53 AM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/1c975b2a-3887-4505-4e5c-ca10637bdf1e.png)

:::note warn
‘tabItem’は将来のiOSバージョンで非推奨になります。代わりに `Tab(title:image:value:content:)` を使用してください
:::

Appleの開発者向けドキュメントでも示されているように:

![Screenshot 2024-10-09 at 10.53.19 AM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/bcad5ea3-7f40-8332-6932-f158a95c51d1

元記事を表示

Flutter環境構築にあたってバージョンを確認しておくべきツール

| ツール | 確認コマンド |
|:-:|:-:|
| Flutter SDK | flutter –version |
| Dart SDK | dart –version |
| Xcode | xcodebuild -version |
| CocoaPods | pod –version |
| Android Studio | android-studio –version |
| Android SDK | sdkmanager –list |
| Gradle | gradle -v |
| JDK | java -version |

元記事を表示

【 Flutter 】 個々のユーザに対してLINEメッセージ通知を送る機能の実現 (LINE SDK・LINE Messaging APIを利用)

### 1. はじめに

flutter × LINE の実装って本格的なものは知見がWeb上にほとんどなかったので、思い切って記事にしてみました。

今回、具体的には、個々のユーザに対してLINEメッセージ通知を送る機能を実現します。そのためには、以下の手順に沿って実装する必要があります。

– LINEログイン機能を実装し、アプリでLINEログインを行ったユーザのIDを取得
– LINEメッセージ通知機能を実装し、上で取得したユーザIDを宛先として、メッセージ通知

単に、LINEログイン機能の実装、LINEメッセージ通知機能を個別で試すことは簡単ですが、それらを実用的に利用するには、各機能を連携させて使用する必要があります。

上記の機能をFlutterで実装した解説記事が見つからなかったため、本記事で解説しようと思います。多くのFlutter開発者の方々の助けになれば幸いです。

### 2. LINEログイン機能の実装

LINE SDKを用いる事で、LINEログイン機能を実装することができます。

### 2.1 LINE Developersの設定

LINE SDK

元記事を表示

[Swift] UIScreen.mainを使わずに画面の明るさを設定する

## 背景
`UIScreen.main`がiOS17以降においてdeprecatedとなっていますが、`UIScreen.main.brightness`を用いない画面輝度の設定についての情報があまりなかったのでメモとして残しておきます。

## 結論
`windowScene.screen.brightness`を使おう

## サンプルコードと補足
画面輝度を調節するだけなのであまり意味はないですが、`windowScene`の取得を
`guard let windowScene = UIApplication.shared..connectedScenes.first as? UIWindowScene`
の形を避け、
`view.window?.windowScene`
の形をとっています。
(前者の実装だとiPadのマルチウィンドウ等、複数wIndowが存在する際に意図していないwindowを取得する可能性があるため)

“`swift title:SampleViewController.swift
import UIKit

final class SampleVie

元記事を表示

FireBaseSDKを組み込んだiOSプロジェクトをGitHub Actionsでビルドする方法

# 課題
FireBaseSDKを組み込んだiOSプロジェクトでは、`GoogleService-Info.plist`というAPI Keyなどのシークレット情報を含むファイルをプロジェクトに含める必要があります。

シークレット情報なので、そのままGitHubのリポジトリにPushすると情報漏洩する危険があるので、基本的には`GoogleService-Info.plist`はPushしないようにします。

しかしCI環境でビルドする際に、`GoogleService-Info.plist`がないとFireBaseSDKを組み込んだiOSプロジェクトはビルド出来ないため、ビルド時には`GoogleService-Info.plist`をどうにかして参照する必要があるのです。

※FireBaseSDKの導入方法

https://firebase.google.com/docs/ios/setup?hl=ja#add-config-file

今回は後続で記載する環境で、上記課題を解決した方法を記事にしてみます。

# 環境
– Xcode: 16
– CI: GitHub Acti

元記事を表示

[SwiftUI] レビューリクエストの頻度を設定する方法

# 1. はじめに
アプリを開発する際、ユーザーからのフィードバックを得ることは非常に重要であり、レビューはユーザーがアプリをインストールするかどうかを決定する際の参考になります。
しかし、レビューリクエストは頻度が多いと、ユーザー体験を損なう可能性もあります。そこで、適切な頻度でレビューを促す仕組みを導入することが大切です。

本記事では、SwiftUIを使って、アプリ内でビューの遷移回数に応じて`SKStoreReviewController`を用いたレビューリクエストを行う簡単な実装方法を紹介します。
ユーザーがある程度アプリを使い慣れた段階で自然にレビューを促すことで、ポジティブなフィードバックを得やすくし、UX(ユーザーエクスペリエンス)を向上させることができます。

# 2. 完成イメージ
FirstViewに3回遷移した時にレビューリクエストが送られる。
![ScreenRecording_10-07-2024 10-30-54_1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38921

元記事を表示

OTHERカテゴリの最新記事