- 1. 初心者がiOSのプッシュ通知を実装できた話(何からしたらいいんだろうを解決)
- 2. GitHub APIを使った単体テスト実装ガイド
- 3. 【備忘録】初めてのiOSアプリ開発 第5回 メインスレッドとは
- 4. 【備忘録】初めてのiOSアプリ開発 第4回 DispatchQueue
- 5. iOS18の「アイコンの見た目をLight, Dark, Tintedから選べる例の機能」がやっているであろう処理の推測とアセットの準備方法
- 6. 【2024年7月版】iPhone / iPad上で 脱獄なし に Linux を動かす【UTM SE / 脱獄なし】
- 7. 実機テスト@Xcodeでエラー「Please reinstall cocoapods with `bundle exec pod install`」が発生した時の対処法
- 8. Compose Multiplatformを触ってみる
- 9. [iOS] Apple Storeのリジェクト、Guideline 4.3(a) – Design – Spamへの対応
- 10. iphoneでmarkdownを書くなら「 # Type」がおすすめ
- 11. CombineでReactiveSwiftのthrottle(while:on:)が使いたい
- 12. 【SwiftUI】ナビゲーションバーの実装方法
- 13. SF Symbolsのサイズ変更
- 14. AppStore での緊急対応方法について
- 15. 【SwiftUI】FaceIDをアプリで使う方法
- 16. Android Studio, Xcode でのアプリローカライズ方法
- 17. 【iOS 15】SwiftUIで共有画面の作成法
- 18. SwiftLint Error:The file “.swift.yml” couldn’t be opened … の対処法
- 19. SDK does not contain ‘libarclite’ at the path…の対処法
- 20. # UnityでiOSアプリをビルドする方法を完全ガイド!
初心者がiOSのプッシュ通知を実装できた話(何からしたらいいんだろうを解決)
# はじめに
プッシュ通知の実装にあたり、どこから手をつけていいか全く見当もつかなかった。色々と調べていくと、iOSアプリ側のコード、AWS SNSの設定、DynamoDBの設定など、複数が関わるため非常に複雑だった。なんとか実装できたので記録として残す。ここでは、具体的なコードではなく、実装の手順や流れについて書く。# 使ったもの
今回は諸事情によりAWS SDKを使えず、API Gateway経由でLambdaを実行し、プッシュ通知を実装した。
* AWS SNS
* AWS Lambda
* AWS DynamoDB
* AWS API Gateway
* Swift# 前提
これを参考にしてAWS SNSでプラットフォームアプリケーションの設定は完了している。
# 最終的に作りたいもの
**アプリ内にあるボタンを押した時に関連する人へプッシュ通知を送るというもの**# プッシュ通知実装までの過程
### 1. 色々と調べた
最初からサーバーと連携させ
GitHub APIを使った単体テスト実装ガイド
## はじめに
最近、テストについて学習しました。
理解を深めるためにGitHub APIを使った単体テストの実装していきます。
Swift Concurrencyのasync/awaitを使うのでSwift5.5、iOS 15以降が対象です。
↓sampleリポジトリhttps://github.com/kabikira/GitHubAPITest
## マッピング
https://api.github.com/users/kabikira/repos
上記URLで返ってくるJSONを確認GitHubのリポジトリをユーザー名で取得して
– id
– リポジトリ名
– リポジトリのURL
– スター数をマッピングして行きます。
## Model実装
#### EntityとなるGitHubRepository.swiftを作成します。
Entityは、データ構造を定義します。APIから取得したデータを保持するためのものです。
“`swift
import Foundationstruct GitHubRepository : Codable, Equatable
【備忘録】初めてのiOSアプリ開発 第5回 メインスレッドとは
## メインスレッド(Main thread)とは
ブラウザーがユーザーのイベントや描画を処理する。
・UIの更新やユーザーの入力処理はメインスレッドで行われる。### 1. UIの更新
mainスレッドで行う必要があり、UIの変更がユーザーインターフェースに即座に反映されるようにするため### 2. レスポンスの確保
メインスレッドで長時間のブロッキング操作を行わないようにする。バックグラウンドスレッドで長時間かかる処理を実行する。
・ネットワーク通信
・データベースのクエリ結果が得られたらmainスレッドに戻してUIを更新する。
### 3.イベント処理
ユーザーのタップやスワイプといったイベントをメインスレッドで処理することで、一貫性を保つ。メインスレッドの負荷を軽減し、アプリケーション全体のパフォーマンスを向上させることができる## 参考サイト
https://jp-seemore.com/app/15513/
【備忘録】初めてのiOSアプリ開発 第4回 DispatchQueue
## DispatchQueueとは
・タスクの非同期実行や並列処理を行うためのキュー
・バックグラウンドタスクの実行やメインスレッドでのUI更新を簡単に行う。
・AppleのGrand Central Dispatch(GCD)技術の一部。システムリソースを効率的に利用しながら、アプリケーションのパフォーマンスを向上させる。## Grand Central Dispatch(GCD)とは
・Appleが提供する並列プログラミングのための技術。
・iOSやmacOSで効率的なマルチスレッド処理を実現するために使用される。マルチスレッドを使用することで、プログラムの並列処理の実行や応答性の向上を図る。
・開発者がスレッドやキューを直接管理する必要なく、並列処理を実装できる。## DispatchQueueの種類
### 直列キュー (Serial Queue)
タスクを順番に1つずつ実行します。タスクの実行順序が保証され、競合状態を避けるのに適しています。・キューに追加されたタスクを一つずつ順番に実行する。
・1つのタスクが完了するまで次のタスクは実行されません。
・すべて
iOS18の「アイコンの見た目をLight, Dark, Tintedから選べる例の機能」がやっているであろう処理の推測とアセットの準備方法
本記事の内容はiOS18 beta3, Xcode16 beta3時点のものです。
# TL; DR
– iOS18のアイコンの表示モードを選べる機能では、モードごとにアセットの処理プロセスが異なる
– 各モードの処理特性(推定)を踏まえると、以下のようにアセットを準備するのがよいと考えられる
1. Lightアセットは従来通り
2. Darkアセットの背景は透明にし、アクセントカラーを調整してメインの意匠を配する
3. 色合いを調整用アセットの背景は単色の黒色にし、メインの意匠はモノクロのグラデーションにする# 前提: iOS18の「アイコンの見た目をLight, Dark, Tintedから選べる例の機能」
iOS18から利用可能になる、ホーム画面上のアイコンの表示をライトモード、ダークモード、色合いを調整(Tinted)の3つから選択できるようになる機能のことです。[^1]ちなみに、本記事の作成にあたりWWDCビデオやらHIGを見返したんですが、一言でズバリ言い表す機能名がないっぽいですね…
以降、本記事中では「アイコンの機能」と表記します(もし正式名称をご
【2024年7月版】iPhone / iPad上で 脱獄なし に Linux を動かす【UTM SE / 脱獄なし】
# はじめに
UTM SE(SlowEdition)がApp Storeの審査通ったらしいのでつかってみよう
iPhone上で Linux のVMが動いたらいいのになぁ。。。を叶えてくれる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/e941b9d1-b777-0371-e060-29de1ebe6afa.png)
# 環境
iOS: 17.5.1
機種名: iPhone 14 Pro MaxインターネットにWiFiなどで繋がっていることを前提
# 目標
UTM SE 上で Linux を動かす、ここでは Alpine Linux 3.20
# 概要
1. UTM SE をインストールする
1. インストールしたい Linux の iso をダウンロードする
1. UTM SE で iso からインストールする
1. Linux 起動# 詳細
Alpine Linux 3.20 ARM64 をインストールして起動します。
## UTM SE
実機テスト@Xcodeでエラー「Please reinstall cocoapods with `bundle exec pod install`」が発生した時の対処法
## 背景
iPhone7@Xcode14.3.1で実機テストを実施しようとした(再生ボタンをクリックした)ところ、「Please reinstall cocoapods with `bundle exec pod install`」というエラーが発生しました。エラーの対処方法を紹介します。## 環境
macOS Monterey:12.1
Ruby:3.0.6
Rails:6.1.0
React Native:^0.74.3
expo SDK:~51.0.20
bundler:2.5.3、2.4.13(default:2.4.13)
node:16.20.0
npm:8.19.4
yarn:1.22.19
webpack:4.46.0
※エディターは、VSCodeを使用しています。
※デプロイ先は、herokuです。## 問題
・Xcodeのログに、以下のエラーが発生しました。
“`
Codegen did not run properly in your project. Please reinstall cocoapods with `bundle exec pod i
Compose Multiplatformを触ってみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3796622/ad1209ef-0318-1d8e-b1d5-d3e763db2f36.png)
## 挨拶
初めまして。
bravesoft株式会社でエンジニアリングマネージャーらしき事をしているおじさんです。以前弊社技術blogにて[KMMについての記事](https://www.bravesoft.co.jp/blog/archives/13377)を書いていたので、今回はUIも共通化出来るようになった「Compose Multiplatform」について触ってみて所感を書いていこうと思います。
## 始め方
まずは[公式](https://www.jetbrains.com/ja-jp/lp/compose-multiplatform/)の[チュートリアル](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-gett
[iOS] Apple Storeのリジェクト、Guideline 4.3(a) – Design – Spamへの対応
# はじめに
iOSアプリの申請をしていてリジェクトがくることも結構あるのですが、大半は審査側があまり良く見ずにリジェクトしているのではないかと思うような内容が多く、チャットで少しやり取りしたり、スクリーンショットを添付して送るとそのまますんなりと申請が通ることが多いです。今回はリジェクトの対応に少し時間がかかってしまったので、解決法のひとつとしてメモしておきます。
# Guideline 4.3(a) – Design – Spam について
今回受けた上記のリジェクトの全文は以下の通りです。>Guideline 4.3(a) – Design – Spam
>
>We noticed your app shares a similar binary, metadata, and/or concept as apps submitted to the App Store by other developers, with only minor differences.
>
>Submitting similar or repackaged apps is a form of
iphoneでmarkdownを書くなら「 # Type」がおすすめ
iphoneでmarkdownファイルを読み書きするのにいいアプリはないかと探したところ、
「**\# Type**」 [^1]というアプリに出会いました。
「**\# Type**」 はiphoneユーザーのqiitaをよく使う人におすすめできるmarkdown editor アプリだと思います。
以下、おすすめする理由と使い方を紹介します。
# iphoneのファイル内の.md形式のファイルを自由に開いて編集できる
## 使い方
右上のボタンを開けば、iphoneのファイルが開きます。
![fK1U39SctfVxS1X1Gyfnr27neyF3/0cUWQjpc2OWAXNi3.jpg](https://firebasestorage.googleapis.com:443/v0/b/type-c1c71.appspot.com/o/fK1U39SctfVxS1X1Gyfnr27neyF3%2F0cUWQjpc2OWAXNi3.jpg?alt=media&token=ee66e48d-e130-404a-bec1-6c789b8c9f4b)
# qiita への投
CombineでReactiveSwiftのthrottle(while:on:)が使いたい
# 前書き
皆さん、ReactiveSwiftはご存知だろうか?正直なところ、RxSwiftと比べてシェアは低く、Combineが登場した今、新たに導入することはあまりないと思う。
実際この記事を書いている時点で、QiitaのRxSwiftの記事は562件あるのに対し、ReactiveSwiftの記事は13件しかなく、ReactiveSwiftのシェアの低さを物語っている。
しかし、ReactiveSwiftには他のReactiveProgrammingのライブラリにはない便利なオペレーターが存在する。
今回紹介する`throttle(while:on:)`もそのひとつ。
`while`に指定した`Property`の値が`true`の間、上流から来る値を堰き止め、`false`になったタイミングで最後に流れてきた値を下流に流す。
ReactiveSwiftのオペレーターについては@sei_kataokaさんの記事が非常に分かりやすいのでおすすめだ。
https://qiita.com/sei_kataoka/items/8e401e9d5b55ff40f3ed#thr
【SwiftUI】ナビゲーションバーの実装方法
#### 注意事項
本記事はエンジニア歴の浅い初心者が備忘録としてまとめたものです。
細かい部分に誤りがあるかもしれませんが、ご容赦ください。
※認識に間違いがありましたら、コメントで指摘頂けますと幸いです!## 1.はじめに
SwiftUIを学習する中で、ナビゲーションバーを実装したいが、NavigationStackやNavigationView、toolbarという文言が出てきて、その違いや使い方がわからなかった。## 2.環境
Xcode:15.2
Swift:5.9.2## 3.ナビゲーションコンテナについて
ナビゲーションバーを設置するには、そもそも”ナビゲーションコンテナ”というものを用意する必要があります。
イメージとしては、ナビゲーションバーを実装するための”大きな箱”を準備すると捉えていただければいいかなと思います。
(ナビゲーションバーに限らず、ナビゲーションに関わる機能を実装したい場合も使用しますが、ひとまず、ナビゲーションバーの実装で必要となるものだとご理解いただければ良いかと思います!)現時点での記載方法は以下のいずれかになるかと思います。
SF Symbolsのサイズ変更
## Point Size変更する
Configurationを選択します。
![スクリーンショット 2024-07-07 23.48.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883687/d948d1ea-1170-7e46-c283-9ac9496f1638.png)Point Size選択します。
![スクリーンショット 2024-07-07 23.49.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883687/250ff186-a523-5bd4-4c22-dd4fa538cd90.png)Point Sizeの数値を変更する。
![スクリーンショット 2024-07-07 23.49.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883687/a188e24f-1e4c-6065-
AppStore での緊急対応方法について
ネイティブアプリの開発があまり好かれない理由の中に、リリース時の審査があると思います。
丹精込めて作ったアプリをいざリリースしようとしたら審査に1日2日、長ければ1週間近く待たされリジェクト・・・なんてことはよくあると思います。
それが致命的なバグで、すぐにリリースしないといけない場合は阿鼻叫喚でしょう。この記事では、App Store でリリースしたアプリに致命的なバグが発生した際に、迅速に対応してもらうための手順について詳しく解説します。
# 申請方法
## バグを修正し、申請をする
まず治さなければ話が始まりません。原因の追求、hotfix ブランチを切って修正し、アプリをリリースする申請を行なってください。
この時、
– アプリバージョン
– ビルドバージョン
を変更することを忘れないでください。アプリ開発が初めてで「え?バージョンはどうあげればいいの?」と思っている方は以下の記事がとてもわかりやすく解説しているのでご参考ください。多くのアプリだとパッチバージョン、つまり、”1.0.0″ をリリースしていれば「1.0.1」とすれば問題ありません。
ビルドバージョンは、
【SwiftUI】FaceIDをアプリで使う方法
# はじめに
私は先日、PasswordBox というアプリをリリースしました。https://apps.apple.com/jp/app/passwordbox/id6520392403
このアプリは簡単に説明すると Password Manager アプリケーションです。
パスワードを扱う以上、セキュリティ性を高めるためにアプリを使用するにはパスコード等を使ってアプリを使う必要があります。
しかし、ログイン画面を1から使うのは大変だし、個人的にこのアプリで Firebase などを使ったログイン認証を作りたくなかったので、このアプリでは FaiceID を使っています。この記事では、FaceID の認証方法を解説していきます。
# 開発環境
– Xcode15
– Swift5.10# 実装方法
## Info の設定
1. プロジェクトファイルの設定を開く
1. ターゲットを開く
1. info を選択
1. `Permitted background task scheduler identifiers` を追加上記の方法で、プロジェクト設定を変更します。
Android Studio, Xcode でのアプリローカライズ方法
Android Studio には jetpack compose, Xcode は SwiftUI を使ったプロジェクトがある状態です。
## 作業環境
2024/7/13 現在
### Android Studio
Android Studio Koala
使用しているプロジェクト: Jetpack Compose で作成したアプリhttps://developer.android.com/studio
### Xcode
Xcode 15
使用しているプロジェクト: SwiftUI で作成したアプリhttps://apps.apple.com/us/app/xcode/id497799835
## Android Studio
1. プロジェクトファイルの中から string ディレクトリを探します
2. 選択した状態で右クリックをします
3. メニューから open translations editor をクリックします
【iOS 15】SwiftUIで共有画面の作成法
# はじめに
ここでは SwiftUI で共有画面を作成する方法を解説します。SwiftUI では、iOS16 から [ShareLink 構造体](https://developer.apple.com/documentation/SwiftUI/ShareLink)がありますが、iOS15 以前は SwiftUI のネイティブサポートはありませんでした。そのため、開発者は代替アプローチを使用する必要があります。
ここでは、iOS16 と 1OS15 以前の2通りで共有画面を作成する方法を解説します。# 開発環境
– Xcode15
– Swift 5.10# iOS 16以降
iOS16 から、Apple は ShareLink という新しい View を導入しました。これにより、共有画面のプレセンテーションを簡単に作成するようになりました。
body 内に、`ShareLink` を使い、引数に共有したい任意の item を入れてあげれば完成します。“`diff_swift: ContentView.swift
import SwiftUIstruct Co
SwiftLint Error:The file “.swift.yml” couldn’t be opened … の対処法
# 概要
新しい iOS プロジェクトを作成中に SwiftLint で、以下のような WARNING が発生した。> SwiftLint Error: The file “.swiftlint.yml” couldn’t be opened because you don’t have permission to view it. – Falling back to default configuration
簡単に説明すると、「`.swift.yml` を開くことができないよ」って話。
Xcode の Build Phases が Lint ファイルを見つけることができないので、WARNING を出している。## 開発環境
– Xcode15
– swiftlint 0.55.1# 原因の解説
Xcode14 ではビルドシステムに `ENABLE_USER_SCRIPT_SANDBOXING` を追加しました。これは、script phases がソースファイルまたは中間ビルドオブジェクトにアクセスするのをブロックするかどうかをビルドシステムに指示する新しいフラグです
SDK does not contain ‘libarclite’ at the path…の対処法
# 問題の特定
iOSアプリのバージョンを引き上げようとしたら以下のようなエラーが発生した。
“`
SDK does not contain ‘libarclite’ at the path ‘/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a’; try increasing the minimum deployment target
“`## 開発環境
– Xcode15.4
– Swift 5.10
– CocoaPods 1.13.0# 問題解決の解説
エラー文で検索すると以下のような質問が StackOverflow にあった。https://stackoverflow.com/a/77513296/20267915
また、回答内で言っている Apple Staff の回答はこちら:
https://developer.apple.com/forums/thread
# UnityでiOSアプリをビルドする方法を完全ガイド!
今回は、Unityで作ったゲームをiPhoneやiPadで動かすために、iOSアプリとしてビルドする方法をステップバイステップで解説。
これを読めば、あなたもすぐにiOSデベロッパーの仲間入りです!## 必要なツールと環境を揃えよう
まずはじめに、以下のツールと環境が必要です:
– **Unity**:最新バージョンをインストールします。
– **Xcode**:Macユーザーの必須ツールです。
App Storeから入手できます。– **Apple Developerアカウント**:iOSアプリを実機でテストするために必要です。
### Unityのインストールと設定
Unity Hubを使って最新のUnityをインストールしましょう。
iOSプラットフォーム用のモジュールも追加してください。### Xcodeのインストール
Macユーザーであれば、App StoreからXcodeをダウンロードします。
最新バージョンを使用しましょう。### Apple Developerアカウントの登録
Appleの公式サイトでDeveloperアカウントを登録