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

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

iOS 端末での Bluetooth 接続(Background)について

# はじめに
はじめまして。
リンクラフト株式会社で開発業務をしている akaishi といいます。
アプリ開発をしたり、社内のツールを作ったり色々と雑多にエンジニアをやっております。

この記事は [LINCRAFT Advent Calendar 2023](https://qiita.com/advent-calendar/2023/lincraft) の21日目の記事となります。

どうでもいい情報ですが、自分はリンクラフトのバイオハザード部の部長も務めております。
部員は自分1人だけですが!
皆さんもバイオやりましょう!!

# iOS 端末での Bluetooth 接続(Background)について🤔?
iOS での Bluetooth(BLE) の調査をする機会があったので備忘録も兼ねて記事にします。
本当は社内の Wiki にまとめようと思ってたのですが、色々あって書けていなかったので Advent Calendar で書いちゃえば一石二鳥なのでは!?と思い立った次第です。

### 調査する前の自分
以前(2016年ごろ)にも Swift で Bluetooth

元記事を表示

SwiftUIでのタップ処理の実装と応用

# はじめに
この記事は[and factory.inc Advent Calendar 2023](https://qiita.com/advent-calendar/2023/andfactory) 21日目の記事です。
昨日は @twumo さんの[【JetpackCompose】TabRowのインジケーターをカスタマイズする](https://qiita.com/twumo/items/26aa023ab71ffc09e2b2)でした。

最近個人的に実務でSwiftUIに触れる機会が増えてきたので基本的なタップ周りの処理をまとめておこうと思います。

### 基本的なタップ処理
#### タップジェスチャ(onTapGesture)
最も基本的なタップジェスチャで、ビューがタップされたときのアクションを定義します。

“`swift
import SwiftUI

struct TapGestureView: View {
var body: some View {
Text(“タップしてください”)
.onTapGestur

元記事を表示

iOSのデフォルトメールアプリを作ってみた

この記事は、株式会社 [ACCESS Advent Calendar 2023](https://qiita.com/advent-calendar/2023/access) の21日目の記事です。

こんにちは、メールアプリ [CosmoSia](https://cosmosia.net) の開発をしている @takuyakaneko です。
この記事では、iOS版CosmoSiaがデフォルトのEメールクライアントに対応するまでに行ったことを紹介します。

# iOSにおけるデフォルトアプリ

iPhoneを利用しているけどブラウザはChromeを利用したい、なんてことありますよね?
このようなユーザーの要望に応えるために、iOS14よりユーザーがデフォルトのWebブラウザやEメールクライアントを選択することができるようになりました。
Androidでは9から同様の機能を提供しており、iOSも追従してきた形ですね。

# デフォルトのEメールクライアントになるとできること

メールアプリもiOS上では他のアプリと扱いに変わりはなく、インストールするだけで普通にメールの送受信を行うこと

元記事を表示

FSCalendarでGoogleCalendar風のUIを作成する

## はじめに
この記事はSwiftのカレンダーライブラリである[FSCalendar](https://github.com/WenchaoD/FSCalendar.git)を使ってGoogleCalendarのようなUIを実現する方法について解説しています。

## 環境
* Xcode15.0.1
* Swift5.9

## 完成図
![Simulator Screenshot – iPhone 15 Plus – 2023-12-20 at 20.46.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741705/793dbf88-e361-a731-86d5-07b1f940a632.png)

Google Calendarを意識しました。

![Screenshot 2023-12-20 at 15.07.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741705/0eb24ffa-9d8

元記事を表示

【iOS】リリースしたアプリに高評価なレビューが来た時だけ通知する

# はじめに
アプリを開発してApp Storeにリリースした後、ユーザーからのレビューってめっちゃ気になりますよね。

良い評価をもらえた時はもちろん嬉しいです。
しかし、悪い評価をもらう事もあります。
悪い評価のレビューは暴言みたいなのも含まれていることがあります。

そんな悪い評価は見たくないですよね。

でも、良い評価をされた際は真っ先に確認したい。

そんな時にAppStoCeconnect設定です。

# 準備
– AppStoCeconnectのアプリをインストールしている
– 自分のアカウントにログインできている

# やりかた
設定したいアプリのページに行きます

1番下にスクロールすると「Notification」という項目があるので選択します。
Flutterでマイナンバーカードを読んでみた

## この記事について
この記事は [SUPER STUDIO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/superstudio) の20日目の記事になります。

## マイナンバーを読んでみたい
会社のアドカレなのに、弊社のプロダクトと関係ないものを作って投稿するのもどうかと思うのですが、マイナンバーカードからマイナンバーを読んでみたいのです。

そう、ほら、あれだ、たとえばいつか転売対策とかでマイナンバーによるユーザー認証が必要になっちゃったりしなかったり、ECカートだってそういう需要があるかもしれないじゃないですか。なんとかしてマイナンバーカードからマイナンバーを読んでみたいのです。

…だって、**男女のマイナンバーを足して素数になるカップルをマッチングするマッチングアプリ**を作ってみたいと思ってしまったからです。

## マイナンバーカードの仕様について
マイナンバーカードのようなICチップを積んでいるICカードは、演算機能を持ったコンピューターのようなもので、単純な読み取りでもきちんとしたプロ

元記事を表示

2023年、書き初め ならぬ アプリ書き出し初め のノリでアプリ作ってみた

## はじめに
こんにちは、@mediaboxesです。
久しぶりにReactNativeのAdvent Calendarに投稿します。

ReactNativeはTypeScriptでiOSとAndroidの両方のアプリを作れるという、エコな開発でサクッとアプリを作って両OSのアプリを作るれるので、新規事業の開発で重宝しています。
最近はマネージメント層として開発から離れていたので、学びのために休日開発をやってみたので総括として投稿します。

## 作ってみた
### なぜ作ったか
業務でReactNativeで開発が多いのですが、長期運用するとバージョンアップで大変苦労してきました。
+ 素のReactNativeをバージョンアップするとネイティブプロジェクトが無限パズル
+ ExpoのManaged workflowでネイティブプロジェクトを考えなくて楽だが、やりたいことが出来ないことがよくある
+ ExpoのBare workflowで結局ネイティブプロジェクトを管理しなければいけない

しかし、Expo SDK 42で発表されたexpo-dev-clientを使うことで、Ma

元記事を表示

Compose Multiplatformで作ったQiitaリーダーにさらに機能を追加した

この記事はNTTテクノクロス [Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ntt-tx) シリーズ2の20日目です。

こんにちは、NTTテクノクロスの戸部@etctaroと申します。

普段は社内でモバイルアプリ開発関連の技術支援や社内向けのノウハウ記事執筆、社内研修講師活動、社内コミュニティ活動などを行なっています。

今年はすでに[シリーズ1の2日目の記事](https://qiita.com/etctaro/items/5f142b0661e761756b36)を書いています。
この記事はその続きとなります。

Compose Multiplatformでちょっと気になるあれこれも色々とやりましたので、
ぜひこちらもお楽しみください。

# はじめに
[シリーズ1の2日目の記事](https://qiita.com/etctaro/items/5f142b0661e761756b36)のダイジェスト

– Compose Multiplatformの環境が整ってきたよ。
– いつものQiitaリーダ

元記事を表示

SwiftUI でデジタル時計のUIを実装してみる

SwiftUIの勉強がてらデジタルウォッチのUIを実装してみることにした。
チープな白黒液晶が懐かしくなり80〜90年代を席巻したカ⚪︎オ データバ⚪︎クなど所謂チープカシ⚪︎と呼ばれる腕時計のUIを参考に幾つかそのコンポーネントを再現することにした。

最終的にはそれをwatchOS上で動かせるようにしたいと思ったが、物理ボタンでの操作を想定したUIのはずなのでむずかしそう。
一種のアート作品として生暖かく見守っていただきたい。

# 📋 概要
どのようなアウトプットにすべきか考えたところ、懐かしいデジタルウォッチのUIコンポーネントを提供するレトロフューチャーなOSSにすることにした。需要はないだろうけど

現状のリポジトリは以下(まだPackage化は半端な状態)
https://github.com/JikeLab/DigitalClockKit

幾つか example として実装してみた画面はこの通り。
|||
|-|-|
|[SwiftUI]Buttonのタップと長押しで遷移先を変えたい

# はじめに
`Button`のタップと長押しの両方を共存させて処理を変えたいと思って試しに実装してみました。
開発時用の設定画面に遷移させたい、みたいなシーンで使えるかも?

# コード全文

サンプルコード

“`swift
import SwiftUI

struct ContentView: View {
@State var isLongPress = false
@State var isTap = false

var body: some View {
NavigationStack {
Button {
} label: {
Text(“押せ!!”)
}
.navigationDestination(isPresented: $isLongPress) {
SecondView()

元記事を表示

【SwiftUI】Chartsをまだ使ったことがなかったので株価アプリのUIっぽいの作って入門してみた3

# はじめに
この記事は前回の記事から続いています。
前回は株価をタップ&ドラッグした時のアクションを追加しました。

https://qiita.com/SNQ-2001/items/3b92fceb72721262a907

https://qiita.com/SNQ-2001/items/73132bf3cdbd4b8bb60b

今回はタップした時の上の株価を表示させる&タップしている株価の位置にsymbolを置くの2つをやってみます。

# 実際の株価アプリ
![RPReplay_Final1702894460.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/123885f4-83b9-6457-2ae0-83656fc83966.gif)

# 作成したサンプルアプリ
![Simulator Screen Recording – iPhone 15 Pro – 2023-12-19 at 13.54.20.gif](https://qiita-image-store.s3.ap

元記事を表示

Swiftのアクセス装飾子について理解する

# アクセス装飾子とは?
Swiftではアクセス装飾子を利用することができます。
装飾子を使用することにより、関数やクラスにアクセス制限を設けることができ、スコープ(使用する範囲)を明確にして定義することができます。
# アクセス装飾子の種類
### open
– 同じモジュール内だけでなく、別のモジュールからでもアクセスが可能
– 継承またはオーバーライドができる

:::note info
モジュールとは
importして読み込んで利用するFrameworkを作成するための仕組み。
:::

### public

– 同じモジュール内だけでなく、別のモジュールからでもアクセスが可能
– 継承やオーバーライドが不可能

### internal
– 同じモジュール内からのみアクセスできる
### fileprivate

– 同じファイル内からのアクセスのみ許可されている。

### private

– 装飾子を設けたそのクラスまたは構造体の中でのみアクセス可能(extension内でもアクセス可能)
– 一番制約の厳しい装飾子

:::note info
装飾子を何も付けなけ

元記事を表示

XCode15系にアプデしたらアプリがLaunchScreenから先に進まなくなった

# はじめに
この記事はand factory.inc Advent Calendar 2023 19日目の記事です。
昨日は @ichikawa7ss さんの「[なんのためにあるの?逆引きスクラムプラクティス](https://qiita.com/ichikawa7ss/items/50eac1c2b859fdfe8c3a)」でした。

# 起こったこと

– XCode14.2で開発を進めていたアプリをXCode15で起動したところ、LaunchScreenを表示した後に真っ暗な画面(black screen)から先に進まなくなった

# 解消方法

– `UISceneConfiguration.delegateClass` を指定したら解消

## 修正前
“`swift
/// this shows black screen with XCode 15.0~. (worked when XCode 14.2)
func application(
_ application: UIApplication,
configurat

元記事を表示

外に出ない自分を罵倒してくれるアプリを作った

この記事は[Qiita クソアプリ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/kuso-app) シリーズ2 19日目の記事です。

## 初めに

フルリモートで働いているエンジニアの皆さんは、ほとんどが家で働いていることが多くて、
外に出ないことがあるのではないでしょうか?

自分も例に漏れずに、ずっとデスクの前にいて、全く歩かない日があります。

![歩数.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393442/9faf8d89-7419-ab4f-2e9a-641e79913216.jpeg)
**圧倒的歩数、!**

これではダメだ、外に出ないと、!
だけど外に出なくても叱ってくれる人もいない、外に出ない日は罵倒されたい、いや、罵倒してほしい
だけど時々褒めて欲しい

ということで、
その日に歩いた歩数をもとに罵倒してくれつつ(時々褒める)明日の運勢を占ってくれるアプリを作りました

[ソースコードはこちら

元記事を表示

UICollectionViewを用いた画面構築の基礎

# 概要
Swiftにおける画面構築の方法として、UICollectionViewを用いた方法があります。UICollectionViewを用いた画面構築では、UICollectionViewLayoutやUICollectionViewCellRegistration、NSDiffableDataSourceなどを駆使して画面のレイアウトや表示するUIViewを登録します。

さて、私は2023年の4月から本格的にUICollectionViewを用いた画面構築を始めたのですが、何度も挫折しそうになりながらも12月まで勉強を続けています。本記事では、私がUICollectionViewによる画面構築を始めてから学んだことをまとめます。また、本記事では記載する内容は基礎の情報のみに留めています。これからUICollectionViewを勉強する方々の助けになればと思います。

# 目次
[1.SectionとItem](#1-SectionとItem)
[2.UICollectionViewLayout](#2-UICollectionViewLayout)
[3.UICollecti

元記事を表示

【Flutter】 arkitを使ってARに3dモデルを表示する方法

この記事は、【 [可茂IT塾 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/kamo-it) 】の16日目の記事です。

# はじめに
arkit_pluginライブラリを使ってARにglTF・glb形式の3dオブジェクトを表示する方法を解説します。

# 開発環境
– Flutter 3.14.0
– Dart 3.2.0
– arkit_plugin 1.0.7
– collection 1.18.0
– vector_math 2.1.4

# 実装手順
### 1. ライブラリのインストール
flutterでARを表示するには、**arkit_plugin** ( https://pub.dev/packages/arkit_plugin

元記事を表示

Swift / iOSでQRコードを読み取る

AVFoundationでのやり方

AVCaptureMetadataOutputObjectsDelegateの

>func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection)

という名前のデリゲートメソッドで毎フレームのQRコード検出結果が得られます。

以下はカメラ設定とQRコード検出のコードで、これでとりあえずQRコードの領域描画ができます。

![Dec-18-2023 22-04-59.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/9e555ede-0703-ed0a-b455-763618d02a9b.gif)

“`swift

class ViewController: UIViewController, AVCaptureMetadataOutpu

元記事を表示

「iOSエンジニアは5年後にAppleエンジニアに転ずる」論者の考察

# ようこそ考察の沼へ
こんにちは。
山田遍音とかいて、やまだあまねと呼んでください。
ツバメと聞くと、舌打ちをしたりしていませんか?
りんご味のグミを過剰に咀嚼していませんか?
胸に手を当てて自分に聞いてみてください。

# 想定する記事読者
わたしの記事を開いた人は、残念だが、iOSエンジニアとして、食いつなげるかわからないが、iOSを含めApple製品の調査やコーディングをして糊口をしのぎたい人だ。
とどのつまり、わたしだ。

# Appleエンジニア・・・?
Appleエンジニアは、Apple社員かつエンジニア職に就いている人のことではない。
いや、おそらく、Apple社員かつエンジニア職に就いている人はAppleエンジニアと称していいはずだ。
iOSエンジニア・コーディングやアプリのリリースに関わる者は、今後2分する。
前者は従来通り、コーディングやライブラリ生成に関わるものたちだ。プログラマやPMとして、従来通り働く。
後者は、コーディングは得意ではないが、日本人でありながら翻訳が非常に得意で、Appleのドキュメントを迅速に理解し、チームメンバにわかるように連携する仕事に

元記事を表示

【SwiftUI】Chartsをまだ使ったことがなかったので株価アプリのUIっぽいの作って入門してみた2

# はじめに
昨日、株価アプリの見た目を作成しました。
この記事は前回の記事から続いています。

https://qiita.com/SNQ-2001/items/3b92fceb72721262a907

今回は株価をタップ&ドラッグした時のアクションを追加してみます。

# 実際の株価アプリ
![RPReplay_Final1702894460.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/123885f4-83b9-6457-2ae0-83656fc83966.gif)

# 作成したサンプルアプリ
選択するとグラフが青くなり、選択している日付に縦線が表示されます。

![Simulator Screen Recording – iPhone 15 Pro – 2023-12-18 at 15.18.03.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/82486c6e-2d89-30

元記事を表示

【iOS】個人アプリの大改修に立ち向かってみた。

# はじめに
この記事では、過去に開発したiOSアプリの大規模アップデートについての経験を共有します。特に、なぜこのタイミングでアップデートを行うことに決めたのか、開発プロセス、アップデートのリリースとその影響について焦点を当てています。自分の直面した課題とその解決策について詳述し、同様の状況に直面するかもしれない読者の方の参考となれば幸いです。
# 背景
## 改修前のプロダクト情報
### 開発環境
– 初回リリース:2018年
– 最終アップデート:2020年9月
– Minimum iOS Version:11.0
– プロダクトの規模感:小さい

### **改修を決意した理由**
リリース時に使用した広告SDKバージョンのサポート終了により、アップデートが必要となり、大規模な改修を決意しました。

# 改修方針
継続的なアップデートを行うための環境を整えることを目指し、以下の改修方針を決定しました。

### アーキテクチャ
– **MVVM**
– 選定理由
– 継続的なアップデートを行うため、責務分離を行いたい。
– 自分自身がM

元記事を表示

OTHERカテゴリの最新記事