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

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

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-

元記事を表示

高齢者見守りアプリ「メディット」を支える技術【帰省のお供に?】

# はじめに
**技術的な内容のみをご覧になりたい方は[こちら](#技術的なポイント)からどうぞ**

[](https://apple.co/32PFkVv)

先日、App Storeにて**「メディット」**を正式リリースしました!これは高齢者の見守りを目的としたコミュニケーションアプリです。年に数回しか帰省できない、そんなとき家族の安否を知る手助けになります。今回はその機能とそれを支える技術をご紹介します。

# メディットについて

## 開発のきっかけ

核家族化が進み、一人暮らしのお年寄りが増えています。家族が帰ってくるのは帰省のときだけ。このような状況では、家族間のコミニュケーションは少なくなってしまいます。

見守りサービスなるものは以前から多くありました。しかしどれもお年寄り側の情報を一方的に伝えるだけ。これでは良くも悪くも安

元記事を表示

[swiftUI]せっかくなのでアドベントカレンダーが作りたい(前編)

# 今回やりたいこと
せっかくなので、個人で勉強したSwiftUIのおさらいがてらアドベントカレンダーを作ってみます。
作りたいアドベントカレンダーはクリスマスまでに穴を開けていくカレンダーのことです。こんなやつ。
![christmas_tree_advent_calender_eve.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2318046/b006b5b6-34f5-6661-f321-04f4f54f473e.png)

# 完成までの手順
1.1日~25日までのボタンを配置する
2.ボタンをタップすることでモーダル表示されるようにする
3.モーダルで何かしらの表示をする
4.もし当日以降の日付がタップされた場合、「まだ開けられないよ!」と表示する
5.思いつくままに書いたコードを読みやすいようにする

# 1.1日~25日までのボタンを配置する
とりあえずこんな感じで画面をレイアウトしてみました。
![スクリーンショット 2021-12-04 21.37.46.png](https://q

元記事を表示

Snyk を使って iOS プロジェクトのライブラリ脆弱性を検査する

# Snyk(スニーク)とは?

## 1. 概要

![logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/af6f7748-7c48-6d7c-93fd-fbd20406e270.png)

> Snyk(スニーク)はデベロッパーファーストのセキュリティプラットフォームです。Snykは、コードやオープンソースとその依存関係、コンテナやIaC(Infrastructure as a Code) における脆弱性を見つけるだけでなく、優先順位をつけて修正するためのツールです。Gitや統合開発環境(IDE)、CI/CDパイプラインに直接組み込むことができるので、デベロッパーが簡単に使うことができます。

(引用:https://qiita.com/advent-calendar/2021/snyk)

簡単にいうと**脆弱性を見つける**ためのツールです。

## 2. ロゴ

ロゴはマスコット犬で「**Patch(パッチ)**」という名前がついています。
(セキュリティホールを修正するプ

元記事を表示

TensorFlowLiteのモデルをiOSでつかう【機械学習】

iOSでtfliteモデルが使えたら便利ですよね。

![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/d9551ab2-62a9-ad0d-5fe5-6189d28f6854.png)

基本的には、
CocoaPodsでTensorFlowLiteを追加して、
あとはInterpreterがモデルの初期化、画像から入力テンソルの作成、推論、をクラスメソッドでしてくれます。

[TensorFlowのexampleプロジェクト](https://github.com/tensorflow/examples/tree/master/lite/examples/image_classification/ios)のモデル推論に必要な部分を抜粋・解説した

元記事を表示

iOS 15で実現するPiP動画のコメント表示

こんにちは。[ogukei](https://qiita.com/ogukei)です。社内ではiOS版ニコニコ生放送アプリを開発しています。

先々月にiOS版ニコニコ生放送アプリのリリース5.27.0で、ピクチャ・イン・ピクチャ(PiP)機能で視聴時にコメントが流れるようになりました。本機能はiOS 15で初めて使えるようになった新APIを活用しています。今回はそのリリースの背景についてご紹介します。主にコメントを安定した動作で表示するための最適化について触れています。

https://blog.nicovideo.jp/niconews/159982.html

![ios-pip.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189818/a50f7ba5-e313-8ffc-043e-eab2849bf225.jpeg)

## PiP機能とは

他アプリを使用しながら小窓で動画を再生できる機能です。iOS版ニコニコ生放送アプリでは昨年プレミアム会員の方を対象に本機能をリリースしました[^

元記事を表示

OTHERカテゴリの最新記事