- 1. 超シンプル!書籍管理アプリ作ったよ!
- 2. iPhoneの紛失モードを強制解除するには?3つの方法をご紹介
- 3. 【Azure/Firebase】Azure PipelinesでCLIツールのインストールに失敗するのを解決する方法
- 4. Carthage で IPHONEOS_DEPLOYMENT_TARGET を設定
- 5. UITableViewを使ったらUIがぶっ壊れた
- 6. Local-First について調べてみた。これを使えばユーザー体験を最高にできそう!
- 7. Custom URL schemesとDeep Linkingの概要
- 8. はじめてのRevenueCat – (1) SDK稼働確認に必要なApp Store Connectでの対応
- 9. jsPDFでiOS Safariでもダウンロードダイアログを出してPDF保存(同じタブで開かないでくれ!!)
- 10. TextFieldに複数改行を入力させない
- 11. AppiumのiOS実機テストでWebDriverAgentのインストールに失敗するとき
- 12. メモリキャッシュとディスクキャッシュの違いと実装方法~パフォーマンスの比較~
- 13. SwiftUI 共有を簡単に実装できるShareLinkの使用方法
- 14. 【Xcode】RealmSwiftのマイグレーションエラー
- 15. テックカンファレンス初心者がiOSDC Japan 2024に現地参加してみて
- 16. モバイルアプリのクラッシュ原因を効率的に分析しよう
- 17. SFSpeechRecognizerは音声認識の権限を取らなくても利用できる
- 18. Warning: cocoapods not installed. skipping pod install.の対処法
- 19. 〜SwiftUIとFirestore DatabaseとFirebase Storage〜
- 20. pod update で target overrides the `EXCLUDED_ARCHS[sdk=iphonesimulator*]`
超シンプル!書籍管理アプリ作ったよ!
# はじめに
書籍管理アプリって色々あるけど機能がモリモリ過ぎて「もっとシンプルでいいんだけどな〜」って、思ったことありませんか?
例えば、感想を記載できたり、Amazonの購入リンクがあったり、評価できたり。今回作ったアプリ「DuplesS(読み方:デュプレス)」は、持ってるかどうかだけ分かる書籍管理アプリです!
是非、使ってみてください!
https://apps.apple.com/jp/app/dupless/id6504234469
# 使い方
使い方は簡単!
画面下のバーコードリーダーを押下して、本のバーコードをスキャンするだけです!
持ってない本なら、リストに追加されます。
持ってる本なら、所持していることを示すポップアップが表示されます。これだけ!
![for6.7.002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3808248/71d874f2-1d0e-abea-1baa-02d33c774792.png)
# 悩み事
アップデート案に「手動入力の実
iPhoneの紛失モードを強制解除するには?3つの方法をご紹介
# iPhoneの紛失モードを強制解除するには?3つの方法をご紹介
投稿者:中宮 和郎 | 投稿時間:2024年8月21日 11:00 | カテゴリー: [iCloudロック解除](https://jp.tuneskit.com/unlock-icloud/)
この記事は約6分で読めます。
iPhoneの『探す』から、紛失モードで2週間していたのですが、自分の手元に帰ってきました。どうすれば、解除し、iPhoneを起動することができますか?
iPhoneに紛失モードを設定した後、iPhoneを無事に見つかったが、解除の方法がわからなくて困っていますか?大丈夫!今回の記事はiPhoneの紛失モードという機能を解説して、それを強制解除できる3つの方法をご紹介します。では、まず紛失モードとは何かをご覧ください。
![iphoneの紛失モードを強制解除する方法](https://jp.tuneskit.com/images/resource/how-to-unlock-iphone-lost-mode.jpg)
## iPhoneの紛失モードとは?オンになったららどうなる?
【Azure/Firebase】Azure PipelinesでCLIツールのインストールに失敗するのを解決する方法
## はじめに
Azure Pipelineでアプリを`Firebase App Distribute`に配布しています。
このパイプラインで本日(2024/09/12)突然エラーが発生したため、解決方法を記録しておきます。## 環境
– Firebase CLI 13.17.0
– Azure Pipeline
– ubuntu-latest (Ubuntu 22.04)
– macos-13## 起きたこと
以下の公式サイトにある、「Standalone Binary」の手順でインストールしていました。
https://github.com/firebase/firebase-tools
具体的には以下のコマンドを使用しインストールする方法を使用していました。
“`sh
$ curl -sL https://firebase.tools | bash
“`ですのでパイプラインの定義は以下のようになります。(前後省略)
“`yml
– script: curl -sL https://firebase.tools | bash
d
Carthage で IPHONEOS_DEPLOYMENT_TARGET を設定
最近、MacBook を買い換えたので Git から新しい端末へ iPhone アプリのプロジェクトをクローンしてビルドしています。その時に carthage update を実行すると古いプロジェクトでエラーが発生しました。
>The iOS deployment target ‘IPHONEOS_DEPLOYMENT_TARGET’ is set to 8.0, but the range of supported deployment target versions is 12.0 to 17.5.99.
外部ライブラリが古すぎるということだろうな…
使わないというのが一番いいのかもしれませんが、とりあえず、xconfig で、IPHONEOS_DEPLOYMENT_TARGET を一時的に変更するスクリプトにより対処しました。
このスクリプトを使えば、carthage update は成功するので書いておきます。## シェルスクリプト
“`bash:carthage.sh
#!/usr/bin/env bashset -euo pipefail
xcconf
UITableViewを使ったらUIがぶっ壊れた
間違っているところやベストプラクティスでない場合がありますので、
その際は是非コメントにお願い致します!## 前提と問題
Lineトーク画面にそっくりなUIを作成しました
図1:作成したトーク画面のスクリーンショット上のスクリーンショットでは一見うまくいっていそうだけど、メッセージの送信を行うとレイアウトが崩れてしまいました。
図2:メッセージ送信後のトーク画面この問題について考察して
Local-First について調べてみた。これを使えばユーザー体験を最高にできそう!
## Local-Firstとは?
Local-Firstは、アプリケーションのデータや処理をローカルで実行し、クラウドやサーバーの遅延を極力排除するアプローチです。これにより、ユーザーは素早くレスポンスを得られ、オフラインでもアプリを使えるようになります。
今回は、Local-Firstの特徴や利点、そして使えるライブラリについて紹介していきます。
### ユーザー体験が良い
Local-Firstの最大の利点は、ユーザー体験の向上です。
– **ローカルにDBがあり反映が早い**
– サーバーにリクエストを送って結果を待つ必要がなく、データがすぐに表示されます。
– **オフラインでも利用可能**
– ネットワーク接続がなくても、ローカルに保存されたデータを使ってアプリを継続的に利用できます。後で同期するだけです。この「待たない体験」は、特にモバイルアプリやウェブアプリで大きな効果を発揮します。ローカルでの処理が中心となるため、アプリのレスポンスが非常に速く、使っていてストレスを感じません。
### モバイルにも力を入れている
Local-Firstはモバ
Custom URL schemesとDeep Linkingの概要
## Custom URL schemes とは
### iOSの場合 (Custom URL schemes) : やや非推奨
> カスタムURLスキームは、アプリ内のリソースを参照する方法を提供します。たとえば、ユーザーがメール内のカスタム URL をタップすると、指定されたコンテキストでアプリが起動します。他のアプリが、特定のコンテキスト データを使用してアプリを起動するようにトリガーすることもできます。たとえば、フォト ライブラリ アプリは指定された画像を表示する場合があります。
>
> https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app#### 実装方法
##### 呼び出されるアプリにschemeを設定する
https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app
`CFBundleURLTypes`を設定すると
はじめてのRevenueCat – (1) SDK稼働確認に必要なApp Store Connectでの対応
## はじめに
現在、[サブスクアプリハッカソン](https://prtimes.jp/main/html/rd/p/000000003.000139088.html) に出場しています。このハッカソンでは、期間中にRevenueCatによるサブスク収益管理を行なっているアプリをストアにリリースすることが要件になっています。
https://prtimes.jp/main/html/rd/p/000000003.000139088.html
今回初めてリリースするアプリにRevenueCat SDKを実装するので、まずはRevenueCat SDKの動作確認を検証用のテストアプリで行いたいと考えました。RevenueCatはストアとのAPIにより収益管理を行うソリューションですので、iOSの場合はAppStore Connectにアプリが登録されていることが前提条件となります。ただ、これは単にアプリ登録しているだけではダメで、ストアとのAPIが使えるように一定の条件を満たす必要があります。RevenueCat の実装よりも、この対応に結構時間を使ってしまいました。
この記事で
jsPDFでiOS Safariでもダウンロードダイアログを出してPDF保存(同じタブで開かないでくれ!!)
## 結論
“`js
// jsPDFのインスタンスを作成
const pdf = new jsPDF()// ~ おのおのPDFをイイカンジに作成してください ~
// PDFをBlob形式で取得
const blob = pdf.output(“blob”);// typeがpdfだとiOSでダウンロードできないので、application/octet-streamに変更
const newBlob = new Blob([blob], { type: ‘application/octet-stream’ })// Blobを使って一時的なURLを生成
const url = URL.createObjectURL(newBlob);// ダウンロードリンクを作成
const link = document.createElement(“a”);
link.href = url;
link.download = “hogehoge.pdf”;// ダウンロードを開始
link.click();// メモリリークを防ぐため、URLを解放
URL.revok
TextFieldに複数改行を入力させない
# はじめに
以前[こちら](https://qiita.com/zensehakittoneko/items/6af329855896240179b1)の記事を公開しました。
今回も「TENBIN」で実装した機能についての記事を書こうと思います。もっとこうした方がいいとかあれば是非コメントをお願いします!
また、是非「TENBIN」で遊んでみてください!https://apps.apple.com/jp/app/tenbin/id6670417709
# 本文
「TENBIN」では投稿内容の入力画面でTextFieldを使用しています。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3808248/2b7b6a4d-b609-6698-a6c7-ec56b2c026eb.png)
ここの実装をしていた時に「これ、140文字分の改行を入力されたらどうすればいいんだろう?」と思いました。
パッと思いついたのは3パターン
①: DBから取得した表示内容に複数改行がある場合、単
AppiumのiOS実機テストでWebDriverAgentのインストールに失敗するとき
## 背景
AppiumをPythonで動かすにあたって、iOSの実機を接続して実行すると以下のようなエラーが発生した。(Tracebackから抜粋)“`
UnknownError: An unknown server-side error occurred while processing the command.
Original error: Unable to launch WebDriverAgent because of xcodebuild failure:
xcodebuild failed with code 65. This usually indicates an issue with the local Xcode
setup or WebDriverAgent project configuration or the driver-to-platform version
mismatch. Consider checking the WebDriverAgent configuration guide for real iOS devices
at
メモリキャッシュとディスクキャッシュの違いと実装方法~パフォーマンスの比較~
# はじめに
画像をキャッシュするという言葉をよく聞きます。キャッシュとは、一度読み込んだ内容を一時的に保存しておくことです。キャッシュすることにより再度同じ内容を閲覧する際に素早く読み込むことが可能になります。
以前にメモリキャッシュの実装経験はありましたが、ディスクキャッシュについては知りませんでした。そこでメモリキャッシュとディスクキャッシュの違いと実装方法とパフォーマンスの違いについて学んだ内容を紹介します。
# メモリキャッシュとディスクキャッシュの違い## **メモリキャッシュ (Memory Cache)**
メモリキャッシュは、アプリが実行中にデータを一時的にRAM(メモリ)に保存する方法。**メリット**
高速: メモリに保存されるため、データへのアクセス速度が非常に速い。**デメリット**
小容量: 小容量であるため、過剰なメモリ使用はシステムからアプリが強制終了される原因になる。**特徴**
揮発性: アプリが終了したり、システムのメモリが不足した場合、キャッシュデータは消失する。短期的なキャッシュの利用に適しており、アプリが閉じられた後に保持
SwiftUI 共有を簡単に実装できるShareLinkの使用方法
こちらはSwiftUIを使用しiOS16+のShareLinkの使い方です
今回は文字のシェアをします。
![Videotogif (11).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/4a87c438-578f-6931-798b-0f8afbf3ae7d.gif)
実装は簡単です
“`.swift
ShareLink(item: “Share Text”)
“`これだけで可能です。
引数にシェアしたい文字を設定してあげるだけになります。
【Xcode】RealmSwiftのマイグレーションエラー
# エラー文
::: note alert
Thread 1: Fatal error: ‘try!’ expression unexpectedly raised an error: Error Domain=io.realm Code=10 “Migration is required due to the following errors:
:::RealmSwiftを用いるアプリで、すでにシミュレーターでテスト済みのものに、新たに変数を追加すると上記のようなエラーが出てきてしまいました。
変数を追加するとは以下のような感じです。
“`Swift:CutomeMemo.swift
//変更前
@objc dynamic var memo: String = “”
@objc dynamic var detail: String = “”
“`“`Swift:CutomeMemo.swift
//変更後
@objc dynamic var memo: String = “”
@objc dynamic var detail: String
テックカンファレンス初心者がiOSDC Japan 2024に現地参加してみて
## はじめに
先月iOSDC Japan 2024(以降、iOSDC)が開催されましたね!
https://iosdc.jp/2024/
今回はじめてiOSDCに現地参加させていただいたのですが、正直想像以上によかったです。想像以上に楽しく、学びがあり、そして、また参加したいと思えるイベントでした。この熱が冷めやらぬうちにぜひともこの体験を共有したいと思い、今回こちらの記事にまとめてみました。
ここでお伝えしたいメッセージとしては、**初心者こそテックカンファレンスに現地参加したほうがいいかも!** ということです。
実は私、これまでテックカンファレンスに一度も参加したことがなく、かつiOSアプリエンジニア歴も浅いため、イベントに参加するまで非常に不安でした。さらに、自分の周りではiOSアプリエンジニアの知り合いがほとんどおらず、このこともイベント参加するにあたり大きな障壁となっていました。しかし実際に参加して感じたのは、「むしろ初心者
モバイルアプリのクラッシュ原因を効率的に分析しよう
モバイルアプリがクラッシュに至るまでの経路を俯瞰して把握し、より効率的に原因分析することを可能にするNew Relic Mobile User Journeyをご紹介します。
# New Relic Mobileとは
すでにNew Relic Mobileをご存知の方は次のセクションに飛んでいただいて大丈夫です。オブザーバビリティプラットフォームであるNew Relicの一機能であるモバイル監視機能(New Relic Mobile)は、モバイルアプリに組み込まれたSDKがモバイルアプリのパフォーマンスやエラー、ユーザー操作などを記録することで、モバイルアプリにおけるユーザー操作、パフォーマンスやアプリのエラー、クラッシュなどの問題を分析できる機能です。
SwiftやObjective-C、Javaなどで開発されたiOS/Androidのネイティブアプリはもちろん、FultterやReact Native、Xamarinなどのクロスプラットフォームフレームワーク、ゲームでよく利用されるUnity、Unreal Engineにも対応しています。
また、モバイルアプリと通信し
SFSpeechRecognizerは音声認識の権限を取らなくても利用できる
# 結論
以下の両方を満たす場合には音声認識の権限が不要
– サポートされているLocaleでRecognizerを生成
– `requiresOnDeviceRecognition`をtrueにする
– 言語アセットがインストールされている# `SFSpeechRecognizer.requestAuthorization()`しなくて良い説
ドキュメントに音声認識の権限取得方法に関する記述はある。https://developer.apple.com/documentation/speech/asking_permission_to_use_speech_recognition
が…取得しなければならないとは書いてないっぽい。
コードは省略するが、以下設定で音声認識をする場合は`requestAuthorization`しなくても音声認識できた。
– `SFSpeechAudioBufferRecognitionRequest.requiresOnDeviceRecognition`をtrueにする
– ローカルで音声認識する設定
– on-device
Warning: cocoapods not installed. skipping pod install.の対処法
## 概要
すでにcocoapodをインストールしてあるのにも関わらず上記のエラーが表示された解決方法のメモです。## 環境
– macOS (M1)Sonoma 14
– Android Studio Giraffe |2022.3.1
– Flutter 3.22.3
– Dart 3.4.4
– cocoapod をhomebrew経由でインストール済み## 解決した手順
– M1で必要な手順らしい(要らないかも)
“`
sudo arch -x86_64 gem install ffi
arch -x86_64 pod repo update
arch -x86_64 pod install
“`
command + Tab + q などでAndroid Studioを完全に終了させる
以下のコマンドを実行する
“`
open /Applications/Android\ Studio.app
“`## 参考
https://qiita.com/tetsukick/items/24ffa82f84682e0066d0
https://hack-it-iron
〜SwiftUIとFirestore DatabaseとFirebase Storage〜
# はじめに
「-TENBIN-」という多数決アプリを作成しました!このアプリでは画像を使いたいと思っていてやり方を探していたら、**Firestore Database**と**Firebase Storage**を組み合わせると出来そうだったのでその仕組みで実装してみました!
きっと誰かの役に立つと信じて、実際のソースコードを一部ですが公開します。
イメージを掴むための参考程度にご覧ください!最後にアプリ紹介とかアプリアイコンについて書いてあるので、良かったら最後までご覧ください!
https://apps.apple.com/jp/app/tenbin/id6670417709
# ソースコード
– SearchPosterViewModel.swift
– `fetchPosters()`でFirestore Databaseのデータを全件取得できます。
– `searchPosters()`はsearchTextをキーワードとしてFirestore Databaseから検索ができます。– FireStoreUploadModel.swift
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