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

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

【iOS】古いMacとXcodeでバイナリを作ったらアプリが起動できなくなった話

# 概要
2020年9月末に社内配布用にバイナリ作成をしたところ、iOS13でアプリが起動できなくなってしまった。
(iOS11では起動できていた。)

## バイナリ作成環境
Mac Mojave
Xcode 9.4

## 調査
バイナリ作成者のKeychainを確認したところ、バイナリ作成時の署名に利用した証明書のステータスが「信頼されていません」になっていた。
証明書の問題かと思い、証明書を作り直すがステータスは変わらず、バイナリを作ってもやはりクラッシュのまま…

## 原因
一言で言うと、作業者のMacの中間証明書更新漏れ
\(^o^)/
Appleからのお知らせにもありました。
Xcode 11.4.1以降を使用していたら自動で取得できている模様。
新しいXcodeを使っていない開発者は自分で取得する必要があるってことですね。

## まとめ
最新の中間証明書を取得してバイナリ作成したら動きました。
やはり、古いシステムは使い続けてもいいことないです。(当たり前)
皆さんは定期的にバージョンアップしましょう。

2021年内にプッシュ通知証明書の更新計画もあるようで

元記事を表示

UnityからXcodeにしてビルドする関連(2021年5月)

# やったこと
・Unityで2Dゲームを制作
・Admobで広告を表示(iOS)
Unityでアプリを作るまでは良かったが、その後が大変だった。

# 自分の環境
・MacOS catalina
・Xcode 12.4
・Unity 2019.2.12f1 Personal
・Google Mobile Ads Unity Plugin v5.4.0
・CocoaPods 1.10.1

# Admob広告を表示させる
GoogleMobileAds-v5.4.0.unitypackageをダブルクリックしてすべてチェックが入っていることを確認してimport
その他メディエーションしている場合は各種Adaptorをimportした後、iOSリゾルバを設定する。
Unity > Assets > External Dependency Manager > iOS resolver > settings
にて、CocoaPodsIntegration のプルダウンから
Xcode Project Add CocoaPods to the Xcode Project を選ぶ。

#アプリ

元記事を表示

【iOS】Push通知用証明書とプロビジョニングプロファイルの作成(2021年版)

#はじめに
スマホで普段何気なく目にしているPush通知。

実はPush通知を利用するためにiOSもAndroidも事前準備が必要です。

テストでもPush通知の確認が必要なことがたくさんありますよね。
お客さんによってはコチラで準備をする必要があります。

そんな時に困らないように、Push通知を利用するために準備しなくてはならないものを書いてみます。

今回は、ややこしいiOS版の準備について書いてみます。

#準備するもの
●Mac ※1
●Apple Developer Programの登録(有料です)

※1 Mac OS 10.15以上推奨

#作成の流れ
1.CSRファイルと開発用証明書の作成
2.AppIDの作成
3.プロビジョニングプロファイルの作成
4.APNs用の証明書作成

