iOS関連のことを調べてみた2022年01月30日

iOS関連のことを調べてみた2022年01月30日
目次

【iOS×Firebase】自動ログイン機能の実装方法

#はじめに
一度ログインしたらログイン状態を保持しておいてくれるスマホアプリは一般的ですが、
都度トークンの確認などをしているのかなと思い、面倒臭そうだなと思っていました。

しかし、Firebaseではこんなに簡単に記述できるのだと思い、めっちゃ便利だと個人的に感動したので備忘録として記述します。

#前提条件
FirebaseAuthを使ったログイン機能は実装している前提として記述しています。

#自動ログイン

自動ログインのコードを下記します。
アプリ起動時のSceneDelegateでユーザーのログイン状態を確認しています。

“`swift:SceneDelegate.swift
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
autoLogtin()
}

//MARK: – Autologin
func autoLogtin(){
//アタ

元記事を表示

【iOS×Firebase】リモートプッシュ通知の実装方法

#はじめに
FirebaseのCloudMessagingを使ったiOSでのリモートプッシュ通知の実装方法に関して、証明書の作製などなかなか手こずったので画像多めで(Qiita的にどうなの)記載していきます。
Firebase見習いなので、間違っている箇所などあればご指摘ください。

#必要要件
・Apple Developer Programへの登録(99ドル/年):APN証明書の作製に必要
・Firebaseへのアプリの登録
前提として上記が完了しているものとして記載します。

#そもそもFirebaseからどうやってiPhoneにメッセージを送っているのか?
iPhoneにリモートでメッセージを送るのはAPNs(ApplePushNotificationservice)という仕組みを使っています。
これはAppleのサーバー(APNsサーバー)からリモート通知を送る仕組みです。

外部サーバー(今回はFirebase)からプッシュ通知を送るためには、アプリに紐づけられたAPNs証明書が必要になります。
そのためAPNs証明書を外部サーバーに登録する必要があります。
ここで外部サー

元記事を表示

【SwiftUI】Listを作成する

#環境
Xcode 13.2.1
Swift 5.5.2

#Listとは
SwiftUIでは、これまでのUIKitのUITableViewやUICollectionViewを用いたリスト表示を実装したい場合は、`List`を使うことで再現ができます。
Listも表示が画面からはみ出た範囲をスクロールできるようになっています。
一番シンプルにListを用いた静的リストの実装は以下になります。Listも表示が画面からはみ出た範囲をスクロールできるようになっています。

“`swift
var body: some View {
List {
Text(“First Item”)
Text(“Second Item”)
Text(“Third Item”)
}
}
“`

Chartsでレーダーチャートを出す時にハマったこと

## 概要
Chartsを使ってレーダーチャートを描画するときに、Y軸に表示される目盛りの個数が合わなくて一生悩んだので備忘録として残しておきます。
結論からいうと、Y軸ラベルの個数が固定の時は `yAxis.setLabelCount(:force:)` を使いましょう。

## やりたいこと

– 5種類のデータを表示したい
– 表示したいデータは全て 0 ~ 100 の範囲内
– 目盛りには0 ~ 100 までの値を20ずつ区切った値(0, 20, 40, 60, 80, 100)を出す
– データは後から更新されることがある

## 実装してみる
大部分を端折ってますが、設定周りはこんな感じに。

“`swift
let chartView = RadarChartView()

// 共通設定
chartView.legend.enabled = false // 凡例無効化
chartView.highlightPerTapEnabled = false // タップ無効化
chartView.rotationEnabled = false // 回転無効化
chart

元記事を表示

パーミッションを要求するためアプリの設定画面へ飛ばす【Swift/Kotlin】

# はじめに

Android、iOSに限らず、アプリがBluetoothやカメラを利用する際にはユーザがその権限を許可する必要があります。

許可を求めるポップアップが表示され、そこで「許可する」「許可しない」をユーザが選択します。
「許可する」が選択された場合は特に問題ありませんが、「許可しない」が選択された場合は、もう一度許可を求めたり、設定画面から許可するように促す必要があります。

設定画面から許可を促すために設定画面へ飛ばすコードを以下に記述します。

# iOS

以下のコードでアプリの設定画面へ飛ばすことができます。

“`.swift
if let url = URL(string: UIApplication.openSettingsURLString) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
“`

