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

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

Firebase FunctionsでFirestoreを監視しiOSにプッシュ通知を送る方法

## はじめに
このドキュメントでは,Firebase Functionsを使って,Cloud Firestoreに新しいドキュメントが追加されたときにiOSユーザーにプッシュ通知を送る方法を説明します.

## 目次
– [はじめに](#はじめに)
– [目次](#目次)
– [技術スタック](#技術スタック)
– [前提条件](#前提条件)
– [FireStoreの構成について](#firestoreの構成について)
– [Firestoreデータベースの作成](#firestoreデータベースの作成)
– [Firebase Functionsのセットアップ](#firebase-functionsのセットアップ)
– [Firebase CLIのインストール](#firebase-cliのインストール)
– [Firebase CLIへのログイン](#firebase-cliへのログイン)
– [Functi

元記事を表示

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

# はじめに
SwiftUIでAnimationさせるときにtransitionというModifierを見かけたのですが、これが何をやっているのかよくわかっていなかったので、ふわっと学びたいと思います。

# 環境
– Xcode16
– iOS17

# transitionとは
公式のドキュメントによると、Viewの表示、非表示切り替えの際のAnimationを制御するModifireのようです。

https://developer.apple.com/documentation/swiftui/view/transition(_:)-5h5h0

>このビューが表示されたり消えたりすると、トランジションが適用され、アニメーション化が可能になります。
>次のコードは、条件に応じて MyView を表示し、表示または非表示になったときにスライド遷移を使用して表示します。
>“`
>if isActive {
> MyView()
> .transition(.slide)
>}
>Button(“Toggle”) {
> withAnimation {

元記事を表示

iOSアプリをAppStoreConnectに登録するまで

# 目次
1. はじめに
2. 前提
3. 環境
4. 実施したこと
1. App ID作成
2. 証明書の設定
3. AppStoreConnectへの登録
5. 最後に
6. 参考

## 1.はじめに
iOSエンジニアなのにiOSアプリをAppStoreに公開する方法を知らなかったので、どんなことをやる必要があるのか、実際に調べて、試してみました!
この記事では、AppStoreConnectに登録するまでに実施したことを紹介します。

**公開までの大まかな流れ**
1. AppStoreConnectに登録
2. AppStoreに申請
3. AppStoreに公開
* 申請が通ると、AppStoreに公開可能となる

**そもそもAppStoreConnectとは?**
AppStoreConnectとは、Appleが提供しているアプリの管理や申請を行うためのツールです。
アプリの名前や製造者名などを登録して申請することで、AppStoreに公開しても問題ないか確認することができます。
申請だけではなく、アプリの価格や年齢制限などの管理も

元記事を表示

SafariのみCookieからデータ取得できない現象に苦しめられた話

## 背景
toC向けのフォームにて広告等流入経路識別のために独自IDを割り振り、URLパラメータへそれぞれ埋め込んでいた。

## どんな仕組みか
各経路からWebフォームへ遷移する際にURLパラメータの各情報をCookieへ格納。その後コンバージョンでパラメータも併せて送信することで流入経路の識別に活用していた。

## 問題点

### プライバシーの観点から、トラッキングやCookie無効化設定をしているユーザが増えている
Cookieありきで構築したシステムの信頼性が揺らいでおり、フローの調整が必要

### Cookie利用可否判定のロジックが十分でない
元々は以下のようにdocuent.cookieの中身をチェックして判定していた。

“`js
if(document.cookie != “”){
//処理
}
“`

GTM・GAを利用していたこともあり、document.cookieが空のままフォームを訪れる状況は想定外だった。
ただし昨今のSafariではサードパーティスクリプトの呼び出しをブロック、または遅延させるようになっているようで、ユーザの初回訪問時に上

元記事を表示

iOSのテストを自動化してみる

# 実現したいこと
あくまでiosアプリを自動的に操作して、自動的にエビデンスを取る仕組みを作りたいということ。
内部結合・外部結合といった感じで内容によっては自動化できないものもあるがそこはまた別の機会に。

# 環境構築
※Mac bookのm1 Pro
– maestroを入れる
– javaを入れる
– Facebook IDBを入れる(iOS自動化をお助け)

# 自動化してみる

以下のコマンドを実行し、シミュレーターを開く
“`
open -a Simulator
“`

サンプルを落とす
“`
maestro download-samples
“`

以下を実行して、サンプルアプリをシミュレーターにインストールする。
“`
cd samples
unzip sample.zip
xcrun simctl install Booted Wikipedia.app
“`

サンプルを実行したらこのように開かれる。
“`
maestro test ios-flow.yaml
“`
![image.png](https://qiita-image-stor

元記事を表示

MacBook Air 最低構成でも快適に開発できるtips三選

**アプリ開発って高いスペックを要求される場合がありますよね。**

iOSアプリの開発を行なっているイッセーです。

現在、最低構成のMacBook Airでアプリ開発をしています。スペックは以下の通りです。

・チップ:**M1**, **8コアCPU**
・メモリ:**8GB**
・ストレージ:**256GB**

正直ハイスペックのMacに買い替えたいのですが、そう簡単にはいきませんよね…

でも、少ないリソースでも効率的に開発できる方法を工夫すれば、十分に快適な環境を作れます。

てことで、如何にして低いスペックのMacでも快適に開発ができるか日々研究している私が、実践しているtipsを三つ紹介します。

## 使わないアプリは終了する
![スクリーンショット 2024-09-22 10.09.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3572387/d36bbc70-0df8-2b39-902b-5f367f369c9c.png)

まずは**メモリ対策**です。

元記事を表示

FlutterでWarning: CocoaPods minimum required version 1.10.0 or greater not installed. Skipping pod install. CocoaPods is a package manager for iOS or macOS platform code. Without CocoaPods, plugins will not work on iOS or macOS. の解決方法

# はじめに
IOSのエミュレーターでビルド中に以下のエラーが出てなかなか解決できなかったのですがどすこい塾のかたに聞いたところ一発で解決できたので皆さんにも共有していきたいなと思います。
#### エラー内容
“`
Warning: CocoaPods minimum required version 1.10.0 or greater not installed. Skipping pod install.
CocoaPods is a package manager for iOS or macOS platform code.
Without CocoaPods, plugins will not work on iOS or macOS.
For more info, see https://flutter.dev/to/platform-plugins
To update CocoaPods, see https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods
Cocoa

元記事を表示

iOSとAndroidでPWAをサポート

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/pwa-support/), 同じく私が作成しました。)*

今回、[バスハニャーンサービス](https://hybus.app)をリニューアルしながら、PWAをより良くサポートするための努力を書いてみたいと思います。

## PWAとは?

PWAとはProgressive Web Appの略です。

Web環境でのサービスは比較的発見されやすく、他の人にリンク一つで簡単に共有できる特徴があります。

一方、Nativeアプリのような場合には、システムにインストールする方式なので、ユーザーエクスペリエンスを最大化することができ、アプリドロワーからアプリアイコンをクリックして簡単にアクセスできるという特徴がある。また、Nativeはオフラインでも使用が可能です。

PWAはNativeのこのような長所をWeb環境でも同様にサポートすることができます。

バスハニャーンは

元記事を表示

【Flutter】Flutter 3.24.0にアップデートした際に発生したビルドエラーの解決方法

## はじめに
Flutter 3.24.0にアップデートした際に発生したビルドエラーの解決方法についてまとめます。

この記事は、私自身の環境で直面したエラーとその解決方法を記載しています。
依存関係やバージョンによって異なるエラーが発生する可能性があるため、その際にはエラーメッセージをもとに適切な対応方法をお探しいただければと思います。

また、ここで紹介する方法が最適解というわけではないかもしれないので参考程度にご覧いただけると幸いです。

## 前提
Flutter 3.16 ⇨ 3.19以降では`build.gradle`の記述方法が変更されており、その影響で発生するエラーや対応策について詳しくは、[こちらの記事](https://flutter.salon/error_warning/flutter-3-19-with-android/)や[公式](https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply)で解説されています。この変更点を理解しておくことで、ビルドエラーの解決が

元記事を表示

UICollectionViewCompositionalLayoutで1つのgroup内のCellの高さを合わせる方法 uniformAcrossSiblings

# `UICollectionViewCompositionalLayout`で全てのCellの高さを合わせる方法 [uniformAcrossSiblings](https://developer.apple.com/documentation/uikit/nscollectionlayoutdimension/4173072-uniformacrosssiblings)

[uniformAcrossSiblings](https://developer.apple.com/documentation/uikit/nscollectionlayoutdimension/4173072-uniformacrosssiblings)を紹介します。

[What’s new in UIKit](https://developer.apple.com/jp/videos/play/wwdc2023/10055/)で紹介されていたものです。

`NSCollectionLayoutSize`の高さを`estimated`にすると、Cellの高さに応じてitemやgroupの高さが変化します。

元記事を表示

macOS SequoiaにアップデートしてXcodeもアップデートしたらFlutterで困ったのでメモ

# はじめに

macOSアップデートしたらトラブったので、今後のためにメモしておく。
勘違いもいくつかあったのもあったので。
今回はホント自分への戒め的なもの。

# 発生したこと解決のメモ
macOSをSequoiaにアップデートしてXcodeもアップデート。
そうしたら、使用しているFlutterのプラグインでエラーが発生。
問題解決につながったと思われることを書いておく。

Podfileのplatformを12.0から13.0に変更
https://t.co/em3r9phU9g のissueにある Allow Non-modular Includes In Framework Modules をYesにするを実施。

以下を実施(多分やらなくても問題ない事もやってるかも)
“`
flutter pub upgrade
flutter upgrade
cd ios
rm -rf ~/Library/Caches/CoccoaPodsrm
rm -rf Pods
rm -rf Podfile.lock
pod repo update
pod install
“`

# 勘

元記事を表示

【Swift】NavigationLinkで画面遷移する

## まえがき
この記事はSwift独学者による備忘録です。
万が一誤った記載がある場合は、コメントでご指摘いただけると幸いですm(_ _)m

## 確認環境
XCode Version 15.4
MacOS Sonoma 14.4.1

## Swiftにおける画面遷移について
Swiftの画面遷移には代表的なものが2つあり、そのうちの一つがプッシュ遷移と呼ばれるNavigationLinkを用いた遷移方法です。
プッシュ遷移では、画面が右から左に切り替わります。

もう一つはモーダル遷移といって、画面が下から現れる遷移方法です。
こちらは今回の記事では割愛します。

## コード例
今回は画面を3つ用意し、NavigationLinkを使用して遷移するようにしました。

“`Swift:ContentView.swift
import SwiftUI

struct ContentView: View {
var body: some View {
NavigationView {
VStack {

元記事を表示

iOSDC Japan 2024 参加レポート

## はじめに
2024年8月に開催された iOSDC Japan 2024 に、株式会社ゆめみのスカラシップ生として 3 日間現地で参加させていただきました。本記事では、イベントの感想や、特に印象に残ったセッションについてまとめます。

## イベント全体の感想

iOSDCは国内最大級のiOS開発者向けカンファレンスで、たくさんの参加者・スタッフの方たちと、広い会場に所狭しと並んでいるスポンサー企業のブースに圧倒されました。
セッションだけでなく、展示や食事、他の参加者との交流ができる点でお祭りのような活気があり、こうしたイベントに参加するのは初めてでしたがとても楽しむことができました!Twitter(X) で繋がっている FF の方々や、所属していたオンラインサロンの方々も参加されていて、同じ場所で一緒に参加できて嬉しかったです!(交流は人見知りのせいであまりできませんでしたが…)

セッションについてはやはり難しい内容のセッションが多く、話についていけないセッションもありましたが、そう感じているのは自分だけではないと知れて少し安心しました。色々なセッションを見ていると、自分でも

元記事を表示

Reality Composer Proでシーンを作ってiOSのRealityViewのVirtual Cameraで表示

# はじめに

Reality Composer Proは、GUIで3Dコンテンツを配置したり、Shader Graphでシェーダーを作成することできるツールです
iOS 18からRealityKitの[RealityView](https://developer.apple.com/documentation/realitykit/realityview)が利用できるようになりました
Reality Composer Proで作成したシーンを、RealityViewの非ARモードのVirtual Cameraで表示してみました
(Reality Composer Proで作成したシーンをiOSなどvisionOS以外で利用できるようになったのもXcode16からかも?)

| Reality Composer Pro | iOS |
| :-: | :-: |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214313/3073a17e-5f0a-5dbd-7ebd-e220c87

元記事を表示

iOSのPWAでプッシュ通知がうまくいかない場合の対処法

ReactのブロジェクトでFirebase Cloud Messagingを使用してプッシュ通知を実装しました。その際、iOSのPWA(Progressive Web App)で、プッシュ通知が来ない・iPhoneの「設定」>「通知」>の一覧にインストールしたPWAが表示されないという事象に直面しました。本記事では、デバッグしていく中でぶつかった、いくつかのエラーとその解決策について説明します。

## エラー1:NotSupportedError: Subscribing for push requires an applicationServerKey
**エラーメッセージ**: `NotSupportedError: Subscribing for push requires an applicationServerKey`

**原因**: このエラーは、pushManager.subscribe メソッドに applicationServerKey が不足している場合に発生します。applicationServerKey はオプションとして扱われていますが、実際には設定が必要

元記事を表示

まったくのiOSアプリ初心者が、5日間で一通り動くアプリを作った話

こんにちは。今日はまったくのiOSアプリ初心者である私が、たった5日間でアプリを作り上げた経験についてお話しします。アプリの詳細は話すことができないことをご了承ください。結論から言うと、WebSimを使ってWebページを作り、WebViewを使ってHTMLページを表示させることでプロトタイプを作り上げたという話です。

# 背景

私はこれまでWeb開発に携わってきましたが、ネイティブアプリの開発は初めてでした。ある日、上司から「とあるiOSアプリを作ってほしい」という依頼が舞い込みました。初めての経験でプレッシャーを感じましたが、なんとかスピード感を持って取り組みたいと思いました。私はiOSアプリ開発やSwiftについて全く知りませんでしたが、アプリの見た目をリッチなものにしたいという思いがありました。

# Webページの作成

iOS開発環境はすでに整っていたので、iOSアプリのプロジェクトを作成しました。
何かWeb開発の知識をそのまま活かせる方法はないかと思い、ClaudeにSwiftでHTML、CSS、JavaScriptを表示する方法はないかと尋ねました。そうすると、ある

元記事を表示

写真アルバムからTransferableによって画像を取得 (iOS)

# 写真アルバムから`Transferable`によって画像を取得 (iOS)

`Transferable`に準拠した画像クラスを以下のように設計しました。自分のアプリできちんと動くように、適宜修正してください。

“`swift
final class ImageTranseferable: Transferable, Sendable {
let url: URL

init(url: URL) {
self.url = url
}

static var transferRepresentation: some TransferRepresentation {
FileRepresentation(importedContentType: .image) { receivedTransferrable in
if receivedTransferrable.isOriginalFile {
return ImageTranseferable(url: rec

元記事を表示

listRowSeparatorの設定が効かないとき

# listRowSeparatorとは
ListのSeparator(下線)を表示有無とSeparatorのPaddingを制御できるModifierです。
デフォルトではSeparatorがついているので、非表示にしたいもしくはPaddingをデフォルトから変更したい場合に使用する必要があります。

`デフォルト`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3359094/e23e61d5-5096-7525-139a-0735427b3a31.png)

`.listRowSeparator(.hidden)`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3359094/6210b772-1833-cb3b-77ec-221ed3351d65.png)

# ハマったところ
以下のようにModifierを設定しても、Separatorが非表示になってくれませんでした。

元記事を表示

歴5年のバックエンドエンジニアが初めてiOSアプリを作成・公開して、一週間経った収益を公開する。

私は普段フリーランスでGoのバックエンドエンジニアをやっています。

Xcodeは先月インストールしました。

Swift全然分かりません。
ドラッグ&ドロップでボタンの追加とか出来るみたいですが、
何だかよく分からないので男らしくコーディングでねじ伏せました。

そんな男らしい人間が作った男のアプリです。

## 結論:point_up:

![スクリーンショット 2024-09-28 18.01.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455017/e067a52c-24ba-d877-714d-776c191730af.png)

![スクリーンショット 2024-09-28 18.02.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455017/981d06dc-4172-9b76-8b8b-c1e9fa479a71.png)

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

元記事を表示

Swift, SwiftUIで「⚪︎秒後」を実現する!!

## 結論

以下を実行する!
“`swift: SampleView.swift
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
# 以下に5秒後に行いたい処理をかく。
print(“5秒経ちました”)
}
“`

上記では、5秒後に、「5秒経ちました」と出力されますね。

## まとめ
簡単ですね。
これ以上述べることがないので、今回はこれで終わりにします。

## 最後に
少しでも参考になれば嬉しいです。
また、個人的に手書き機能を搭載したアプリを開発したいと考えているのですが、手書き機能の実装経験のある方やおすすめの方法等あれば、教えていただきたいです!!(UIkit, SwiftUI)

最後までお読み頂きありがとうございました!!

元記事を表示

OTHERカテゴリの最新記事