文字で書くのは簡単ですね(´・ω・`)
では、実際に作成してみましょう。

#CSRファイルと開発用証明書の作成

#####1.キーチェーンアクセスを起動
#####2.画面左上の「キーチェーンアクセス」というメニューか

元記事を表示

[iOS]写真へのアクセスレベル「追加のみ」「閲覧・追加両方」を1アプリ内に混在させる時どうなるか

## 基本事項

iOSアプリの写真(カメラロールなど)へのアクセス許諾についての基本は以下をご覧ください

[WWDC2020での許諾周りのアップデートまとめ](https://qiita.com/akatsuki174/items/cc59203c2f3b1fe83573#写真)

簡単にまとめると以下のようになります。

### iOS13以前
写真へのアクセス権限は一種類(閲覧・追加両方)しかなく、その許諾ダイアログは二択のダイアログである。
![2択ダイアログ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392332/65f7a47a-421d-b994-084b-268f4a6a57fb.png)

許諾の状態をチェックする時は[`PHAuthorizationStatus`](https://developer.apple.com/documentation/photokit/phauthorizationstatus)を使う。

ユーザーに許諾を得る時は[`requestAuthori

元記事を表示

【Swift】画面遷移で責務分離する

#はじめに
今回は、ViewControllerで画面遷移をおこなうときに責務を分離して、変更に強くなるようなコードを紹介したいと思います。
以下のようなアプリを例として作ってみたいと思います。

![ezgif.com-gif-maker (2).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/33a38e1a-a207-ca33-13b3-ab6f583b28fd.gif)

#GitHub

https://github.com/0429oonishi/ScreenTransition-practice

#共通部分
以下のような階層にしました
![ScreenShot 2021-05-13 8.03.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/470ec79a-2420-fd79-6bdb-02277701f468.png)

“`swift:User
struct User

元記事を表示

【iOS】Safariの広告をブロックしたい

#hostsを編集。【要牢破り】

#### hostsファイル
[**hosts**](https://ja.m.wikipedia.org/wiki/Hosts)ファイルは[DNS](https://ja.m.wikipedia.org/wiki/Domain_Name_System)より優先されるので代替サーバーのアドレスを記載したりしますが、目的のサーバーをデバイス自身にする事で、ネット上にサーバーが見つからないようにできます。

例えば[**Qiita**](https://qiita.com/)のアドレスを次のようにhostsに書き加えると、Qiitaにアクセスできなくなります。
`
127.0.0.1 localhost
::1 localhost
127.0.0.1 qiita.com
::1 qiita.com`

解説

– IPv4のアドレス`127.0.0.1`とIPv6のアドレス`::1`を`localhost`として宣言してるので、`

元記事を表示

週刊 DICOMデコーダーを創る (2)

##本日はtag, VR, lengthを読み取ってみる
需要の程は不明ですが,知識の整理も兼ねて今日も作っていきます.

今日はtag, VR, 値長さを読み取るところまでやってみます.
前回はViewController.swiftにまとめていましたが,本格的に読み取り始めることにするので,新たにDicomDataクラスを作成します.

“`DicomData.swift
class DicomData{

var dicomData : Data!

init(withData data:Data) {
dicomData = data
// dicomデータかチェック
// ヘッダは128バイトのファイルプリアンブル
// 続く4バイトにプレフィックスが続く
if dicomData.count < 132{ print("file size error") return } if d

元記事を表示

iOS で体温記録する

体調管理の一環で、体温を記録しようと思っても、
どのアプリを選んだら良いか迷ってしまう、という私のための記事です。

↓こんなことがやりたい
![ios_shortcut_011.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59810/60165a8d-f32f-53bf-0ef0-565d142e6a6a.jpeg)

> **おことわり。**
> 体温情報は、個人の健康に関連する機微情報の一つだと考えています。どこに保存すべきか、そもそも保存するべきかの判断は、個々人で配慮いただければと思います。本記事の趣旨としては、iOS ショートカットでこんな使い方もできる、というアイデアの一例のご紹介です。

閑話休題。

いわゆる普通の体温計 (水銀じゃなくても) で体温測るのですが、記録をどこに残そうか、そのためにわざわざアプリ入れるのも、高機能な体温計を探すのもなぁ・・

そうだ、ヘルスケアアプリに直で記録してしまえ。

iPhone などの iOS の機能の **ショートカット** と **ヘルス

元記事を表示

SwiftUIで書くiOSアプリハンズオン(QiitaClientを作ってみよう)

SwiftUIを使ったハンズオン用に記事を作成しました

## 使用するAPI
今回はQiitaAPiを題材とします。([ドキュメント](https://qiita.com/api/v2/docs))

登録不要で使えて、例えば、 https://qiita.com//api/v2/items で、投稿を取得できます。

“`javascript
[{
rendered_body: “…”,
coediting: false,
comments_count: 0,
created_at: “2017-11-09T22:50:51+09:00”,
group: null,
id: “fe412a67b64e793d138b”,
likes_count: 0,
private: false,
reactions_count: 0,
tags: [{
name: “processing”,
versions: []
},
{

元記事を表示

Flutter flutter_pdfview 使い方

#内容
flutter_pdfviewの使い方の忘却録。

#開発環境

PC : macOS Big Sur
エディター : Visual Studio Code

Flutter 1.22.1
flutter_pdfview 1.0.4

#コード

まずは、pubspec.yamlにパッケージを追加
あとは、読み込みたいPDFファイルも追加

“`pubspec.yaml
dependencies:
flutter:
sdk: flutter
flutter_pdfview: ^1.0.4 <- 追加 ・ ・ ・ assets: - sample.pdf <- 追加 ``` ※Info.plistの修正は今回は必要ないので、追記しない ###●ファイルパスを使用する方法 サンプルではassetsフォルダのファイルを読み込んで、ローカルに保存し、パスを指定している。 ```PDFScreen.dart class PDFScreen extends StatefulWidget { fina

元記事を表示

Android, iOSで文字の幅を取得する方法

# Android

“`test.kt
val paint = TextPaint().also {
it.textSize = 10
if (!isInEditMode) {
it.typeface = ResourcesCompat.getFont(context, R.font.your_font)
}
}
paint.measureText(“hoge”)
“`

# iOS

“`UIFont+.swift
import UIKit

extension UIFont {
/// テキストのwidthを取得する
func measureText(text: String) -> CGFloat {
let str = NSString(string: text)
return str.size(withAttributes: [.font: self]).width
}
}
“`

“`test.swift
let font = UIFont(name:”your_fo

元記事を表示

SwiftUI Tutorialsの解説と振り返り

# この記事は投稿は何?
Appleの[SwiftUI Tutorials](https://developer.apple.com/tutorials/swiftui/)を一通り実践したので、振り返ります。

## 実行環境
macOS 11.3.1
Xcode 12.5
Swift 5.4

# SwiftUI Tutorials
全部で3つのチャプターから構成されます。
それぞれのチャプターは、3つのセクションで構成されています。
ここでは最初のチャプターを振り返ります。

## Section 1
[Create a New Project and Explore the Canvas]()では、ビューを構築するための基本的な方法を学びます。
下図は、このSection1で作成したビューをツリー構造にしたものです。

![SwiftUI Tutorials1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70476/3269205a-8d55-b816-f513-98164dbfc987.j

元記事を表示

Swift だけで Unity の iOS の Native Plugin を作る

# Swift だけで Unity の iOS の Native Plugin を作る
* Unity は Native Plugin を作成することで、Unity から提供されていない、OS 固有の機能を使用することができます
* 例えば iOS では、Bluetooth や MP4 動画の作成、アルバムの利用などが出来るようになります
* これらの Native の機能を Swift で実装し、C# から呼び出す手順です
* Swift Package Manager (以下 SwiftPM) を使って、Framework を作成し、Unity に組み込みます
* ついでに、ライブラリの開発用の Native のアプリターゲットを作成します
* __Framework 化するメリット__
* PostProcess の設定が不要です
* Unity の Inspector 上で Embed の設定が完了します
* 合わせて Native でアプリターゲットを実装する事で、動作確認のために Unity のビルドをせずに、ライブラリの開発が可能です
* 今回の話

元記事を表示

【Swift】UserDefaultsを扱いやすくする

#はじめに
今回はUserDefaultsをジェネリクスとプロトコルを使って少し工夫します。

#やりたいこと
普通は以下のように使うと思います。

“`swift
UserDefaults.standard.set(“サンプル”, forKey: “sampleKey”) // 書き込み
let text = UserDefaults.standard.string(forKey: “sampleKey”) // 読み込み
“`

今回は以下のように、forKeyを工夫してアクセスしやすくします。

“`swift
let userDefault = UserDefault()
userDefault.set(true, forKey: .dog)
let bool = userDefault.bool(forKey: .dog)
“`

一番簡単なのは、以下のようにStringを拡張する方法です。

“`swift
extension String {
static var dog: String { return

元記事を表示

アプリ開発の勉強記録1

###スタンフォード大学の講義
– SwiftUIによるアプリ開発
– ある程度何らかのプログラミング言語を知っている人向け
– 1〜2時間の講義が14回(上がっている動画をカウントした)
– 音声:英語、字幕:英語

Lecture 1: Course Logistics and Introduction to SwiftUI

###内容
– やる:Swift言語、関数型プログラミング、リアクティブUI開発(MVVM含)
– やらない:UIKit、テスト手法
– Xcodeインストールし、He

元記事を表示

【Guideline 2.1 – Information Needed】IDFA関連のApple審査リジェクト対処法

アップデート時にAppleの審査で、「Guideline 2.1 – Information Needed」によってリジェクトされました。
「情報が足りない」という内容で、今回はiOS14.5で必須となっているIDFA取得に関連していました。
同様のリジェクトを受ける可能性がある方もいると思うので、記録しておきます。

## Guideline 2.1 – Information Needed
「Information Needed」についたコメントは以下の通りです。
>We’re looking forward to completing the review of your app, but we need more information to continue. Specifically, we noticed that your app uses the AppTrackingTransparency framework, but we haven’t been able to locate the App Tracking Transparency permission r

元記事を表示

【Swift】RxSwift勉強してみたPart9

#はじめに
[前回](https://qiita.com/REON/items/8ded3fcc1151d5776da8)
今回はOperatorをいくつか練習していきます

#Operators

##Filtering Operators

###ignoreElements
onNextを無視する

“`swift
let publishSubject = PublishSubject()
let disposeBag = DisposeBag()
publishSubject
.ignoreElements()
.subscribe { _ in
print(“subscription is called”)
}
.disposed(by: disposeBag)

publishSubject.onNext(“1”) // 呼ばれない
publishSubject.onNext(“2”) // 呼ばれない
publishSubject.onNext(“3”) // 呼ばれない
publishSubject.on

元記事を表示

【Swift】AlamofireでAPI通信をする

#はじめに
今回はQiitaAPIを叩いてAlamofireで通信していみたいと思います。

#作るもの

![ScreenShot 2021-05-11 3.31.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/4ecaffea-f77c-7d98-3d53-14f7bc062a76.png)

#GitHub

https://github.com/0429oonishi/Alamofire-practice

#実装

モデル

“`swift
struct Article: Codable {
let title: String
let user: User
}

struct User: Codable {
let id: String
}
“`

コントローラー

“`swift
final class ArticleListViewController: UIViewController {

@IBOutlet privat

元記事を表示

週刊 DICOMデコーダーを創る (1) 創刊号

##DICOMデコーダーの作成
医療用画像を扱う上でDICOMは避けては通ることができない形式です.
近年はPythonなど様々な言語で使用可能なDICOMプラグインが登場しているし,そもそもDICOM→扱いやすい形式へ変換可能なソフトウェアはフリーでもたくさんある.なので,今更自力でDICOMを表示することに需要はないかもしれない・・・

DICOM規格は経年的にどんどん膨れ上がっており,その全体を理解することや,すべてを実装することは個人の力では到底できない.(少なくとも自分には)(なのでライブラリを使え,と言う話だが・・・)
そんな中でも,**DICOMを実装したい!!と考えている人がいるはず!**と期待し,少しでも誰かの役に立つといいなと思い,DICOMファイルのデコーダーの基礎部分を何回かに分けて実装したいと思います.(最後にいきなりズルしてますが)

##DICOMデータ
DICOMデータは1つのファイルに

1. 患者名,患者ID,生年月日,年齢,性別など患者情報
1. 検査方法(CT, レントゲン, エコー, カテーテル, MRI, …),検査日,検査時間,使用した

元記事を表示

NavigationBarのボタンの位置を左右に動かす方法

こんにちは!

最近のアプリでよく見る、NavigationBarのleftやrightにボタンを複数追加しているようなUI、
実際あの手のUIを作る場合、Customで作るかそれっぽいのをViewで作ったりなどなど、ちょっと手間のかかるやり方があったりしますよね。

今回はそんなことしないで済む方法を見つけたので、ちょっと裏技的な感じになるのかもしれませんが、似たような記事がなかったので、書くことにしました。実装の参考にして頂ければと思います。

## 結論
– ButtonのItemImageのInsetsを調節すればそれなりに見える

## 調べたこと

いつからか正確にはわかりませんがNavigationBarのItemを複数設置する場合画像のようになっておりまして
UIButtonBarStackViewというViewが存在するので何も考えずに、 BarButtonItemにButtonを追加していくと、自動的にボタン同士のmarginが決まってしまいます。
(画像の青くなっているものがUIButtonBarStackViewです)

元記事を表示

OTHERカテゴリの最新記事