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

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

Interface Builderの静的解析ツール「IBLinter」のセットアップ方法

## 「IBLinter」とは?

Interface Builder(以下「IB」と呼ぶ)用の静的解析ツールです。

## 環境

– OS:macOS Big Sur 11.1
– Xcode:12.3 (12C33)
– Swift:5.3.2
– IBLinter:0.4.25

## セットアップ

### インストール

Mintからインストールします。

“`diff:Mintfile
+ IBDecodable/IBLinter@0.4.25
“`

“`shell-session
$ mint bootstrap
“`

### ビルド時に静的解析を行うようにする

Xcodeで対象のプロジェクトファイルを開く>TARGETS
→対象のターゲットを選択>[Build Phases]タブ
→左上にある[+]をクリック>New Run Script Phase
Run Scriptに以下のスクリプトを記述すると、ビルド時に静的解析されるようになります。

“`shell-session
if which mint >/dev/null; then
mint

元記事を表示

Xcodeで「No accounts with iTunes Connect access」が出た場合

# はじめに
XcodeでアーカイブしたあとにAppConnectへUploadするタイミングで下記のエラーに当たった。
`No accounts with iTunes Connect access have been found for the team “自分のID”. App Store Connect access is required for App Store Connect distribution.`

![sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1022988/78d23f6f-e3fe-61b6-b473-ac45f3c9282f.png)
先日まで通常通りに出来てたのに突然このようになったので、証明書やアカウントの問題なのかなーと調べたけど原因不明でした。
PCはサーバールーム保管で再起動すると会社に行かなければならないので、`ログオフ`を試した所直りました。
おそらく再起動でも問題ないと思いますが、突然なりますので注意が必要です。

元記事を表示

Swiftのdelegateについて

# はじめに
`TableViewCell`内にボタンを配置した際の、`delegate`についての備忘録になります。

# 動作環境
【Xcode】Version 12.3
【Swift】Version 5.3.2

# 実装後の画面
![スクリーンショット 2021-02-24 23.31.48(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/692635/a14f7eff-1438-e0e5-9f15-5fa6e1ed22ab.png)

“`
上のセルから順番にボタンをタップした際の出力結果

0番目のボタンがタップされました!
1番目のボタンがタップされました!
2番目のボタンがタップされました!
3番目のボタンがタップされました!
4番目のボタンがタップされました!
“`

# 実装コード
“`swift:TableViewCell.swift
import UIKit

