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

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

React NativeでMapboxを使ったiOSアプリを作る

はじめまして!

パーソルプロセス&テクノロジー株式会社(以下パーソルP&T)、システムソリューション(SSOL)事業部所属の堀江です。

私はモビリティソリューションデザインチームに所属しており、**モビリティ(ここでは移動手段全般)に関するサービスを考えたり、アプリを構築したりしております。**

いわゆる**「MaaS」**に取り組んでおります。

私たちが「MaaS」に取り組む中で、**現在活用している、もしくは活用する予定の技術やサービスやとりあえず発信したいこと**などなど、幅広くチームメンバーと共に執筆していきたいと思います。
メンバーごとに違った内容を発信していきますので、お楽しみに!

また、「MaaS」について詳しく知りたい方は、チームメンバーの吉田が記事を掲載しておりますので、
ぜひそちらをご覧ください。

[「MaaSとは」でたどり着いて欲しい記事 (1/3 前編)](https://note.com/ppt_msdg_maas/n/naae427dbc37c)
[「MaaSとは」でたどり着いて欲しい記事 (2/3 中編)](https://note.com/p

元記事を表示

バグ報告やフィードバック機能を簡単に爆速でアプリに導入できるShakeを使ってみた!!

## はじめに

アプリにバグ報告やフィードバック機能を入れると
アプリのブラッシュアップに繋がり,ユーザ&デベロッパにとってとても有益です。
ただ,サーバサイドとの連携も考慮すると気軽に実装,とはいかないです。

そんな中,**Shake** というサービスを見つけたので,
今回は,サンプルの iOS アプリで導入して試してみました。

https://www.shakebugs.com/app-developers

## Shake とは

上記リンクにある通り,機能はたくさんあります。
その中で気になったのはバグ報告・フィードバックできる点でした。
受け取った内容をデベロッパがどう処理できるかも使ってみて興味持ちました。

ユーザは端末を Shake して(振って)送信フォームを表示させ,
内容を書いたり,スクリーンショットに手書きでdrawしたものを添付して送信できます。

デベロッパはフィードバックを受け取るとダッシュボードで確認できるようになって
コメント残したり,JIRA や Slack などと連携もできるので便利です。
リリース前も QAチームとのバグ報告の時とかも役

元記事を表示

Core Hapticsを用いて触覚フィードバック機能つきのメトロノームアプリを作ってみる

Core Hapticsは、iOS 13から追加された振動と音声を統合的に制御するフレームワークです。Core Hapticsを用いることで振動機能のついたメトロノームを作成することができます。

## 1. はじめに
#### 1.1 本記事で作成するメトロノーム

本記事では以下の機能がついた簡単なメトロノームを作成します。なお、UIの配置にはSwiftUIを用います。

* BPMを表示する機能
* ボタンによりBPMを1ずつ増やす機能
* 設定したBPMのテンポで音を繰り返し鳴らす機能
* 音に合わせてiPhone本体を振動させる機能

#### 1.2 本記事のソースコード
本記事のソースコードは、[https://github.com/Ossamoon/sample-h

元記事を表示

FlutterでAdMobを表示(iOS/Android)

# はじめに
今回はAdMobの公式パッケージを使って広告を表示できるようにします。

# 更新履歴
2021.5.16 初回投稿

# 環境
– macOS Big Sur(11.2.3)
– Flutter (Channel stable, 2.0.6, on macOS 11.2.3 20D91 darwin-x64, locale ja-JP)
– Android toolchain – develop for Android devices (Android SDK version 30.0.3)
– Xcode – develop for iOS and macOS
– Chrome – develop for the web
– Android Studio (version 4.1)
– VS Code (version 1.56.0)

# 参考にしたサイト
– [flutterアプリでfirebase_admobからgoogle_mobile_adsに切り替えてみた – Qiita](https://qiita.com/kazutxt/items/8ea0eab5d

元記事を表示

[Flutter] Gitリポジトリからダウンロードしたプログラムでエラー

はじめに

Windowsで作成したFlutterアプリをGitリポジトリを通してMacにダウンロード。
それを起動させようとしたらエラーが出てきた。
Firebase関連のプラグインのバージョンを変えたりして、試行錯誤していたら余計にハマった。
バージョンがあってないやら、ファイルがみつからないやら、、、、、
あまりにも適当にやりすぎてエラーを再現できないが、備忘録としてエラー回避できた方法をいくつか残す。

エラー内容

Error output from CocoaPods:

[!] Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no
platform was specified. Please specify a platform for this target in your Podfile. See
`https://guides.cocoapods.

元記事を表示

週刊 DICOMデコーダーを創る (3) シークエンス解読

## SQ(シークエンス)の構造
DICOM規格日本語訳のPS3.5 p39-を読み解いていきます
図のように,SQのVRが来ると,その次の2byteは予約済み(普通は0x0000がはいっている)で,関係が無いので飛ばします.
続く4byteにデータ長が入っています.
データ長は2種類あり,
image.png

|種類 | データ長のバイト列 | 概要|
|:-:|:-:|:-|
|明示的長さ| 0x00 01 13 50 (例) | このように値が入っている場合はデータ長を示す |
|未定義長さ| 0xFF FF FF FF | データ長が明示されていない.
この場合は,項目を区切るタグを目印によむ |

このような未定議長さの場合には,区切りタグを基に読む必要があります.

| タグ | 意味

元記事を表示

【Swift】サロンでRxSwiftを教えてもらったのでまとめてみた

#はじめに
随時更新予定
今回は、オンラインサロンでRxSwiftを教えてもらっているので、その中で自分の学びになったことを簡潔にまとめてみたいと思います。

#学んだこと
・どれがBLなのかを考える
・Result型で値を返すことができる

“`swift
enum CalculateError: Error {
case numberToDivideIsZero
}
func calculate(num1: Double, num2: Double) -> Result {
if num2.isZero {
return .failure(.numberToDivideIsZero)
}
return .success(num1 / num2)
}

let num1 = 10.0
let num2 = 0.0
switch calculate(num1: num1, num2: num2) {
case .success(let result):
print(

元記事を表示

【Swift】MVPを簡単にまとめてみる

#はじめに
今回は、MVPアーキテクチャについて簡単にまとめていきたいと思います。

#MVPとは
特徴
・Model, View, Presenterにより分割されるGUIアーキテクチャ
・データ同期する方法に、PassiveViewとSupervisingControllerの二つがある

#フロー同期とオブザーバー同期
まず、PassiveViewとSupervisingControllerを理解する前に、フロー同期とオブザーバー同期の説明をします。

##フロー同期
上位モジュールのデータを下位モジュールに適宜セットして同期する同期方法
つまり、手続き的な同期方法。

メリット
・画面遷移間でデータの受け渡しなどでデータフローを追いやすい
→上位モジュール(遷移先)が下位モジュール(遷移元)の参照を持つことができるため、有効

デメリット
・共通したデータを参照しているすべての箇所の参照を持っておかなければいけなくなるので、参照の管理が煩雑になりやすい。

##オブザーバー同期
下位モジュール(監視元)が上位モジュール(監視先)からObserverパターンを使い送られてくるイベ

元記事を表示

画面遷移でSegueを利用するメリット(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)

## はじめに
画面遷移で Segue はもうほとんど使ってないというのを聞いたので Segue を使う利点を捻り出してみました:dizzy_face:

(私は特に Segue 推奨派というわけではありません:innocent:)

そもそも Storyboard 使わない!という方法もあると思いますが今回はそこにはふれません。

## つくるもの
Root -> NavigationController -> First -> Second -> Third

上記のように遷移して値を渡して Third から Root に戻るときにも値を渡す方法を考えてみます。

こんな感じ(遷移時に first とか sec

元記事を表示

【SwiftUI】Picker使ってみた

今回作成するアプリに複数の選択肢から1つだけ値を選択する機能が必要なので
Pickerという部品を使って実装してみました。

SwiftUI初学者の方々に参考になれば嬉しいです。

実装後の動作は以下になります。

mojikyo45_640-2.gif

ソースコードは以下です。

“`swift:
import SwiftUI

struct ContentView: View {
@State var selection: String = “和食”
var array: [String] = [“和食”, “洋食”, “中華”]

var body: some View {
VStack {
Picker(selection: $

元記事を表示

コードをよりよく構造化するために役立つXcodeの機能 (Xcodeに関する15のヒント)

この記事では、コードの構造を改善し、クリーンにするコードのリファクタリングに役立つXcodeの機能をいくつかご紹介します

– 変数の名前を変更する
– プログラム関数に抽出する
– if 条件を変数に抽出する
– 複数の if 文を switch に変換する
– ローカライゼーション機能を文字列に手早く適応させる
– クラスにinit関数を作成する
– 有用なコードをスニペットに追加・表示・バックアップする
– 関数のドキュメントを作成・表示する
– 変更を破棄する(最新のgitコミットと比較して)
– 特定のコードに対して最後に変更を加えた編集者を検索する
– 関数がコールされる場所をすべて見つける
– コードのさまざまなセクションを折りたたむ
– プログラムヘッダーを手早く検索する (func, class, struct)
– その他の Xcode に関するヒント(キーボード・ショートカット)

## 変数の名前を変更する

変数名をすばやく変更することができます。Xcodeは変数を参照するすべてのコードを見つけることができます。

まず、変数をダブルクリックして選択し、変数を

元記事を表示

【Swift】Hashable, Identifiableについて

## はじめに
HashableプロトコルとIdentifiableプロトコルって何のために使うの?違いは?と疑問に思ったので調べました。
もし間違いがありましたらご指摘いただけると幸いです。

## Hashable
### 概要
その型の値を元にハッシュ値が計算可能であることを表します。
下記のHashableの定義から、Hashableは`Equatable`プロトコルを準拠しており、`hashValue`プロパティと`hash`メソッドを持っていることがわかります。

“`swift:Hashable
public protocol Hashable : Equatable {

/// The hash value.
///
/// Hash values are not guaranteed to be equal across different executions of
/// your program. Do not save hash values to use during a future execution.
///

元記事を表示

iOSアプリ開発を考えているなら知っておくべきMacCatalystの基礎知識

#MacCatalystとは
「MacCatalyst」とは、Appleの統合開発環境である「Xcode」の機能の一つです。

かつては「Project Marzipan」と呼ばれていましたが2019年に「Project Catalyst」として発表され同年リリースされたXcode11から「MacCatalyst」を使用した開発が可能になりました。

#iPadアプリからMacアプリを作成が可能
アプリのiPad版さえあれば簡単にMac版を作ることができます。
細かく言うと、iPadアプリのソースコードを使って、Mac版のアプリをビルドすることができます。
1つのソースコードから2つのアプリができるので、開発コストは半分になります。
(そんな単純な訳ないですが…)

#デバイスに合わせた機能追加も可能
また、Mac版かどうかで処理を分岐させることも可能で、Mac版のデザインや機能をiOS版と分ける事もできます。
例えば、Mac版は画面の広さを生かしてボタンを増やしたり、カメラアプリなら編集機能の追加などができます。

以上がMacCatalystの概要でした。
次回はMacCata

元記事を表示

【連載】初心者のためのMacCatalyst講座

#この講座について
この講座では「MacCatalystって何?」「MacCatalystを使ってみたい」という方向けに解説を
行っていきます。この記事を見てくれた方がMacCatalystを説明できる、MacCatalystが使える、
といったことを目標に解説していきます。

#目次
第1回 [iOSアプリ開発を考えているなら知っておくべきMacCatalystの基礎知識](https://qiita.com/passion_t_sato/private/62cb3dfa44ee670963b6)
第2回 作成中…

元記事を表示

【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`として宣言してるので、`

元記事を表示

OTHERカテゴリの最新記事