以下の画面に飛び、権限の許可ができます。
![名称未設定3.jpg](https://qiita-image-store.s3.ap-northeas

元記事を表示

「The Ultimate Guide to WKWebView」をSwiftUIで実装する – Making a web view fill the screen –

最近入っていたプロジェクトでWebViewに関して本当に色々なタイプの実装をしました。
何年も改修を繰り返して様々な外部システムとの連携が必要だったということもあるでしょう。
色々ありましたが、自分のキャリア的には大きな影響を与えてくれました。(なぜかここで感謝)

とそんな時に
Hacking with Swiftで[「The Ultimate Guide to WKWebView」](https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebvie)という何やら良さげなページを発見。

見てみると、結構これやったな。
あ、他にもこんなことできるんだ、という学びになりました。

おさらいがてらそれを振り返りつつ、
**SwiftUIでちゃんとアプリとして動くところまで実装**してみました。

## 前提

私はUIKitの経験は少なく、SwiftUIの経験が長いかつ濃いです。
また自分の好みとしてもUIKitよりSwiftUIです。

このことからも推測できるとおり、**iOS開発に関してまだまだ

元記事を表示

ARの魔法を手に入れるーーARオブジェクトを指で移動・拡大・回転する方法

#AppleのRealityComposerで作ったARオブジェクトに指のジェスチャーによるコントロールをつける方法です

#RealityComposerは簡単にARオブジェクトをつくれる。でも、どうやって指でコントロールすればいいの?

ARオブジェクトをどんどん配置できるRealityComposerは、グラフィック・ユーザー・インターフェースでARコンテンツを作れて便利です。

これらのARを指で操作できたら、魔法みたいじゃないですか?
さて、どうすればそれが実現できるのでしょう?

#これが答えだ

短いコードを書くと実現できま

元記事を表示

NSObjectについてちょっと深堀りしてみた

## 概要

普段何気なく使用しているNSObjectについて、改めて調べまとめました。

なお、筆者はSwift、Objective-C及びアプリ開発初心者のため、内容の正確性をしっかり保証することができません。もし、不正確な表現などございましたら、コメントいただけると幸いです。

## NSObjectとは

Cocoaフレームワークにおける数少ないルートクラスで、NSObjectを継承することで、動的型付けであるObj-Cランタイムの柔軟性を教授することができます。

### その柔軟性とは?

**メソッド呼び出しをランタイム時に動的に行えます。**

より詳細には、NSObjectを継承するサブクラスのメソッド呼び出し時には `objc_msgSend()`によるインターセプションを介するため、ランタイム時にメソッド呼び出し先を柔軟に変えること(通称Swizzling)などが可能になります。

たとえば以下の一行目のようなコードはコンパイラによって、 `objc_msgSend`の呼び出しに置き換えられます。

“`objectivec
[obj message];
//

元記事を表示

ダイエットの進捗報告を爆速でするショートカットを作ってみた(LINE,Twitter)

#:pushpin:はじめに
こんにちは。初投稿です。
フォトウェディングに向けたダイエットのため、パーソナルトレーニングに通ってます:lifter_tone1:
トレーニング初回、トレーナーから「朝と夜の体重・体脂肪率、1日の水分摂取量をLINEで報告してください」と指示されました。
体重計とヘルスケアアプリは連携済みなので、ヘルスケアアプリからポチポチ入力していたものの…

**やっぱりめんどくさい!**

と、いうことで「ショートカット」という純正アプリを使って自動化させました。
また、ちょっと楽しくなってきたので、twitterに体重・体脂肪率を投稿するバージョンも作ってみました。
ダイエットアカウントで体重報告をされてる方がよくいるので需要があるといいなあと思ってます:relaxed:

#:pushpin:そもそもショートカットって何?
![514B0274-C0BF-45BF-87BA-15F57E593AEB.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518596/5f0db

元記事を表示

Couchbase Mobile開発:バックグラウンドでのCouchbase Serverとの同期

## はじめに

ここでは、Couchbaseが公開しているCouchbasae Mobileチュートリアルから、バックグラウンドフェッチに関するものを紹介します。

https://docs.couchbase.com/userprofile-couchbase-mobile/backgroundfetch/userprofile/background-fetch.html

Couchbase Mobileについては、以下参照ください。

https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

Couchbase Mobileは、NoSQL組み込みデータベースCouchbase Lite、およびCouchbase ServerとCouchbase Liteとのデータ同期を担うSync Gatewayからなります。
Couchbase Serverにつ

元記事を表示

【BitriseとGithub Actionsの比較】iOSアプリでCIをやってみた

# はじめに
参加しているエンジニアコミュニティーで開催された輪読会にて[iOSテスト全書](https://peaks.cc/books/iOS_testing)を読み、その後同コミュニティーで開催されたBitrise体験会に参加しました。
その際に学んだBitriseの導入部分と、一人体験会で触ってみたGithub Actions(記事を読みながらやっただけ)の簡単な比較をCI素人目線でまとめたいと思います。

CI素人と書きましたが、最近までCIという言葉も知りませんでしたので、

>**CIとは?**
>Continuous Integrationの略で、継続的インテグレーションと呼ばれています。
>開発者が書いた新しいコードとマスターブランチ(トランク)を頻繁に統合するプロセスです。新しい機能開発のためにブランチを作成する場合、つぎにマージするまでの期間が長くなるにしたがって変更量が多くなり、マージ作業が大変になるだけでなく、問題が含まれるコードの特定と分離が難しくなります。一回のコミットでの変更量を小さくして頻繁にマージすれば、問題の発見が早くなり対処が楽になります。問題発

元記事を表示

動画を超解像してみたい iOSでやってみた

#CoreMLで動画を超解像してみました

#動画を超解像したらおもしろいんじゃないか

#動画をCoreMLの超解像モデルにかけてみる
今回は1フレームずつ超解像にかけてみるという力技に挑戦します。

#Step

1、CoreML-Modelsから超解像モデルをダウンロード

https://github.com/john-rocky/CoreML-Models

“`swift
lazy var srrequest: VNCoreMLRequest = {
let model = srmodel().model
let vnModel = try! VNCoreMLModel(for: model)
let request = VNCoreMLRequest(model: vnModel)
request.imageCropAndScaleOption = .scaleFill
return request
}()
“`

2、SemanticImageで動画フレームを処理

https://github.com/john-rocky/

元記事を表示

[Flutter]初心者でもできる無限スクロールの実装方法

一覧表示画面で、スクロールすると次々にデータを読み込んでいく、無限スクロールを簡単に作る方法を紹介します。
無限スクロールを作る方法がいろいろあるのですが、初心者の自分でもできたのでこれが一番簡単かと思います。

## データを取得するAPIを準備する
今回はAPI経由でデータを取得し、一覧表示するのでまずAPIを準備します。
今回は、以下のswaggerで記載したtitleのみが一覧で返されるAPIを用意しました。次のデータがあれば、レスポンスのoffsetに次の位置が返り、なければ返りません。

“`yml:sample.yml
openapi: 3.0.0
info:
title: sample
version: ‘1.0’
description: sample
contact:
name: murapon
servers:
– url: ‘http://localhost:31180’
paths:
/list:
get:
operationId: get-list
summary: 一覧取得
de

元記事を表示

iOSで画像の類似度を計算する

#iOSで画像間の類似度を数値化する方法です

どちらが上の画像に似ている?

#にている画像を探したい

#VisionFeaturePrintが使える
VisionFeaturePrintは、たくさんの画像で学習した機械学習モデルによって画像の特徴

元記事を表示

[iOS] 動画像テクスチャを使って時系列変化を表示する AR アプリを作る

![pict1_1024.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420332/4d5c6778-0028-50b2-83d8-80a1b0c5fc94.jpeg)

iOS / iPadOS デバイスで動作する AR(拡張現実)アプリにおいて、仮想オブジェクトの表面素材(マテリアル)として動画像を使うことで、AR 体験に動きのある風景を取り入れたり、時系列データのビジュアル化に応用することができます.iOS SDK の ARKit と RealityKit を使うと数行のコードでこれを実現することができます.この記事では、NASA earth observatory の動画像(衛星データを元にした地球環境変化のビジュアライズ動画像)を例にとって AR 表示する方法を説明します.

# 仕組み

RealityKit の VideoMaterial 機能を使って動画像を AR 空間の仮想オブジェクトのマテリアルとして再生します.この VideoMaterial 機能は WWDC20 で紹介された

元記事を表示

MacbookでFinderを終了させたい

## はじめに
Macbookを使っていてとても気になること、それはFinderアプリが常に起動していること。
Windowsでいうエクスプローラーの位置づけにあるFinderアプリはたしかによく使うのだが、常に起動状態にあることがモヤモヤしている人も多いのでは。
そんな問題を解決すべく方法を今回はシェアします。
一瞬です。

## Finderアプリの終了する設定

“`
defaults write com.apple.Finder QuitMenuItem -bool true
“`

ターミナルを開いて、上のコマンドを実行するだけです。

このコマンドを実行し、パソコンを再起動すると、Finderアプリのメニューに「Finderを終了」という項目が追加され、⌘+QでFinderを終了できるようになります。

ちなみに以下のコマンドを実行すれば元の状態に戻ります。

“`
defaults write com.apple.Finder QuitMenuItem -bool no
“`

以上、Finderを終了させる方法でした。

元記事を表示

iOS用アプリのストア掲載についての備忘録

IT業界でエンジニアの卵として働いている小生が、iOS用アプリのストア掲載について毎回手順を忘れるので備忘録として手順を記録します。今回のケースはコーディングを外注しており、それをgitで管理しそれをクローンするところから始まります。すでにAppleIDの登録やAppleDeveloperでのアプリの登録は済んでいるものとし省略します。

1. gitからリポジトリurlをクローンしXcodeで呼び出す
1. 証明書要求の作成(mac側での操作)
1. Certificate(証明書)の作成
1. プロビジョニングプロファイルの作成
1. Xcodeでのビルド
1. ストアアップロード

![iosビルド図.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1508384/117c7e14-a855-444e-7b3a-ba63b3cf4f1e.jpeg)

## 1. gitからリポジトリurlをクローンしXcodeで呼び出す
バージョン管理システムであるgitで共有された、、サーバーリポジトリを

元記事を表示

UnityAds使用アプリにてiOS14以降のATT対応で安心してたらGDPR絡みでリジェクトされた話

#はじめに
これまでに買いきりアプリを作った経験はあるものの、広告収入のアプリは経験ないもので、
iOS14.5からATT(App Tracking Transparency)対応が必要だと言われてもなにそれ(?)状態でした。
「iOS14.5 UnityAds ATT」あたりでググって先人たちの知恵を拝借しなんとかなった結果、
とりあえず2021年12月にリリースできた拙作がコチラ↓(まず宣伝!)

https://play.google.com/store/apps/details?id=jp.Acodebank.JigsawPuzzle&hl=ja

https://apps.apple.com/jp/app/%E3%83%91%E3%82%BA%E3%83%AA%E3%82%A3%E3%83%8F%E3%82%A6%E3%82%B9/id1591404180

万全を期して作ったつもりですが不具合があったり、様々な都合で仕様変更があったりで
アプリのバージョンアップをすることに……

とは言うものの「一度審査を通過しているから大丈夫だろう」なんて思っていました。

Unity

元記事を表示

【2022年1月】【AppleStore審査】審査までの手順が微妙に変わってる。

#AppleStoreConnectの審査提出ページが変わってる。

AppleStoreConnectの右上が`審査へ提出`が`審査用に提出`になっていたり、プロモーションのテキストが`一番上`になってたり変わってます。
今まで通り右上から`審査へ提出`を押すだけでは、`審査に進みません!`
今までは`このバージョンの最新情報`の入力欄が一番上だったのが`中段`に移動したりと変わってますので記載する箇所には`要注意です!`

# 新しい審査提出手順

1.必要情報を記載して`保存`する。
ファイル名

2.`審査用に追加`を押下する。
ファイル名iOSアプリにApple Music機能を追加(音楽の検索と再生) (MusicKit)

これまでは、楽曲を検索するにはApple Music APIを使用する必要がありました。新たに発表されたiOSのMusicKitフレームワークによって、楽曲を検索したり、アルバム内の曲をすべてリストアップしたり、楽曲を再生したりするためのリクエストをより簡単に行えるようになりました。

このフレームワークは、Androidシステムでも利用可能です。この記事では、これについては触れません。

MusicKitの新たなフレームワークには、新しくなったSwiftの並行処理も採用されています。データのリクエストに対するレスポンスを待つには、`await`コマンドを使用することができます。

この記事では、`Apple Music`のカタログを検索し、音楽を再生するアプリの構築について説明します。

## 使用事例

Appleによると、可能となる使用事例にはゲーム内のBGM、トレーニング中の音楽、ソーシャルメディアなどが含まれています(しかしながら、ご使用の際にはライセンスや著作権などに関して、常にご確認をいただくようお願いします)。

## 最初にEntitlementを追加する

最初に

元記事を表示

OTHERカテゴリの最新記事