// (1)
protocol TableViewCellDelegate {
func butt

元記事を表示

【Swift】使い回しできるコードまとめ

`xcode 12.4`
`iOS 14.0`
これから`Swift`でアプリを作成するにあたり、使い回せそうなコードを自分の都合でまとめました。

# ライブラリ
`pod`の準備

“`ターミナル
pod init

pod ‘Firebase’
pod ‘Firebase/Auth’
pod ‘Firebase/Storage’
pod ‘Firebase/Firestore’
pod ‘SDWebImage’
pod “ViewAnimator”
pod ‘ActiveLabel’

pod install
“`
# Firebase/Authを利用したログイン機能の実装(匿名ログイン)
Firebaseで`GoogleServise-Info.plist`をダウンロードし、ファイル内に配置したら…

“`AppDelegate.swift
import Firebase

class AppDelegate: UIResponder, UIApplicationDelegate {
//(中略)
func application(_ application: U

元記事を表示

他で使用予定のないメソッドをprivate extensionにして分ける

リファクタリングの一環で使えそうなことを、メモがてら残します。

### 例

“`swift
let alertVC = UIAlertController(title: “select cell”, message: “\(user[“name”] as! String) \n \(user[“atName”] as! String)”, preferredStyle: .alert)
alertVC.addAction(UIAlertAction(title: “OK”, style: .default, handler: nil))
self.present(alertVC, animated: true, completion: nil)
“`
#### 問題点
– 他で使用予定が無いのに呼び出し可能
– 色々な条件でアラートを出したい場合、汎用性が無い

### private extensionにして分ける

“`swift
private extension ViewController {
//アラートを出す処理
func showAl

元記事を表示

【iOS】個人情報交換 (.p12)が選択できない件について

####リモートプッシュ通知を実装する際に少し引っかかってしまい、割と同じ悩みの方が多かったので記事にしておきます。
リモートプッシュ通知を実装する際にキーチェーンアクセスにて証明書を書き出す時のフォーマットとして個人情報交換 (.p12)を選択する必要があるのですが、こちらが選択できないことがあります。
#####その際は左のキーチェーン欄にてログインが選択されているか、上の項目欄で自分の証明書が選択されているかを確認して下さい。
![スクリーンショット 2021-02-24 17.37.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656839/b4df1cf3-f2c9-bb55-ae2b-28e74123ee37.png)
![スクリーンショット 2021-02-24 17.37.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656839/f0a0343c-025c-ac09-9576-28d48fc

元記事を表示

React nativeでios/androidから発信する方法

##React nativeでios/androidから発信する方法

React nativeでios/androidから発信する方法を調べる機会がありましたので、調べた情報をここにまとめておこうと思います。

##参考にしたサイト
検索しましたが、今現在でQiitaで記載されている記事を見つけることができず、こちらの記事を中心に参考にしました。
[React Nativeで電話をかける方法](https://www.it-swarm.jp.net/ja/react-native/react-native%E3%81%A7%E9%9B%BB%E8%A9%B1%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/805783300/)

そこで2パターンの発信方法がありましたので、以下に記載します

##発信機能の構築 パターン①:Linkingを用いる方法
Linkingを用いて電話をかけます
まずは実際のコード例を以下に記載します。

“`react:CallActivity.jsx
import { Linking } f

元記事を表示

【iOS】シミュレータでPUSH通知を表示する

## 環境
– Xcode Version 12.3 (12C33)
– macOS Catalina 10.15.7
– Firebase/Messaging 7.1.0
– **Firebase Cloud Messaging によるリモート通知受信環境を構築済み**

## 目的
– OSのバージョンごとに通知をタップして起動した際の挙動を確認したい

## 実現方法
1. プロジェクトの TARGET > Signing & Capabilities から Bundle Identifier を確認
2. 以下のようなファイルを作成し拡張子を「.apns」とし保存
3. 起動中のシミュレータにドラッグアンドドロップ

“`json:test.apns
{
“Simulator Target Bundle”: “(アプリのバンドルID)”,
“aps”: {
“alert”: {
“title”: “通知テストタイトル”,
“body”: “通知テストメッセージ”
}

元記事を表示

Xcode Gen を初めて使ってみる

チーム開発を行っているとき、プロジェクトファイルがよくコンフリクトします。

![confrict.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139353/ccad7ddc-b7ee-842f-dff2-d4f9f3939bd0.png)
その問題を解決する方法があります。

参考:

– [Xcodeプロジェクトの生成ツール「XcodeGen」のセットアップ&操作方法](https://qiita.com/uhooi/items/16a870eaae24b46103fb)
– [既存のプロジェクトを XcodeGen に移行する](https://qiita.com/gin0606/items/64855bb96570d875f231)

本記事は、他の記事を見ながら実際にやってみた、いわゆる備忘録となっています。
「まだ情報は集まってない…」
「とりあえず試したい…」
そんな方には役立てられるかと。

## 目次
Qiita なら必要ないかと思うけど一応

– [Xcode Gen とは](

元記事を表示

SwiftのMVCについて

###はじめに
自分用メモです。MVCについてまとめます。(随時更新予定)

###Modelの役割
・データ構造の表現
・WebAPIとのやりとり
・ローカルデーターベースへの保存
・データの振る舞いロジック
(UIやレイアウトに関するロジックは保持しない)

###Viewの役割
・UIの表示
・データを表示するようなUIの場合Controllerからデータを受け取りUIに反映
(データ構造に関する一切のロジックを持たない)

###Controllerの役割
・Modelからデータを受け取り、ViewにわたしUIを更新する
・ユーザーインタラクションをViewから受け取り、適切なアクションを処理する
・ViewControllerにしかできないロジック処理を行う(ライクサイクルや画面遷移など)

元記事を表示

[SwiftUI] 画面遷移に関して

今回はSwiftUIの画面遷移に関して解説していきます。

#遷移後画面の作成

command + Nで新たなファイルを作成します。
SwiftUI Viewを選択してください。
その後createで作成します。

“`swift

import SwiftUI

struct SecondView: View {
var body: some View {
Text(“画面遷移出来たよ!”)
}
}

struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SecondView()
}
}

“`

上のコードは`SecondView`とし、Textも”画面遷移出来たよ!”と変更しましたが変えても変えなくてもどちらでも良いです。

#遷移前画面の作成

“`swift

import SwiftUI

struct ContentView: View {
var body: some View {

元記事を表示

SwiftでClosureを用いてAPIを扱う

###はじめに
今回は自分用メモです。
質問などはコメントのところで受け付けています!

###今回したいこと
closureを用いてServerの通信が完了した後、成功したらUIを更新、失敗したらエラーアラートを出す処理を作る。
ネットワークエラーが発生した時のエラー内容をenumで書き出しておく。

“`Swift
enum NetworkError: Error, CustomStringConvertible {
case unknown
case invalidResponse
case invalidURL
var description: String {
switch self {
case .unknown: return “不明なエラーです”
case .invalidResponse: return “不正なレスポンスです”
case .invalidURL: return “不正なURLです”
}
}
}
“`
次に、APIClien

元記事を表示

neal – 近辺飲食店検索アプリ について

![neal-serviceimage](https://user-images.githubusercontent.com/64912886/105801408-6b259100-5fdc-11eb-887e-dc3ff9209435.png)
 
  この度は、nealをご利用いただきありがとうございます。こちらでは、nealの利用方法であったり、作成秘話などについて記載させていただいております。nealを利用する際の助けになると嬉しいです。

# ・ neal – 近辺飲食店検索アプリ とは??
 現在地から1 km圏内にある飲食店を提示してくれるモバイルアプリケーションとなります。リストのタブでは、店名はもちろん画像が掲載されている店舗からはお店の雰囲気を掴んだり、詳細ページからは、メニューや店舗予約なども行うことができます。

# ・ 機能
### 1. 近辺の飲食店をリストで確認
 先述にもありますが、現在地から1 km圏内にある飲食店を最大15店舗程ピックアップし、リストに表示されます。店舗名、ジャンル(居酒屋、カフェなど)、営業時間などが表示されます。気になった

元記事を表示

Swiftにおける配列操作まとめ

#目次
[はじめに](#はじめに)
[部分置換](#部分置換)
[部分配列の型](#部分配列の型)
[配列のプロパティ](#配列のプロパティ)
[配列のメソッド](#配列のメソッド)
[シーケンス操作](#シーケンス操作)
[最後に](#最後に)

#はじめに
配列操作のまとめです。主に、部分配列、配列のプロパティ、メソッド、シーケンス操作についてまとめています。
SequenceとCollectionや基本的な配列のアクセス方法、その他配列以外の知識が必要なものは今回は説明していません。

#部分置換
“`swift
var a = [“赤”, “青”, “緑”, “白”, “黒”]
//①
a[1…1] = [“橙”, “茶”, “紫”]
print(a) // [“赤”, “橙”, “茶”, “紫”, “緑”, “白”, “黒”]
//②
a[2…3] = [“黄”]
print(a) // [“赤”, “橙”, “黄”, “緑”, “白”, “黒”]
//③
a[1…2] = []
print(a) // [“赤”, “緑”, “白”, “黒”]
//④
a[2.

元記事を表示

【SwiftUI】TabViewの基本的な使い方

先日、私にとって初のiOSアプリがリリースとなりましたので、開発に使った技術を細分化してアウトプットしていこうかなと思います。良かったらインストールしてみてください。

[わかりすと -勉強サポートアプリ-](https://apps.apple.com/jp/app/id1553876980)

# TabViewとは

複数の子ビューを切り替えることのできるビュー。

[公式リファレンス](https://developer.apple.com/documentation/swiftui/tabview)

# 実際の動作

# コード

上の動

元記事を表示

【iOS】いつの間にかサポート外OSの端末で新規インストールできなくなった

# 概要
iOSアプリ開発で悩ましい、サポートiOSの終了において、過去と挙動が変わっていたためまとめました。
サポートを切る=IPHONEOS_DEPLOYMENT_TARGETでOSバージョンを変更する、の前提です。

# 想定と事象
想定

| OS | 新規インストール |
|—|—|
| 対象外 | 対応しているうちの最新バージョンが落ちる |
| 対象内| 最新バージョンが落ちる |

事象

| OS | 新規インストール |
|—|—|
| 対象外 | AppSotoreでアプリ名を検索:ヒットしない
サイトからAppStoreに誘導:「iOSXX.X以降が必要です。iPhone,iPad,およびiPod touchに対応。」という文言が表示されており、ダウンロードボタンは非活性|
| 対象内| 最新バージョンが落ちる |

# 過去(2013~)はできてた
> 今日(米国時間9/17)、あるRedditユーザーが、App StoreでiOSの旧バージョンを使っているユーザーが、互換性のある最後のバージョンのアプリをダウン

元記事を表示

UITextFieldでキーボードのサジェストとフォーカスの動きが意図しない件について

# 事の始まり
サービスの新規登録画面を作り直すことになりました。

内容としては簡単なもので、項目は以下の通り。
・メールアドレス入力
・パスワード入力
・パスワード再入力

`UITextField`をパラパラっと設置して、キーボードのタイプを指定して、

最後にパスワードは見えないように`isSecureTextEntry`を忘れずに。

簡単ですね?!!

“`SignUpViewController.swift
class SignUpViewController: UIViewController {
@IBOutlet private weak var emailAddressText: UITextField!
@IBOutlet private weak var passwordText: UITextField!
@IBOutlet private weak var rePasswordText: UITextField!

override func viewDidLoad() {
super.viewDidLoa

元記事を表示

【SwiftUI】APIとJSONで取得したものをList表示する方法【tutorial】

## 今回作成するアプリ
![1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517666/28f0f0ff-6165-e224-6899-ac88b99f6fec.gif)
## はじめに
今回は初めてSwiftUIでAPIを叩いてJSONを取得し、List表示する方法をご紹介したいと思います。
よってこの記事は、SwiftUIは触ったことがあるが、APIやJSONは初めてと言う方向けの記事です。
尚、APIやJSONはなんぞやと言うことについては、様々な良記事が沢山ありますのでそちらを参照下さい。
## 環境
・ /macOS Big Sur 11.3
・ SwiftUI : 2.0
・ Xcode : 12.4
## サンプルJSON
今回は初めてJSONを取得し、Listで表示させる為、オーソドックスな天気APIとかではなく、様々なJSONのサンプルが用意されている[jsonplaceholder](https://jsonplaceholder.typicode.com/)を使用してきます。

元記事を表示

【Swift】Compact状態のDatePickerに戻る処理を行う

##新しいDatePicker
iOS14からどうやらDatePickerの挙動が変わったらしく、今までのドラムロール式の日付・日時選択からカレンダー表示の様な選択方法が選べるようになりました(従来のDatePickerも引き続き使用出来る)。
しかしこのポップアップされるDatePickerは日付を選択時に一つ前に戻る機能が備わって居らず自分で書いて選択時に戻る処理を入れてあげる必要がある。
![CompactDatePickerが表示されたiPhoneSimulator](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176908/d9a5c518-76be-c63c-bab2-bc7c2d0b940b.png)

##コード
“`Swift:ViewController
@IBAction func CompactDatePicker(_ sender: UIDatePicker) {
// 日付選択時に選択前の画面に戻る
self.dismiss(animated: true, comp

元記事を表示

Multipeer ConnectivityでのP2P通信(Swift)

![Xcode-12](https://img.shields.io/badge/Xcode-12-brightgreen) ![Swift-5.3](https://img.shields.io/badge/Swift-5.3-brightgreen) ![iOS-14](https://img.shields.io/badge/iOS-14-brightgreen)

## はじめに
iOS の端末間で通信とかしたいなと思い [Multipeer Connectivity](https://developer.apple.com/documentation/multipeerconnectivity) について調べました。

ソース :point_right: [GitHub](https://github.com/adventam10/MultipeerConnectivitySample)

## Multipeer Connectivityとは
Multipeer Connectivity は Wi-Fi と Bluetooth を使って iOS 端末間の近距離通信(ピア・ツ

元記事を表示

OTHERカテゴリの最新記事