iOS関連のことを調べてみた2021年12月08日

iOS関連のことを調べてみた2021年12月08日

iOSで人物きりぬき(バーチャル背景、背景ぼかし、合成)

AppleのVisionで**PersonSegmentation**ができるようになった。
iOSで人物切り抜きができる。

**【セグメンテーション・マット】**

**GitHubサンプルコード: 
[
PersonSegmentatio

元記事を表示

Abstract Factory パターンについてまとめてみた【Swiftでデザインパターン攻略 #3】

## Abstract Factory パターン とは
#### 概要
Wikipediaによると、
「関連するインスタンス群を生成するための API を集約することによって、複数のモジュール群の再利用を効率化することを目的とする。」デザインパターンのことです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580445/a8b82b81-fc31-466b-a099-a4c9a6218069.png)
[Wikipediaより](https://ja.wikipedia.org/wiki/Abstract_Factory_パターン)

#### SwiftにおけるAbstract Factory パターン
iOSアプリ開発で活用する場合、VCやViewなどが生成したい「モノ」の具象クラスを意識せずに、共通のプロトコルに準拠したインスタンスを取得するために使えます。

オブジェクト生成の責務をView側から切り離すとともに、インスタンス化をカプセル化(秘匿化)することが可能です。

元記事を表示

[Firebase][iOS] メールアドレス更新前に確認メールを送る

Firebase Authentication のユーザーのメールアドレスを更新する方法として、
[「新しいメールアドレスに認証メールが送られ、リンクがクリックされると更新される」関数](https://firebase.google.com/docs/reference/swift/firebaseauth/api/reference/Classes/User#sendemailverificationbeforeupdatingemail:completion:)があります。

“`swift:
// newEmail に確認メールが送信されます。メールのリンクをクリックすると newEmail に変更されます。
Auth.auth().currentUser?.sendEmailVerification(beforeUpdatingEmail: newEmail) { error in
// …
}
“`

ちなみに、以下のコードだとメール認証なしで変更されます。

“`swift:
Auth.auth().currentUser?.updateEmail(to

元記事を表示

flutterでOAuthのログイン機能を実装

flutterでOAuthなログイン機能を実装しました。

実装内容とシーケンスは下記の記事を参考にさせていただきました。
https://dev.classmethod.jp/articles/persistent-login-for-mobileapp/

また、バックエンド側は下記の記事を参考にしてください。
https://qiita.com/yufuku/items/b2b2b4d2eb46dba0476c

完成イメージは次になります。
![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680074/3c9714c9-047b-dcb8-2fb4-aaa08fe1666c.gif)

コード全体は下記になります。
https://github.com/fu-yuta/authentication_frontend/tree/ce529eb931e8892fc003672540e792577abf13b7

#環境
“`shell
$ flutter

元記事を表示

AirDropでポケモンカードをシェアしてみた

# はじめに
この記事は[and factory.inc Advent Calendar 2021](https://qiita.com/advent-calendar/2021/andfactory) 7日目の記事です。
昨日は @nabetaro_jpさんの「[Flutterエンジニア採用面談で聞きそうなこと](https://qiita.com/nabetaro_jp/items/ab8d4d69f170ec9e4ed1)」でした。

and factory iOSエンジニアのy-okuderaです!
今回は、AirDropでiOSアプリのデータを共有してみようと思います。

# AirDrop
Apple製品のユーザーであれば説明するまでも無いかもしれませんが、念のためm(_ _)m

https://support.apple.com/ja-jp/HT204144

> AirDrop を使うと、近くにあるほかの Apple 製デバイスと写真や書類などのコンテンツを共有し、相手からも受け取ることができます。

写真やメモなどを共有するのに便利です!
アプリ開発をするときにも、

元記事を表示

WebブラウザからARコンテンツを表示する

SafariなどのWebブラウザからARコンテンツを表示できます。
アプリをダウンロードする必要はありません。
**以下のサムネイルは、実際にARタグがついているので、iOSデバイスでタップするとARプレビューが表示されます。**
よかったら試してみてください。
(注)PCなどiOS以外のデバイスでクリックすると、realityファイルがリンクからダウンロードされます。


【球体と魚】
Fastlane で AppStoreConnect にアップロードするまで

この記事は、フラー株式会社 [Advent Calendar 2021](https://qiita.com/advent-calendar/2021/fuller-inc) の7日目の記事です。

6日目の記事は @zzzaaawwwaaa さんによる [Rubyやってた人間がGo始めて思ったこと](https://qiita.com/zzzaaawwwaaa/items/9bc95826556beb4bb9c8) でした。

# 概要

[Fastlane 2.197.0](https://github.com/fastlane/fastlane/releases/tag/2.197.0) で dSYM のダウンロードが App Store Connect API 対応しました。
これで証明書のダウンロードからストアへのアップロード、dSYM ダウンロードなど一通り CI で利用する処理が API 経由で利用可能になったので、おさらいしようと思い、記事にしました。

## 準備

Xcode プロジェクトを作成して、[Apple Developer Portal](https:/

元記事を表示

Android/iOSで他アプリに簡単な値を送る方法

# はじめに
AndroidやiOSアプリを開発していて、自分のアプリから他のアプリを開きたい、簡単なコードを送って連携したい、そういうことはないでしょうか?実装していてちょっと苦労したのでメモがわりに残しておこうと思いました

# Android
![Android-App-Transition.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/924658/429ba76f-4a72-e91f-4391-91a27d361e1c.gif)

## 実装
### 送信側でやること

“`MainActivity.kt
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
// 送信先アプリに送りたい文字列
putExtra(Intent.EXTRA_TEXT, “C9C7BFC1-6397-4681-96CE-9C1BC1B

元記事を表示

【Flutter】FirebaseDynamicLinksで招待機能を実装する

# Firebase Dynamic Linksとは
Firebaseが提供するディープリンクの機能です。ディープリンクとは1つのURLでAndroid/iOS/WEBでの遷移先を振り分けたり、そのあとアプリにパラメータを渡すことも出来ます。
[Flutter大学](https://kboyflutteruniv.com/)の共同開発で作成したCOUPLE TODOはこのDynamic Linksを使って、夫婦同士の紐づけを行っていますので、そのやり方を紹介します。

https://couple-todo-product.web.app/

:::note warn
このコードの例は多少古い書き方も含んでいますのでご承知おきください。(RaisedButtonなど)
:::

# Flutterでの実装
Flutterあるあるですが、公式のドキュメントには実装例が載っていないです。

https://firebase.google.com/docs/dynamic-links/

そしてFlutterFireというFlutterでFirebase使う時の実装例などが書いてあるドキ

元記事を表示

[iOS] Bluetooth許可アラートを任意のタイミングで出したい

# はじめに

## Bluetooth許可アラートとは
これです。
これを任意のタイミングで表示できるようにしたい。

## 背景
特定の画面のみでBluetoothを利用するアプリでは、「利用する画面に遷移した時」や「使用するボタンを押した時」等のタイミングでBluetooth許可アラートを出すのが何にBluetoothを利用するのかわかりやすくてユーザー体験的に良いと思います。
そういった場面に対応するためには、**任意のタイミングでBluetooth許可アラートを出すことができるようにする必要があります。**

# 基礎知識
## CBCentralManager

Bluetooth周りを扱うためには`CBCentralManager`を使います。

公式ドキュメント

https://developer.apple.

元記事を表示

今更だけど、Objective-CアプリにSwiftライブラリLottieを導入してみた

##はじめに
10年以上メンテしてるアプリがあるので、いまだにObjective-Cも使っている今日この頃。
マルチプラットフォームの方がいいので、AppleのSwiftには手を出さずにきたんですが、Lottieを導入してみたら手を出さざるを得なかったので、出しちゃいました。

もう12周年だった。 [「PRO.APP」12周年記念!](https://www.atpress.ne.jp/news/285839)

Lottieとはアプリ/webにアニメを追加できるありがたいモジュールです。After Effectsから変換できます。
[WebアニメーションはLottieがオススメ!基本の使い方完全ガイド【2020年版】](https://photoshopvip.net/121220)

##なぜに?
Swift、今ままで深く調べたこともなかったんですが、iOSのLottie、Swiftで書かれてて、あ、じゃあ確かObjective-CからSwiftは簡単に呼べるはずなので、呼んでみよー・・・

呼べねー

・・・

なんでもSwiftのライブラリを出すときに、Objective-C

元記事を表示

iOS13 SwiftUIバグ集

## TL;DR

悪いこと言わんからiOS13でSwiftUI使うのはやめとけ

## はじめに

この記事は仕事でSwiftUIのアプリを実装していた際に遭遇したiOS13のバグの記録です。
iOS15もリリースされ今更iOS13を気にする場合も減っていくかと思いますが、記念碑としてまとめました。

またここに書いたものは自分が実際に出会ったバグですが、再現コード等をインターネットから引用している箇所があります。

#### 検証環境

– Macbook Pro 13 inch Late 2013
– macOS Big Sur 11.5.2
– Xcode 13.1
– iOS Simulator

#### サンプルコード

[trickart/iOS13SwiftUIBugs](https://github.com/trickart/iOS13SwiftUIBugs)

## 明らかなバグ

### iPadでActionSheetを表示しようとするとクラッシュする(13.0-13.3)

以下のようなログが出力されてクラッシュしてしまう。

“`
2021-12-0

元記事を表示

【SwiftUI】非同期処理中にButtonだけを非活性にしてインジケータを出すModifier

## やりたいこと
Twitterで流れてきたこの記事を読んで
同じことを簡単にiOSのボタンで実現したい

https://qiita.com/laineus/items/0a8337586b8c8344a0c2

## できたもの

元記事を表示

HEIC画像をjsで.pngや.jpegに変換する

# HEIC画像とは
iOSのスマホで撮影した写真の形式で、高画質でありがながら、サイズが軽いという特徴があります。
元々は「JPEG」形式だったのですが、iOS11以降より変わったようです。
拡張子はそのまま「.HIEC」もしくは「.HEIF」です。

# 抱えている課題
ブラウザではこのHEIC画像を表示することが出来ないという課題があります。
開発中のスマホアプリの中で、.heicのままURLをDBなどに保存し、そのURLをブラウザで表示したいとなった時に、問題が発生するという状態です。
ただ拡張子を変えても、上手く表示できません。

※ちなみに、この「.HEIC」形式の画像はiOSのアプリ内で利用する分には問題ありません。

### 課題を体験
以下URLにアクセスすると、ブラウザで表示されるのではなく、ローカルにダウンロードされてしまうと思います。
https://alexcorvi.github.io/heic2any/demo/1.heic
これを通常の画像と同じようにブラウザに表示したいのに、出来ないという問題に直面した方のための記事になります。

# 解決策

元記事を表示

[SwiftUI]クラス・構造体とSwiftUIのコンポーネントの命名が被ってしまった場合

クラス名や構造体の命名が、SwiftUIであらかじめ用意されているViewの命名と被ってしまった場合、
SwiftUI.使いたいViewで指定するで解決。

“`swift
struct Menu {
let label: String
let icon: Image
}

struct MenuView: View {
var body: some View {
VStack{
SwiftUI.Menu { // SwiftUI.Menuを追記
ForEach(0..<5){ index in Button(action: {}) { Text("index: \(index)") } } } label: { Image(systemName: "plus")

元記事を表示

マスクをつけた顔を検出する


これまでVisionでは顔の検出はできても、マスクをつけた顔は検知できなかった。

【従来はマスクの顔は検出されない】
【続】iOSでAirtestを動かす

#はじめに
AirtestIDE でスマホアプリ(ゲーム)のテスト自動化に取り組んでいます。そこで実際に作成したスクリプトを実行する環境をつくるために実施したことを綴っていきたいと思います。:xmas-tree::xmas-wreath1:

こちらは、昨年の記事[「iOSでAirtestを動かしてみる」](https://qiita.com/s_noza/items/f2cc1f398270d3572e5b)の続編になります。
前回課題となっていた横向きアプリへの対応が解決しましたので、そちらの情報共有と、当該環境を使用して本格的に取り組みを進めるにあたり、CLI環境からの複数端末での動作確認を行いましたので、いくつかの関連トピックを交えつつ共有できればと考えています。

#環境
macOS Big Sur 11.6.1
Xcode 13.1
Airtest IDE 1.2.12(Python)
iPhone XS(iOS 14.7.1)
iPhone 8(iOS 15.1)

#セットアップ
##Step1 WebDriverAgent
前回紹介していた iOS-Tagent を

元記事を表示

iOS アプリで使ってる OSS の情報をいい感じにとる

CocoaPods で OSS を管理している iOS アプリで使っている OSS のリストを “いい感じ” に作ります。

# お題
開発中の iOS アプリ内で使っている OSS を次の情報を含めてリストアップしたい。

– OSS 名
– バージョン
– ライセンス
– 公開サイト
– 作者

変なのが混入してないかとか、なんやかんやあるんです、はい。

# 解答

[こうする](https://github.com/shinyaishida/podeps)。

# 解法

なんかいい感じのコマンドとかツールとかないか探した結果、スクリプトをちょこっと書くだけで済みそうだったのでそうしました。以下はその辺の説明です。

## LicensePlist
OSS のリストと言えば [LicensePlist](https://github.com/mono0926/LicensePlist) が思い浮かびます。アプリ上で OSS の表示義務を果たすのにとてもありがたいツールです。

ただ、出力が、、、

“`xml

元記事を表示

Protocol Oriented Programmingを使ってみて思ったこと

# はじめに

Protocol Oriented Programmingというものがあるよと先輩に教えていただいたので、Jon Hoffmanの[Protocol-Oriented Programming with Swift](https://www.packtpub.com/product/swift-protocol-oriented-programming-fourth-edition/9781789349023)を読んでみました。
本を読む前に軽く調べてみたのですが、イメージが全く沸かず、一冊の本としてまとまっているものを読むことで理解してみようとしたのがきっかけです。

# そもそもなんなの?

僕の理解ですと、Swiftの**挑戦的な**取り組みの一部なのかなと思っています。むしろそう考えたほうが「OOPとはちょっと雰囲気が違うのか」と一歩引いて考えられるようになる気がしています。

Protocol Oriented Programming(以下POP)を一言で言えば、Protocol Extensionという仕組みを利用してコーディングを進めていくスタイルです。この

元記事を表示

iOSアプリでSPMを用いたマルチモジュール構成を試してみた

近年のiOSアプリ開発では、アプリの規模が大きいアプリも増え、複数人による並行開発を安定的に行うべく、マルチモジュール構成を採用するアプリも増えてきたと思います。
特にマルチモジュールの流れはAndroidの方が先行していた印象で、2018年頃からその流れが大きくなってきた印象でした。
iOSDCなどカンファレンスのセッションなどを聞いていると、大規模アプリほどその課題にあたっているチームが多いようです。

従来のマルチモジュール構成を行うには、XcodeからFrameworkプロジェクトを作成し、ライブラリとしてメインのアプリプロジェクトに追加していくというものでした。
アプリと、ライブラリ間の依存関係にはXcode上で手動で行う方法や、CocoaPodsなどパッケージ管理ツールを使う方法もあります。

そんな中、iOSDC 2021の@d_dateさんのセッションで、Swift Package Managerを用いたマルチモジュール構成の紹介がありました。

https://speakerdeck.com/d_date/swift-package-centered-project-

元記事を表示

OTHERカテゴリの最新記事