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

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

Building for iOS Simulator, but the linked and embedded framework ‘XXX.framework’ was built for iOS + iOS Simulator. に対応した

Xcodeを12.3にした所、
「Building for iOS Simulator, but the linked and embedded framework ‘XXX.framework’ was built for iOS + iOS Simulator.」
が発生する様になってしまったので対応したメモ

#ググってやった事
・Build Settings – Architectures – Excluded Architectures – Debugに
Any iOS Simulator SDKを追加し、
[arm64 arm64e armv7]を設定

・Build Settings – Build Options – Validate Workspace – Debugの設定をNoからYESに変更

この変更でエラーから警告に変わって取り合えずデバッグ出来る様にはなった。

参照先 https://stackoverflow.com/questions/65303304/xcode-12-3-building-for-ios-simulator-but-the-link

元記事を表示

[RxSwift]combineLatestについて

Rxの学習過程で学んだことを後からでも見れるようにメモしていきます
本記事はこちら[RxSwift](https://github.com/ReactiveX/RxSwift/tree/main/RxExample/RxExample/Examples)を参考にしています

# CombineLatestとは
`Observable`シーケンスのいずれかが要素を生成するたびに、指定された`Observable`シーケンスを、1つのタプルの`Observable`シーケンスにマージする。

# 使用例
各`TextField`に入力した値をリアルタイムで合計し、ラベルに表示する。
といった機能を作っていきます。

数値入力用の`TextField`を3つと合計結果表示用の`Label`をひとつ用意しいます。

“`swift

Observable.combineLatest(textField1.rx.text.orEmpty, textField2.rx.text.orEmpty, textField3.rx.text.orEmpty) { textValue1, textVal

元記事を表示

iOSのコード署名がなんのためにどうやって行われているかを理解する

## 背景

最近iOS開発に入門したんですが、いろいろなことがわからない中でもとくにコード署名がわからない。Provisioning Profileとか`.p12`とか名前は聞いたことがあるけど結局何をしているのか不明な概念がいきなり登場してきて、アプリを動かすまでのコード署名の手続きは実行できてもそれぞれの手続きがなんのために行われているかわかりませんでした。

– そもそもコード署名はなんのために、どうやって行われているのか
– いろいろなファイルが登場してくるけどそれぞれの役割はなんなのか

を理解したくて調べたのでまとめます。

この記事にはこう思えば自分は理解しやすいなと思った内容を書いたので、有識者から見ると単純化しすぎていたりそもそも間違っているものが含まれているかもしれません。その場合はコメントで教えていただけると助かります。

## 参考リンク

– [Code Signing Guide](https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSignin

元記事を表示

[Swift] 遷移先で変更した配列を遷移元に反映させ、Label等に表示させる方法

#はじめに
今回はNavigationControllerを用いて、画面遷移を行っています。そのため、遷移先から遷移元に戻る時に呼ばれるnavigationControllerのwillShowを使っています。また、collectionViewのCell内にLabelを置き、そこに配列(String)の値を表示させています。
#開発環境
“`
macOS 11.0.1
Xcode version 12.2
Swift version 5.3.1
“`
#コード
親画面にはString型で変数aを与え、初期値として5個の何の値も入っていない値を与えておきます。これを、collectionViewを用いて、Cell内に設置したLabelに先程の値を与えています。遷移先で変更された配列を遷移元に渡した時にプロパティ・オブザーバを設定してあげることで変更が起こった時の処理を書くことができるようになります。オブザーバは、プロパティ変更前に呼ばれる willSet と、変更後に呼ばれる didSet があります。今回は、変更後に呼ばれる**didset**を使います。

“`swift:Fi

元記事を表示

【iOS/Android】ネイティブアプリをAPIと繋ぎ込む時に便利なツール

# iOS/AndroidでAPIをつなぐ時に便利なツールを紹介します!

## [Chrome拡張のTalend API TesterでAPIテスト – Qiita](https://qiita.com/ktr1211/items/c16cb4f99f91b998af46)
APIが正常に動いているか、これでチェックします!
この記事わかりやすくて神ですよ!

## [Text Escaping and Unescaping in JavaScript](http://0xcc.net/jsescape/)
JSONに入っているUniCode、読みたいですよね?
そんな時はこれに打ち込めば!日本語に変換してくれて便利!!!

## [JSON Schema Tool](https://jsonschema.net/login#/)
あとは最後に、これ
JSONを入れるだけでスキーマを作ってくれます!楽チンですね

# まとめ
この記事で少しでも開発が捗ったら嬉しいです!

元記事を表示

InheritedWidgetの目的と使い方【Flutter】

# まえがき

`InheritedWidget`の使い方の基本をまとめます!

Flutterを勉強していてよくわからなくなるポイントの一つがこの`InheritedWidget`だと思います。

筆射自身、これを理解するのにかなり時間がかかったので、「こういう説明があったらよかったな」と思う説明を書きます。

なお、以下では、`InheritedWidget`クラスを継承したクラスのことを単に`InheritedWidget`と呼びますね。他の`StatefulWidget`なども同様です。

## 前提知識

FlutterアプリがWidgetのツリー構造でできていることを知っていて、`StatefulWidget`と`setState`は使えるものとします。

`BuildContext`の知識も少しだけ要りますが、「Widgetツリー内での位置を表現するもの」程度の理解で十分です。

それについてはこちらをお読みください。

[Flutterのcontextの「お気持ち」を理解する](https://qiita.com/agajo/items/93d75aafe87bd

元記事を表示

Alamofireでインターネット接続状態を確認する

## はじめに
AlamofireでAPIリクエストをする際に端末がインターネット接続されていなかった場合エラーを流す必要がありました。
その時に調べたことのまとめになります。

## NetworkReachabilityManagerを使う
Alamofireには標準で“`NetworkReachabilityManager“`というクラスがあります。
今回はそちらを使用して接続状態を確認します。
[参照](https://github.com/Alamofire/Alamofire/blob/master/Source/NetworkReachabilityManager.swift)

## 使い方
その①
ベタがき
コード量が少ないがパッと見読みにくい

“`swift
import Alamofire
if let isConnected = NetworkReachabilityManager()?.isReachable, !isConnected {
print(“Disconnect”)
}
“`

その②
クラスを定義する
見やすい

“`s

元記事を表示

INRestaurantReservation: ユーザーの予約情報をSiriに共有して、イベントを自動的に提案する

あなたがレストラン予約アプリケーション、またはユーザーのために予約を入れるアプリケーション(フライト、列車、チケット)を開発している場合、予約の詳細についてSiriに通知することができます。

この記事では、予約アプリのデモを作成します。ユーザーが予約を行うと、アプリが予約情報をSiriに送信し、Siriは予約情報をカレンダーに追加するようユーザーに促します。予約が閲覧されると、アプリが予約時間を更新します。システムカレンダーアプリが予約情報の更新について、ユーザーに通知するのが確認できます。

## 利点

Siriに通知することで、ユーザーはイベントをカレンダーに追加するための通知を即座に受け取ります。

イベント会場の詳細情報もSiriによって自動的に入力されます。

[Swift5]特定の時間を比較して前なのか後なのかを判定する方法

## 特定の時間の比較
例えばアプリを起動したときに、現在時刻と開発者側で予め設定している時刻を比較して、その状況にあった処理をおこないたい場合があったとします。(何時より前なら処理A, 後ならBなど)

そういった状況で使えるのが`.compare( )メソッド`です。
今回はこちらのメソッドの紹介をします!

## 記述方法
“`swift
if ‘現在時刻’.compare(‘こちらで設定した時刻’) == .orderedDescending {
//ここで処理
//.orderedDescendingは〜より後
}

if ‘現在時刻’.compare(‘こちらで設定した時刻’) == .orderedAscending {
//ここで処理
//.orderedAscendingは〜より前
}
“`
このように記述すればOK!
ふたつの時刻を`.compare( )メソッド`で比較して、以降なのか以前なのかを判定しております。
また、双方の時刻が同じかどうかを判定したい場合は`.orderedSame`を使えばいい。

参考にしてください!

元記事を表示

Flutter で仕事したい人のための Widget 入門

# この記事について

Flutter の入門記事の中には、初学者にもわかりやすく説明しようとするあまり実際のアプリ開発で重要になる内容まで抜け落ちてしまったり、意訳や曲解によって誤解を与えてしまう内容が含まれることもあったりします。

この記事は、Flutter で本格的にアプリ開発を進める上で僕が先に知りたかったこと、詳しい説明がほしかった部分を、過去の自分と同じような Flutter 初学者向けに説明する記事です。

本来は公式ドキュメントを読みながら学習を進められるのが理想ではありますが、Flutter のドキュメントは全て英語であること、またある程度のアプリ開発経験があることを想定した難易度になっている(ように感じる)ことから、まずは日本語の記事を頼りに学習を進める方も多いと思います。この記事は、そんな方の役に立つ内容を目指しています。

この記事では、中でも Flutter の Widget に焦点を当てて書いています。

# 本文

## Everything is a Widget

Flutter には __”Everything is a Widget”__ とい

元記事を表示

パスワードを入力する時に使用するTextFieldについて

# 問題

アカウント作成画面を作成していた時に、パスワード入力のViewにTextFieldを使用していたのだが、よく見るパスワード入力は入力文字が見えないようになっている。
SwiftUIを使用している場合、このようなTextFieldはどうやって実装するか分からなかったので調べた。

# 解決方法

TextFieldにオプションをつけるのかと思っていたが違うらしい。
SecureFieldというViewを使用すれば良いみたい。

https://developer.apple.com/documentation/swiftui/securefield

![スクリーンショット 2021-01-05 0.35.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567975/86cdcffb-44e0-ff23-c2b3-df0b43f915a7.png)

元記事を表示

非同期処理中にユーザー操作を無効にする方法

# 問題

アカウント作成という非同期処理があるのだが、作成中にはユーザーの操作を無効化したい。
ただ、調べてもユーザー操作を無効にする方法はないっぽい。
そこで、ZStackを使用して、上にViewを重ねることで解決できないか検討した。

# 解決方法

以下のコードのように、isBusyがtrueの時にのみ、Color.whiteを重ねてみたところ、下のViewを操作できないことを確認できたので、これで良さそう。
もし、より良い方法があればコメント頂けると助かります・・・。

“`swift
ZStack{
VStack{
TextField(“ユーザー名”, text: $vm.userName)
.autocapitalization(.none)
.textFieldStyle(RoundedBorderTextFieldStyle())
TextField(“メールアドレス”, text: $vm.emailAddress)
.autocapitalization(.none)
.textFieldStyle(RoundedBorderT

元記事を表示

TextFieldにてアルファベット入力時に先頭文字が大文字になってしまうことを防ぐ

# 問題

TextFieldを用いた画面を作成した際に入力時に先頭文字が自動的に大文字になってしまうことがある。
特に、Canvasを使用して画面の動作を確認する際に、キーボードからの入力だと、大文字を小文字に変換する術がなく、辛い。
![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567975/29425af9-16d3-0649-5706-3a4cc20e302e.gif)

# 解決方法

TextFieldのModifiersである、autocapitalization(_:)を使用して、大文字への自動変換を制御すれば良い。

https://developer.apple.com/documentation/swiftui/textfield/autocapitalization(_:)

“` swift
TextField(“ユーザー名”, text: $vm.userName)
.autocapitalization(.none)
T

元記事を表示

New Relic Mobile for iOSをインストールしてみる

## 背景
New Relic Mobileを使ったことがなくて、無料枠の仕様が変更されていたので、New Relic agentのインストールをまとめてみました。

New Relic の新しい製品体系と価格体系

### New Relicとは
New Relic社が提供しているSaaS型のFSOなパフォーマンス監視プラットフォームになります。今回試すMobile意外にもAPM、Infrastructure、Browser等の様々なサービスに対してパフォーマンスを監視できるようになります。
https://newrelic.com/jp
## 環境
Xcode: 11.5
Swift: 5.2.4
cocoapod: 1.9.3
New Relic SDK: 5.14.2

## New Relic Mobile インストール手順
以下、New Relic公式ドキュメントの手順に従って、cocoapodを用いたインストールを行う。
https://docs.newrelic.co.jp/docs

元記事を表示

SwiftでHTML/XMLジェネレータを作成する(dynamicMemberLookup)

# 概要

`@dynamicMemberLookup` を使ってSwiftでHTML/XMLを生成するDSLを作ります。(作りました)

#SwiftPM

SwiftPMの形で配布しています。

https://github.com/coe/MarkUpDynamic

#コード例

## HTML

以下のような形でSwiftを記述します。

“`swift
MarkUp()
.html[MarkUp()
.body[MarkUp()
.table[MarkUp()
.tr[MarkUp()
.td[character: “one”]
.td[character: “two”]
]
]
]

元記事を表示

iOS SDK備忘録

以下を読んだ際の備忘録
UIKit&Swiftプログラミング 優れたiPhoneアプリ開発のためのUI実装ガイド Kindle版

■iOS SDK
xCodeに同梱されている。フレームワークやiOSの実行環境なども含む

■Application Bundle
→アプリの実体。これがメモリの上に乗る

■アプリの状態
・Active(以下の順で遷移した後、Background状態になる)
appplicationWillResignActive(_:)
applicationDidEnterBackground(_:)
application(_:shouldSaveApplicationState:)
application(_:didDecodeRestorableStateWithCoder:)
・Background(裏で動いている)
通常5秒、延長して180秒
・Suspended(現在動作はしてい

元記事を表示

AndroidとiOSですぐに使えるコマンドなど

■iOS
[debug] @@ 【 @self.dynamicType@ %B 】hitcount:%H

lldb
n ステップオーバー
s ステップ実行
c 再開

po 変数表示

command ,で設定
command ↓で開く
command ↑で上へ移動

Mac を使い始めたら真っ先に覚えてほしいキーボードショートカット10項目

■Android
adb logcat -c ; adb logcat -s debugTst:* AndroidRuntime:E

■各種コマンド
adb shell dumpsys activity | grep -B 1 “Run #[0-9]*:”
->アクティビティを確認
adb shell pm list packages | grep “rakuten”
->パッケージ名確認
adb shell am force-stop jp.co.rakuten.comm.dugong.app.stg
->プロセスをkill
adb shell ps |

元記事を表示

JUCEで作ったプラグインをiOSデバイスで起動する

##問題##
JUCEで作ったプラグインはシミュレーターではそのままで動作するが、実デバイスで動かすにはプロジェクトの設定を変更する必要がある。

##前提##
ProjucerでAudio Pluginを作成している。
AppleにDeveloper登録をして然るべきアカウントの設定はしてある。

##解決方法 1##
ProjucerのiOSのExporter設定でDevelopment Team IDに自分のTeam IDを記入しておく。
![Screen Shot 2021-01-04 at 14.11.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107818/a6c182a6-23e5-1b89-f769-69605a6c4eae.png)

##解決方法 2##
Build SettingsのSigningでCode Identityを削除する。下記の部分を選択してdeleteキーを押す。
![Screen Shot 2021-01-04 at 13.40.38.png](https

元記事を表示

JUCE: iOSでサンプリングレートとバッファサイズを変更する

##問題##
Projucerのテンプレートから作成したAudio Pluginは、Standalone版もビルドできてiOSでもそのまま動くが、Mac/WindowsにあるAudioの設定画面がデフォルトでは提供されない。iOSの場合必要ない機能が大半だが、サンプリングレートとバッファサイズは音質、レイテンシの面から調整したいところ。

##前提##
ProjucerでAudio Pluginを作成している。

##解決方法##
StandalonePluginHolderのインスタンスからAudioDeviceManagerを取得、そこからAudioIODeviceを取得して設定する。AudioIODeviceでは値の取得はできるが設定ができない。設定はAudioDeviceManagerを使って行う。

サンプルをgithubに置いておいた。
https://github.com/masanaohayashi/Ring2JUCETips/tree/main/IOSAudioDeviceTest1

以下、その抜粋。

“`MainComponent.cpp
juce::

元記事を表示

Cisco ASR1006のルートプロセッサ交換手順

#概要
Cisco ASR1006 のRouteProccecer(RP)が故障した際の交換手順について記載します。

保守費用の削減を理由に、メーカーに頼らず自分たちでメンテナンスする機会が増えているところも多いようです。
当社も保守サポートを削りまくりで大変ですが、その代わりスキル習得できるメリットがあると感じています。
ASR1006についてもその一つです。

装置状態確認からパッケージ交換の流れまで纏めましたので順に確認してまいります。

#故障時の状態確認
まずは故障時の状態確認を行います。
状態確認としては下記コマンドを実行しておきましょう。
重複する内容もありますが、これだけ取得しておけば安心です。

“`
# show tech-support
# show inventory raw
# show platform
# show facility-alarm status
# show environment all
# show logging
“`

show platformの結果を確認します。

“`
#show platform

Slot

元記事を表示

OTHERカテゴリの最新記事