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

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

【Pyto】iPhoneのTaptic EngineをPythonで操作する

## はじめに
iPhoneの中にはTaptic Engineという装置が搭載されている機種があります。これは、ホームボタンが物理ボタンでなくなった代わりに押した感触を発生させる装置です。ホームボタン以外にも何かを長押しした時や支払いが完了した時などにクリック感が発生します。

このTaptic Engineを[Pyto](https://pyto.app)というアプリを用いて操作してみました。

## 環境
iPhone SE (2020)(iOS13.4.1)
Pyto(11.9)

## Taptic EngineとHaptic Feedback
私はTaptic Engineがクリック感を発生させる装置、そのクリック感をHaptic Feedback(触覚フィードバック)と理解しています。

## Haptic Feedbackの種類
iPhoneのHaptic Feedbackには3つの種類があります。[こちら](https://qiita.com/WorldDownTown/items/2b5a72e41a95763727bb)[1]のサイトを参考にしました。[こちら

元記事を表示

【Swift】UILabelテキストの色、文字サイズ、行間、整列…NSAttributedStringとおすすめextension

### NSAttributedStringとは
 テキストにいろんな属性を関連付けることができるもの。また、その属性を持つテキストのこと。属性の例としては、表示スタイル、ハイパーリンク、ユーザー補助データなどが挙げられます。
(Apple公式: https://developer.apple.com/documentation/foundation/nsattributedstring)

### はじめに
 Swiftでアプリ開発をしていると、テキストのサイズや色、フォントや行間隔などを変更したい場合が出てきます。
 多くの場合はStoryBoard上で設定することで解決できますが、コードで行いたい場合もあるでしょう。(StoryBoard上でattributedテキストをいじる→あれ、うまくいかないよ…というのも経験された方はいるのではないでしょうか?なんか動作が変な時ありませんかattributedTextにすると汗)

 本稿では、NSAttributedStringでできる一部の例を示します。また、私が便利だなと思っているextension(Stringクラスを拡張してNS

元記事を表示

【iOSアプリ開発】オンライン対戦のクイズアプリのリリースまでの流れ

## 概要
私事ではありますが、
先日4月30日、早押しクイズのオンライン対戦アプリをリリース致しました。
プロモーションを兼ねてリリースまでの流れや大変だった部分などを共有していきます。
よろしければ実際にアプリをインストールして触っていただければ嬉しいです?

## アプリ概要
Quizdom クイズ王 決定戦
https://apps.apple.com/jp/app/id1510223709
スクリーンショット 2020-05-01 20.48.33.png
スクリーンショット 2020-05-01 20.48.25.png【iOS】ErrorMessage レイアウトスレッド管理に注意!!

~~~ Error:ErrorMessage
This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.
~~~
英訳をすると、
このアプリケーションは、メインスレッドからエンジンにアクセスした後、自動レイアウトエンジンをバックグラウンドスレッドから変更しています。これにより、エンジンの破損や奇妙なクラッシュが発生する可能性があります。

iOS13くらいから
レイアウト描画関係のスレッドを気にする必要があるようです。

iOS13にあげてからやたらと落ちる原因が増えたという方がいたらこの点確認してみてください。

例を挙げている記事がありました

[tableVeiw.reloadData()をバックグラウンドスレッドで実行してはいけない](https://qiita.com/ta

元記事を表示

ReSwiftを使うときに知っておくといいTips3選

# 前書き
最近AndroidでもiOSでもReduxアーキテクチャが気に入っており、アプリ開発時に(ごり押して)採用しているUroteaでございます。
Android向けReduxの記事も書いているので、Androidも書く人は読んでみてください。

# ReSwiftを使ってアプリを書いていて気が付いたTips集

機会があり、iOSアプリを書くことになりました。
ログインしたユーザの権限によってボタンを非表示にしたり、レイアウトを変えたりする必要があるため、状態管理に強いReSwiftを選択しました。
ある程度作り終わった今、この選択は正解だったと思っています。
また、ViewとのbindingのためにRxSwiftも併用しましたが、こちらも採用してよかったと思っています。
そんな中で気が付いたTipsを共有したいと思います。

## この記事で書くこと
– ReSwiftを使うときに、知っておくと便利なこと
– RxSwiftとどう連携したか

## この記事で書かないこと
– ReSwiftの概念、使い方
– RxSwiftの概念、使い方

## 対象読者
– iOS開発

元記事を表示

fastlaneで管理している場合にSign In with Appleの権限を追加する

# 結論
fastlane側にコマンドを追記して実行かと思っていたが、Developer Centerで権限を操作してprovisioning profileを再取得するだけだった。。。

# 手順

### 環境
Xcode: 11.1.0
fastlane: 2.145.0

### Xcodeで権限追加
Signing & Capabilitiesで権限を追加

スクリーンショット 2020-05-01 11.38.05.png

### Developer Centerで権限追加
Identifiers > 変更したいものを選択 > Sign In with Appleにチェック

スクリーンショット 2020-05-01 11.40.06.png【Swift】プロジェクト作成時に生成されるMain.storyboardを削除する

# はじめに
**Main.storyboard** を使わずに、
自分で作成した Storyboard から ViewController を生成してルートに設定したい時などで
最初に躓くのが **Main.storyboard** の削除とその後の設定だと思います。

その辺りの情報が少なかったので、自分がいつもやっていることをまとめます。

# 環境
Xcode 11.4
Swift5
iOS 13.4

# Main.storyboard を削除する
まずは早速 **Main.storyboard** を削除します。
それに加えて **ViewController.swift** も使用しないので削除します。

次に新しくルートに設定したい Storyboard と ViewController を作成します。
自分は RootViewController という Storyboard と ViewController を作成しました。

ではこのままの状態でビルドして実行してみます。
すると実行はできますが、こんな感じのエラーがでてクラッシュします。

“`
Termin

元記事を表示

エラーを蓄積できる“ResultNel”と数種類のViewから1つを返す型“CoproductView”を作る

# はじめに

Swift 5からは`Result`という他のプログラム言語では主に`Either`としても知られている型が入った。しかしiOSプログラミングをはじめてみると複数のエラーを同時に集めてきてUIに表示するという必要を感じるようになった。そこで`NonEmptyList`というデータ構造を使ってエラーを複数蓄積できるような`Result`である`ResultNel`を開発した。この記事の前半ではまずこの`ResultNel`について解説する。
またiOSプログラミングではUIの作成が必要になる。UI用のフレームワークである[SwiftUI](https://developer.apple.com/documentation/swiftui)を利用して画面を作る場合、`View`というプロトコルを適合した型の値がたとえばテキストや画像といった1つのUIパーツを表現しており、これを束ねて画面全体を構成していくことになる。SwiftUIはSwift 5.1から入った_Opaque Result Type_を使って返り値の型を「なんらかの`View`」と表現することが多いが、これは

元記事を表示

iPhoneアプリ開発が正常に実装できない

swiftによる地図検索アプリケーションを開発中で問題が生じました

下記リンクを参考にしながら、至ってシンプルな地図表示アプリを開発しているのですが、
https://developers.google.com/maps/documentation/ios-sdk/start?hl=ja

“`swift
import UIKit
import GoogleMaps

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// Do any additional setup after loading the view.
// Create a GMSCameraPosition that tells the map to display the
// coordi

元記事を表示

HKHealthStoreのデータ読み取り権限があるかチェックする

結論から言うと読み取り権限があるかチェックすることはできません。
書き込み権限の有無は[authorizationStatus(for:)](https://developer.apple.com/documentation/healthkit/hkhealthstore/1614154-authorizationstatus)でチェックすることができます。

このメソッドのDiscussionに以下の説明がありました。

“`
This method checks the authorization status for saving data.

To help prevent possible leaks of sensitive health information, your app cannot determine whether or not a user has granted permission to read data. If you are not given permission, it simply appears as if there is no da

元記事を表示

iOSウィジェットにCO2濃度を表示する 【Raspberry Pi × CO2-mini × co2meter】

WFH、捗ってますでしょうか。

我が家の場合、机やモニターなど家で仕事をするのに十分な設備は元々整っていたのですが、たったひとつだけオフィスにはあって自宅にないものがありました。

CO2モニターです。

## 成果物
パッと目につくところに表示させたかったので、iOSのウィジェットに置くことにしました。
最終的にこんな感じでCO2濃度、ついでに室温が見えるようになりました。

### iPhone

### iPad
スクリーンショット 2020-04-26 22.34.59.png【Swift5】iOSアプリを公開するまでの勉強法について

#はじめに
この記事では、プログラミング初心者な僕がAppStoreにアプリを公開し、月137円稼ぐまでの勉強法を書きたいと思う。

#Swiftの勉強法は2択
Swifrの勉強法は、以下の2択です。
– プログラミングスクール(オンライン)に通って瞬殺でSwiftマスターになるか
– 参考書をたくさん買ってじっくり時間をかけてSwiftマスターになるか

##プログラミングスクール
現在のプログラミングスクールでは、自分のオリジナルアプリをAppStoreに公開するまで付き添ってくれるらしい。
[iOS開発オススメのプログラミングスクール](https://satoriku.com/programming-school/)

##参考書
僕は、参考書でじっくり時間をかけてSwiftマスターになる方法を選んだ。

###1.ひたすら手を動かす(2019年10月~)
まずは、超初心者のための参考書をたくさん買ってひたすら手を動かした。

ここで気をつけなければならないのは、購入する参考書のバージョンだ。
Swift、Xcodeのバージョン変更は、割と頻繁に行われており、現在のバージョ

元記事を表示

ReactNativeの自動linkがiOSだけ動かなくて困った話

# 初めに
ReactNativeを0.5xから0.6xにアップデートした際、0.60.0から導入されたライブラリの自動リンク機能がiOSだけ動かなくて困っていた。

仕方ないので、
`一旦手動でlink → iOSの差分だけコミット`
としていたのだがさすがに面倒なのでちゃんとした対策は無いものか、と思って調べたらちゃんとあった。

# やったこと

`reactnative auto link not working` でググったら、react-native-fsというライブラリの ↓ というissueのコメントが見つかった。
https://github.com/itinance/react-native-fs/issues/708#issuecomment-559785244

これに従い、Podfileに `use_native_modules!` の一文を加えたら直った。
https://react-native-community.github.io/upgrade-helper/?from=0.59.9&to=0.61.5

↑ の差分を見て、手で必要な分だけ導入してい

元記事を表示

アプリ未経験の大学生が1ヶ月かけてReactNative(Expo)でiOS/Android対応のアプリを作った話

先日、「ワセフリ」というアプリをリリースしました。開発期間は約1ヶ月。ReactNativeを使って、iOS/Android両対応しています。

先日、学生が教科書などを交換や売買できるようなフリマアプリ、「ワセフリ」をリリースしました!

開発に着手したのが2020年の3月19日。正式にリリースしたのが4/19日ということで、**まあ大体4週間かかったかな、という感じです。**

言い訳がましいのですが、平日はほぼフルコミットでエンジニアのインターンとして働いてい

元記事を表示

AdHocでテスト端末を追加登録する方法

後からテスト端末を追加することはよくある話だと思うのですが、一発でできなかったので手順をメモしておきます
XcodeはVersion11.4.1です

## デバイスの登録
Apple Developer上で
・「Certificates,IDs&Profiles」>「Devices」より端末を登録
・「Certificates,IDs&Profiles」>「Profiles」よりAdHoc用のProfileをEditし、登録した端末を追加

## プロファイルの再読み込み
Xcode上で
・「Xcode」>「Preferences」から「Accounts」を開く
・「Download Manual Profiles」を押下
![スクリーンショット.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165658/4b67104b-0d76-83ce-8a3c-ebf2b400be90.png)
これでプロファイルが再読み込みされたので、「Product」>「Archive」でIPAファイルを新しく作成して終

元記事を表示

このFat View Controller、あなたはリファクタリングできますか?

![screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47085/f252954e-5969-fe5a-0873-ecfad88f15ca.png)

iOS アプリ開発において、 Fat View Controller はよく知られたアンチパターンです。 iOS アプリ開発では View Controller が大元にあるので、 View Controller になんでもかんでも実装していると、どんどん View Controller が肥大化してしまいます。

Fat View Controller には、たとえば次のような問題があります。

– UI とロジックが分離されておらずテストしづらい。
– コードの見通しが悪く、可読性が悪い。
– 状態管理が複雑になり、修正時の影響範囲を見通しづらい。
– みんなで同じファイルを触ることになり、コンフリクトが起こりやすい。

そんな Fat View Controller との戦い方の知見を共有し合うために、[たくさんのiOSエンジニア

元記事を表示

iOSレイアウト入門

#はじめに
某プログラミング学習サイトの学習記録を記します。

#共通事項など
・Command 0 で左ペインの表示/非表示を切換え
・Preview画面でダブルクリックすると倍率が自動調整。ピンチで手動調整。
・右ペイン:インスペクターペイン

#No1
・XcodeではAuto LayoutやTraitが用意されており、複数の画面サイズに対応したアプリのレイアウト作成が可能である。
・Xcodeで新しいアプリを作成する
 ・Single View App
 ・Devices:Universal

#No2
・main.storyboardを選択して左ペインは非表示にする
・右ペイン(ユーティリティエリア)の下記二つにチェックが入っていることを確認
 ・Use Auto Layout
 ・Use Trait Variations
・Editor > Previewでプレビュー表示する
 ・左下の[+]からiPadを追加してiPhoneとiPadの両方を表示させる

#No3
・Viewなどの部品を追加した後、画面下の「Add New Alighment Constraints」や

元記事を表示

Google Map SDK for iOSを使って現在位置を表示する

# はじめに
GoogleMap SDK for iOSを利用して現在地をアプリ上に表示する方法については、[公式ドキュメント](https://developers.google.com/maps/documentation/ios-sdk/current-place-tutorial)を含めいくつか[記事](https://qiita.com/koogawa/items/adc2dd19015586bda39b)が存在しますが、どれもなぜかうまく動かなかったので、私の環境(Swift5・xcode11)で動いたコードを共有します。

なおコード全体は[こちら](https://github.com/MasatoraAtarashi/googlemap-sample-ios)で見れます。

# SDKをインストール

“`ruby:Podfile
source ‘https://github.com/CocoaPods/Specs.git’
target ‘YOUR_APPLICATION_TARGET_NAME_HERE’ do
pod ‘GoogleMaps’
p

元記事を表示

【Swift】完全初心者が2ヶ月半でアプリをリリースした開発の流れ

#対象者
・Swift初心者の方
・iOSアプリ開発に挑戦したいと思っている方

#はじめに
サービス業の仕事をしているプログラミング完全初心者の私が**2ヶ月半**でAppStoreにリリースすることができました。
これからiOSアプリを開発に挑戦したいという人の参考になればと思いリリースまでの流れ、大変だった点をまとめました。

#アプリ紹介

私が開発したのは筋トレ記録アプリ「**Workout Manager**」です。

日々のトレーニング記録をカレンダーにメモをするアプリです。
自分の努力の見返すことで「今月は頑張ったな」「先月サボったから頑張ろう」と思う。
継続してトレーニングに取り組めると思い制作しました。

1057 PM.jpegpng.jpeg

元記事を表示

最近のiOSのTwitterKit…

最近は、公式TwitterKitを使ってる人は、もう少ないでしょう。
https://github.com/twitter-archive/twitter-kit-ios

既存アプリのメンテナンスのためにTwitterKitをいじったので雑感など。
(結局のところアプリから削除しましたが)


TwitterKitを利用したアプリをアップデートすると二点問題がありまして、

1.UIWebViewが使われているため、今後アップデートできなくなる

【iOS】UIWebViewのDeprecated対応期限は既存アプリは2020年12月まで、新規アプリは2020年4月まで


【iOS】UIWebViewのDeprecated対応期限は既存アプリは2020年12月まで、新規アプリは2020年4月まで

2.TwitterKitが位置情報を含むので位置情報を使うセキュリティの設定をしなくてはならなくなった。
位置情報は使ってないので今まで通りにApp store connectにアーカイブをsubmitすると以下のエラーになります。

– Your app’s code references one or more A

元記事を表示

OTHERカテゴリの最新記事