- 1. pod update で target overrides the `EXCLUDED_ARCHS[sdk=iphonesimulator*]`
- 2. XcodeCloudのビルドに失敗する(sentry-cocoa)
- 3. SIGSEGV
- 4. SwiftUIでの柔軟な吹き出し作成とアニメーション化: Popoverから手作りまで
- 5. 【SwiftUI】Toggleのあるセルを行全体タップで値を切り替える方法
- 6. 【個人開発】ティアリストを作成するアプリを作ってみた話
- 7. ExpandableListView ≒ UITableView
- 8. 【Flutter】Android / iOSアプリの2回目以降のリリース(アップデート)手順
- 9. iOS来月先月を取得する方法
- 10. ワンクリックで動画をかんたんGIF変換のショートカット
- 11. SwiftUIでプレビュー時にprivateな変数にアクセスする方法
- 12. クイズをコレクションしながら楽しく学べる!Notion連携の新アプリ『Quizionary』で知識を深めよう! ~覚えたいことが多すぎて復習する時間がないあなたに~
- 13. 日本時間でデータを簡単に確認!1NCEユーザー向けのIoT Lighthouseアプリを使ってみた
- 14. 【iOS】CallKitでプロジェクト名とは別のアプリ名を表示させる方法
- 15. [iOS]1年に1回のadhocの証明書更新を毎回忘れるので手順をまとめました
- 16. 【Swift】Swift6移行について
- 17. iPhone にあるゲームパッドを無線接続した際のメモ: アローンの「Switch用 スーパーミニコントローラー(ライトブルー ALG-NSWCSMLB)」
- 18. モバイルアプリのログを収集して「何が起きたかわからない」から脱却しよう
- 19. DeepLink, Deferred DeepLink 関連の技術について(FDL廃止)
- 20. [Swift]RxSwift TextFildで入力した文字をリアルタイムで表示させる
pod update で target overrides the `EXCLUDED_ARCHS[sdk=iphonesimulator*]`
# 背景
CocoaPods を使用しているプロジェクトで pod update を行った際に以下のエラーが発生しました。“`
[!] The `MyApp [Debug]` target overrides the `EXCLUDED_ARCHS[sdk=iphonesimulator*]` build setting defined in `Pods/Target Support Files/Pods-MyApp/Pods-MyApp.debug.xcconfig’. This can lead to problems with the CocoaPods installation
– Use the `$(inherited)` flag, or
– Remove the build settings from the target.
“`# 対応
`EXCLUDED_ARCHS` に設定されている値の前に `$(inherited)` を追加することで解決しました。![スクリーンショット 2024-08-29 23.31.33.png](htt
XcodeCloudのビルドに失敗する(sentry-cocoa)
## Xcode Cloudの実行環境
日付:2024/09/03
Xcode バージョン: Xcode 15.4(15F31d)
MACOS バージョン: macOS Sonoma 14.2(23C64)## エラー内容
“`
…
Adding spec repo `trunk` with CDN `https://cdn.cocoapods.org/`Downloading dependencies
Installing AmazonIVSBroadcast (1.20.0)
Installing LicensePlist (3.25.1)
Installing Periphery (2.21.0)
Installing Sentry (8.33.0)
[!] Error installing Sentry
[!] /usr/bin/git clone https://github.com/getsentry/sentry-cocoa.git /Volumes/workspace/tmp/d20240902-6264-iu5rmu –template=
SIGSEGV
iOSアプリの開発をしていると、クラッシュしたときにを見かけます。これはどういう意味なのでしょうか?
# SIGSEGVとは
**SIGSEGV**(”Segmentation Violation”の略)は、アプリが不正なメモリアクセスを行ったときにオペレーティングシステムから送られるシグナルです。具体的には、アプリがアクセスしてはいけないメモリ領域にアクセスしようとした場合に発生します。例えば、NULLポインタの参照や、メモリが確保されていない領域に書き込みを行おうとしたときです。このようなエラーが発生したときにクラッシュさせないと、システム全体の安定性が脅かされ、さらに深刻な問題(例えばデータの破壊やセキュリティの脆弱性)が引き起こされる可能性があります。そこでシステムはアプリを即座に停止させて、システムの健全性を維持しようとします。
iOSアプリの開発中に見かける似たようなエラーのキーワードとして、EXE_BAD_ACCESSやKERN_INVALID_ADDRESS、SIGNAL 11やSegmentation Fault: 11があります。EXE_BAD_ACCESSは
SwiftUIでの柔軟な吹き出し作成とアニメーション化: Popoverから手作りまで
この記事についての詳細説明となります。
# 1. SwiftUIでのPopoverを使った吹き出しの作成
この記事では、SwiftUIを使って吹き出しを作成する手法が解説されています。最初に紹介されているのは、popover(isPresented:arrowEdge:content:) を利用したシンプルな方法です。Popoverは、iOS開発者にとって便利なツールであり、簡単に使用できる点が魅力です。この方法を使うことで、ユーザーインターフェース内に簡単な吹き出しを表示させることができます。具体的なコードとしては、HStack内に配置されたText要素に対して、popoverメソッドを適用しています。このpopoverメソッドには、表示を制御するためのブール型の状態変数と、吹き出しをどの方向に表示するかを指定するarrowEdge、そして表示するコンテンツを指定するクロージャが渡されます。これにより、ユーザーがボタンを押すと、指定された方向に吹き出しが表示される仕組み
【SwiftUI】Toggleのあるセルを行全体タップで値を切り替える方法
## こうする
“` swift
@State var isOn = false
~~~Toggle(isOn: $isOn, label: {
Text(“Toggle Test”)
})
.contentShape(Rectangle())
.onTapGesture {
self.isOn.toggle()
}“`
`.contentShape(Rectangle())` と `.onTapGesture` を一緒に書くことで、
行全体タップしたときに、Toggleの値を切り替えることができる。
行の中の空白部分をタップしてもイベントを拾うようになる。### 環境
* Xcode 15.4### 参考
https://stackoverflow.com/questions/57191013/swiftui-cant-tap-in-spacer-of-hstack
【個人開発】ティアリストを作成するアプリを作ってみた話
## はじめに
最近、YouTubeで動画を見ていると、ゲームやカードなどを『ティア』というランク形式で分類する動画をよく見かけます。この形式は情報を簡潔に伝えられるため、とても便利だと感じました。そこで、自分でも簡単にティアリストを作成できるアプリを作ってみることにしました。
### 開発したアプリ
本題に入る前に、まずは開発したアプリをご紹介します。このアプリは現在、App Storeで公開中です。気に入っていただけたら、レビューしていただけると幸いです。
[App Storeのリンク](https://apps.apple.com/jp/app/%E3%83%86%E3%82%A3%E3%82%A2%E3%83%A1%E3%83%BC%E3%82%AB%E3%83%BC/id6667102590)
[](http
ExpandableListView ≒ UITableView
Android の [ExpandableListView](https://developer.android.com/reference/android/widget/ExpandableListView) って見た目をほぼ iOS の [UITableView](https://developer.apple.com/documentation/uikit/uitableview) にできるよねって話です。
左:Android (ExpandableListView)、 右:iOS (UITableView)
![cropped.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/35b99f80-78c1-95a3-2993-7ec8a1e0430e.png)iOS の UITableView は、特に難しいことをしなくてもセクション + 行 というのが作れますが、Android の場合は、ExpandableListView 用のアダプターを作成する必要があります。
ちょっぴり
【Flutter】Android / iOSアプリの2回目以降のリリース(アップデート)手順
## はじめに
今回は、Android/iOSアプリの初回リリースではなく、2回目以降のリリース(アップデート)手順について記載します。というのも、リリース(アップデート)を行う度に、いつもやり方を忘れてしまうので、知見として残して、いつでも参照できるようにしたいと思いました。ぜひ、いいね👍・ストックして参照いただければと思います。
## 開発環境
– Flutter
– iOS/Androidアプリ開発## 共通の手順
アプリのリリース(アップデート)を行うには、pubspec.yamlを編集して、`アプリのバージョン`、`ビルド番号`を変更(カウントアップ)します。
“`diff
– version: 1.0.2+3
+ version: 1.0.3+4
“`
– アプリのバージョン:1.0.x
– ビルド番号:+以降の数字pubspec.yamlを変更後、ファイル保存をし、以下を実行します。
“`
flutter clean
flutter pub get
“`
これ以降は、Android/iOSそれぞれで必要な手順になります。## Andro
iOS来月先月を取得する方法
来月先月を取得する方法です
# 完成イメージ
![sumplee.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/39426230-ccec-4d7c-4637-1e2849dfee30.gif)DateComponentsを使って現在の年月を表示する
https://qiita.com/yuta317/items/e6bbf95eb3d303e030dd
こちらの記事の続きになります。
# 実装方法
“`NextLastDateViewModel.swift
class NextLastDateViewModel: ObservableObject {
@Published var text: String = “”
var component: DateComponentsinit() {
component = Calendar.current.dateComponents(in: TimeZone.current,
ワンクリックで動画をかんたんGIF変換のショートカット
変換後、GIFファイル保存前にクイックルックで確認できます。
https://x.com/maochanz/status/1829755550542021099
30 fps狙い の width 480 にしていますが、当然ショートカットなので好きに変更できます。
GIFサイズはやや大きいか。
作成したショートカットはメニューバーにも入れることができます。
![sc 2024-08-31 at 16.13.17.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/f61f554e-60f4-b39d-4543-b794d6f05a11.gif)
“`
ショートカットクリック↓
読み込み元動画ファイルの選択
↓ GIFへ変換
クイックルックによるプレビュー
↓
書き出し先フォルダの選択
↓
GIFファイル書き出し保存
“`
「ワンクリ
SwiftUIでプレビュー時にprivateな変数にアクセスする方法
SwiftUIでビューを作成する際、@Stateを使ってビューの状態を管理することが多いです。しかし、@State変数は通常privateとして扱われるため、プレビュー時に直接アクセスして変更することができません。この記事では、privateな@State変数にアクセスして、プレビュー時に表示内容や表示状態を変更する方法を紹介します。
**問題の背景**
通常、@State変数はprivateであり、外部から直接変更することができません。そのため、プレビュー時に特定の状態を再現したい場合でも、その状態にアクセスできず、手動で状態を変更しなければなりません。
例えば、以下のようなコードがあるとします。
“`
struct MainView: View {
@State private var isTextVisible: Bool = false
@State private var displayText: String = “Default Text”var body: some View {
VStack {
クイズをコレクションしながら楽しく学べる!Notion連携の新アプリ『Quizionary』で知識を深めよう! ~覚えたいことが多すぎて復習する時間がないあなたに~
|![quizView.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260695/5431b470-7068-2c57-c528-bbbe73cecafe.gif)|![addQuizView.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260695/60221792-c9e2-54e8-2dd5-8e90b6e5f481.gif)|![collectionView.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260695/eaf59ba8-252b-c1fb-0079-fea7d82a227d.gif)|
|–|–|–|大人になるに連れていろんな分野の知識が必要だけれど、覚えている暇がない…
Notionにメモをとっているけど、メモするだけで定期的に復習する機会がない…
そんな問題を解決するために、「Quizio
日本時間でデータを簡単に確認!1NCEユーザー向けのIoT Lighthouseアプリを使ってみた
IoTデバイスのデータ使用量を把握するのって、結構面倒じゃないですか?
特に1NCEのポータルを使ってデータを確認しようとすると、情報が大雑把だったり、いちいちログインしなければならなかったり、ちょっとしたことがストレスになりがちです。それに、ポータルで表示される時間が現地時間じゃないと、どの日のデータなのかも分かりにくくなってしまいますよね。
iOSアプリ限定ではあるんですが、最近1NCEのAPIに対応した**IoT Lighthouse**というものを見つけたので、今回使ってみたいと思います。
このアプリを使えば、もっと手軽に、しかも現地時間でデータ使用量を日毎に確認できるんです。
https://apps.apple.com/jp/app/iot-lighthouse-for-1nce/id6502685366
## 簡単にデータをチェックしたい人にピッタリのアプリ
IoTデバイスのデータ使用量を毎日チェックしたい。でも、いちいちポータルにログインして、複雑なインターフェースを操作するのは面倒。そんなニーズにぴったりなのが、**IoT Lighthouseアプリ**で
【iOS】CallKitでプロジェクト名とは別のアプリ名を表示させる方法
## はじめに
この記事では、iOS14以降でCallKitのUIに表示させるアプリ名を設定する方法を説明します。過去の記事では`CXProviderConfiguration.init(localizedName:)`で以下の画像の赤枠の位置に表示されるアプリ名を設定していましたが、この方法はiOS14以降ではDeprecatedになっています。
この記事ではiOS14以降でこの部分の表示を変更する方法を説明します。![IMG_1251.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3768381/4160b281-7a7f-1e30-4162-8ffaa4a56075.png)
今回初投稿になります。至らない点、誤っている点がありましたら、コメントでご指摘いただけると幸いです🙇
## 遭遇した問題
前述したように、localizedNameがiOS14でDeprecatedになりました。“`Swift
let providerConfiguration = CXProviderC
[iOS]1年に1回のadhocの証明書更新を毎回忘れるので手順をまとめました
# はじめに
こんにちは、開発部のCLです。
今回はadhocの証明書更新手順についてまとめました。
adhocの有効期限は1年に1回必要なんですが、
ややこしいし、期間が空きすぎて毎回忘れてしまいます…。
備忘録として手順を残しておきます。
まず、ざっくりと手順は以下の通り。
| ステップ | 作業場所 |
|:–|:–|
| 1. CSRを作成 | あなたのMac(※以前作成したCSRが残っていれば作成不要) |
| 2. CSRからCERを作成 | Apple Developer |
| 3. CERからProvisioning Profileを作成 | Apple Developer |
| 4. Provisioning Profileをアプリに設定 | Xcode |
| 5. Ad Hoc作成 | Xcode|順に追っていきます!
# 1.csrの作成(以前作成したcsrが残っていれば作成不要) @ Mac
:::note info
超ざっくり解説
CSRとは各々のmacに発行される証明書の作成に必要なファイル。他のmacでは使え
【Swift】Swift6移行について
## はじめに
私自身Swift5でSwiftデビューしているのでSwiftのメジャーバージョンのアップデートが正直どのようなものか想像がついていません。なのでまずは4から5にアップデートがあった際は何が起きたのか遡ってみようと思います。今回は詳細な移行方法や変更点等は調査できていないのでまた別でまとめるとします。
## Swift4 → 5では
2019年当時の記事を漁ってみました。過去の中では破壊的変更も少なく大人しめなアップデートだったようです。移行に関する情報も結構簡素ですね。https://www.swift.org/migration-guide-swift5/
https://gihyo.jp/dev/serial/01/swift-introduction/0049
## Swift6への移行
結論、Swift5はしばらく使えそうなので現状維持も可能です。ですが生産性、安全性、保守性の観点や開発者・デバイスの体験向上の為にもSwift6へ移行していくのが良いと思います。> Swift 6は、デベロッパの生産性とコードの明確さの向上を目的とした新しい機能
iPhone にあるゲームパッドを無線接続した際のメモ: アローンの「Switch用 スーパーミニコントローラー(ライトブルー ALG-NSWCSMLB)」
## はじめに
以下の製品を入手したのですが、こちらを iPhone に無線接続して、ゲームパッド/キーボードとして動作させてみた時の話を記事に書きました。●Switch用 スーパーミニコントローラー ライトブルー ALG-NSWCSMLB | 株式会社アローン
https://140-041.co.jp/product/alg-nswcsmlbhttps://x.com/youtoy/status/1823245135993532521
ちなみに買った 1番の理由は「なんとなく面白そうだったから」で、その際に思い浮かべた用途としては、ゲーム用というよりはモノ作り系の展示などで使うという方向でした。
### 記事を書いた理由
このコントローラーは、以下のように様々なデバイスと有線/無線での接続ができる製品と書かれています。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/70b8953e-a4ce-d1b5-edee-c11618db98c7.png)
この後
モバイルアプリのログを収集して「何が起きたかわからない」から脱却しよう
モバイルアプリの詳細ログをNew Relicに統合する方法をご紹介します。New Relicがデフォルトで取得する情報に加えてログを活用してトラブルシュートを効率化しましょう。
# 重要性を増すユーザー体験の把握(RUM)
日々の私生活や会社生活においてデジタルサービスが必要不可欠になっている昨今、デジタルサービスの提供側としてはサービスが止まったり、操作が重いなどのユーザーの体験を損なうような問題は迅速に原因を突き止め、解決する必要があります。
その際に重要になるのが、ユーザーがどのような操作をしてどのような体験をしているかを正確に把握することです。これにより問題事象の再現や原因の究明ができ、解決を早めることができます。
ユーザーの体験の把握、それをサポートするのがRUM(リアルユーザーモニタリング)です。オブザーバビリティプラットフォームをSaaS提供しているNew RelicではRUM機能として、PCやモバイルのブラウザやモバイルアプリのWebViewとして動作するアプリケーションからユーザーの体験を収集するNew Relic Browser、およびiOSやAndroid
DeepLink, Deferred DeepLink 関連の技術について(FDL廃止)
アプリにDeepLinkを実装したいと考え、検索をかけると複数の用語がヒットすると思います。
たとえば、「カスタムURLスキーム」「ユニバーサルリンク」「Android App Links」などです。要件を満たすには何から手をつけて良いか迷いが生じたため、それぞれの特徴について整理しました。
全体の構造としては以下のようになります。
– DeepLink
– カスタムURLスキーム
– ユニバーサルリンク
– Android App Links
…– Deferred DeepLink
– Firebase Dynamic Links
– Adjust
– AppsFlyer
…アプリをインストールしていない場合にアプリストアへ誘導するようにしたい場合は、通常のDeepLinkではなくDeferred DeepLink(ディファード・ディープリンク)を使用する必要があります。
そこで、まず初めにDeepLink と Deferred DeepLink の違いについてまとめていきます。
# DeepLink と Deferre
[Swift]RxSwift TextFildで入力した文字をリアルタイムで表示させる
# RxSwiftのbindメソッドを利用した実装
今回は簡単なRxSwiftの実装を行います。
初歩中の初歩ですがbindメソッドを利用して、TextFildで入力した文字をリアルタイムで表示させる実装を行います。今回の完成イメージです。
## 実装コード
使用したのは
Label ✕ 1
TextFild ✕ 1
文字を入力したら、その入力した文字データが反映されるシンプルなコードです。“`Swift:
import UIKit
import RxSwift
import RxCocoafinal class ViewController: UIViewController {
@IBOutlet private weak var nameTextFild: UITextFi