iOS関連のことを調べてみた2019年12月30日

iOS関連のことを調べてみた2019年12月30日

【Carthage】failed with exit code 128: fatal: could not read Username for ‘https://github.com’: terminal prompts disabled

# 概要
Carthageでレポジトリを指定して、

“`shell
carthage update –platform ios
“`

を実行すると

“`shell
A shell task (/usr/bin/env git fetch –prune –quiet https://github.com/Qiuck/Nimble.git refs/tags/*:refs/tags/* +refs/heads/*:refs/heads/*
(launched in /Users/[user_name]/Library/Caches/org.carthage.CarthageKit/dependencies/Nimble)) failed with exit code 128:
fatal: could not read Username for ‘https://github.com’: terminal prompts disabled
“`

というエラーが出た。

# 解決策

解決策ってほどのものでもなく、 **Cartfileのレポジトリ名がtypoってた*

元記事を表示

[はじめてのiOSアプリ]xcodeで地図アプリを作成(その8)

# はじめに

iOSアプリを作ってみたいけど
何から始めて良いのかわからない

とりあえず、
「やってみました」記事を参考に
地図アプリを真似てみようと思う

という記事の8回目です。

今回は、地名の取得と表示(Reverse Geocoding)までします。

# 位置情報から地名に変換するサービス
– 今回使うのは [Finds.jp](https://www.finds.jp/rgeocode/)
– 【なぜ?】
– 利用する準備が簡単(登録不要で利用可能)
– やっぱり「やってみました」は簡単にやってみることができるのは重要!
– 今回は、日本国内の地名に変換できれば十分だから
– キーワード「reverse geocoding」で検索してみると、いろいろ見つかる
– 気になる人は、いろいろ試してみると良いですよ

## 簡単な Finds.jp の使い方
– ブラウザで以下のアドレスを表示してみる
– [https://www.finds.jp/ws/rgeocode.php?lat=35.6804725&lon=139.

元記事を表示

モバイルアプリを設計 ローディング機能について理解する

モバイルアプリを設計する上で、ローディング(読込み)機能についてiOSの推奨を理解しましょう。
「[Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/loading/)」のLoadingの章について紹介します。
モバイルのアクション処理では、機械学習を用いた高負荷な演算処理や、大容量データの取り扱いなど、
ユーザーに不快感を与えることなく、実装することが求められます。

## 前提
コンテンツの読込み中に、空白または静的な画面が表示されていると、アプリがフリーズしているように見えます。
ユーザーや混乱とフラストレーションが生じ、アプリから離脱してしまう可能が高まります。
![iPhone-Loading.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168714/c5929440-e98d-59c7-866c-a5e3290131e6

元記事を表示

iPodをwebサーバとして使う

#はじめに
初めてまして
初投稿です!
今回はiPodでApacheを動かす方法について書きたいと思います(需要…)

#環境
iPod touch (6th generation)
ios 12.4.4

#iSHをインストール
まず「[TestFlight](https://apps.apple.com/jp/app/testflight/id899247664?ign-mpt=uo%3D4)」をインストールします.
次に[公式サイト](https://ish.app/)のJoin the TestFlight beta!のTestFlight betaをクリックしてiSHをインストールできます.

#Apache2の導入
iSHを起動したら
“`apk add apache2“`
を実行するとApache2がインストールされます.
Apache2の設定ファイルは
“`/etc/apache2/httpd.conf“`
ルールディレクトリは私の環境では
“`/var/www/localhost/htdocs“`
でした.
次に
“`httpd -D UNDERGR

元記事を表示

脱獄検知回避アプリを解析する Liberty lite


typora-copy-images-to: ipic

執筆途中

本記事では脱獄についての説明は省きます。

## 脱獄者 vs 開発者

今まで脱獄者は開発者にとって無視できない不都合な事象(アプリケーションの解析やチート、海賊版の作成 etc…)をもたらしてきました。これらの行為を防ぐべく、多くの開発者は__脱獄を検知__してアプリケーションの挙動を変えることで対策しました。

脱獄者の中には少なからず_開発者_や_セキュリティリサーチャー_といった類の「職」を持つ人々がいます。そしてこれらの人々の一部(野心的なデベロッパー・ハッカー)にとって脱獄検知という技術は非常に興味深いものであることに間違いありません。彼らもまた、__脱獄検知を回避__するという手段を通じて開発者に対抗しました。

__これは終わらないイタチごっこに違いありません!__

実際、今まで_Cydia_をはじめとした脱獄アプリストアには多くの__脱獄検知回避Tweak__が並んできました。

_Xcon, BreakThrough, FLEX, Liberty, Lib

元記事を表示

SwiftでURLSessionを用いて汎用的なAPI Clientを作成

## はじめに
Swiftを勉強し始めたひよこです。
API処理周りで結構苦労したので記録用に記載します。
普段はAWS周りのインフラレイヤ触ることが多いので、やってることが正しいのかどうかすら自身ありません、、

## 課題
Alamofireなどのライブラリを活用せず、標準ライブラリであるURLSessionを用いたAPI Clientを作成したかったのですが、思い通りに動作させるのに下記の課題にぶち当たりました。

– 任意の型のResponseに対応できない
– Responseだけでなく、エラーも呼び出し元に返したい
– テスト時にスタブに差し替えたい

## 解決方法
### どうやって解決したか

それぞれの課題について下記の対応で乗り切りました。

– 任意の型のResponse → Genericsで型を抽象化
– エラーも呼び出し元に返す → Responseとエラーを含む構造体を作成し、内容を詰める
– スタブ差し替え → Protocolを実装

### 作成したコード

最終的に作成したコードは下記です。
簡単のためPost部分のみ記載しています。
Heade

元記事を表示

サルでもできるPython(kivy)でiOSアプリ開発

#はじめに
機械学習とかデータサイエンスの分野で活躍しているPythonですが、GUIも地味に優秀で、今回用いるkivyはビルドによってデスクトップでもAndroidでもiOSでも動くアプリケーションが作れます。

今回は、アプリなんて作ったことないけどPythonはある程度知ってる方向けに簡単な解説をさせていただきます。
自分への備忘録もかねて。。

#kivyとはなにか
Pythonのライブラリの一つで、GUI(グラフィカルユーザーインターフェース: 黒いコンソール画面ポチポチじゃない)を簡単に作ることのできるものです。

[日本語リファレンス](https://pyky.github.io/kivy-doc-ja/)も存在していて、今現在も開発が行われているライブラリです。

使い方に関しては他の多くの方が分かりやすくて丁寧な記事を書いていらっしゃるのでここでは省略します。今回はアプリにすることを前提に話を進めます。

#必要なもの

– kivy-ios
– Python 3系
– Mac OS搭載PC(残念ながらXcodeが必要なのでWindows, Linux系ではできませ

元記事を表示

WKWebViewのCookieを使ってURLSessionでWEBAPIを叩く

# 経緯
iOSアプリを開発しているとき、WKWebViewでユーザー認証をしたあとにその認証情報(Cookie)を使ってWEBAPIを叩いてユーザーの情報等を把握したいことがあります。
しかしながら、どうやらWKWebViewとWEBAPIを叩く時に標準的に使われるURLSessionではCookieは暗黙的に共有されていないようです。
そこで、URLSessionでWKWebViewのCookieを使用するためにはどのようにしたらいいのかを書いていきます。
もしも、WKWebViewのCookieを使って簡単にWEBAPIを叩く方法がある場合は教えてください!!

# 流れ
1. WKWebViewからCookieを取得する。
2. CookieをHTTPヘッダーに埋め込む形に変形させる
3. URLSessionでGET(POST)するときにHTTPヘッダーにCookieを追加

# WKWebViewからCookieを取得する
特定のドメインに利用されるCookieをWKWebViewから取得します。この工程は先ほどの流れの1と2です。
今回はCookieを常に保持しておきたか

元記事を表示

ファクトリー・アブストラクトファクトリーをSwift5で実装する

※この記事は「全デザインパターンをSwift5で実装する」https://qiita.com/satoru_pripara/items/3aa80dab8e80052796c6 の一部です。

###The Factory(ファクトリー)

####0. ファクトリーの意義

複数のオブジェクト間で共通するプロトコルやスーパークラスがある場合に、それを利用してオブジェクトを生成する事をファクトリーという。

利用する側は、プロトコル・スーパークラスのみ知っていればよく、個々のクラスの実装について知る必要がないため実装が容易になる。また個々のクラスに変更が加わっても利用する側には影響しなくなる。

####1. ファクトリーを利用しない場合

– 生成される側

“`swift:Theme.swift
import UIKit

public protocol Theme {
var backgroundColor: UIColor { get }
var textColor: UIColor { get }

}

public struct LightTheme:

元記事を表示

SwiftUI Pickerの値をenumと連動

#やりたいこと
Pickerの表示項目と選択を、モデル内のenumで管理したい

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59249/f2d630ce-3784-536e-0784-5729c5bf2154.png)|![image.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59249/159e1305-5bf0-2788-0f42-0ca004ac6de4.gif)|
|:-:|:-:|

##enumの値をモデル内に設定

ポイントは、enumをCaseIterableに指定すること

“`swift:Model
class Model:ObservableObject{
//enumはrawValueとしてString
//PickerのForeachで使えるようにCaseIterableに指定
enum Mode:String,CaseIterable{

元記事を表示

SwiftUIとFirebaseを使って簡単なチャットアプリを作る

# はじめに
FirebaseとSwiftUIを使ってチャットアプリを作ります。

# 仕様
チャットアプリは最初にユーザー名を入力しチャット画面に入ると自分とそれ以外のユーザーで区別されたメッセージ一覧が表示されます。
今回は、ユーザー認証などありません。単純にリアルタイムデータベースを読み書きしてチャットします。

gRPCでサーバー・クライアントを繋げてみる(iOS編)

[Aizu Advent Calendar](https://adventar.org/calendars/3938) の22日目の記事です。
大遅刻しました。申し訳ないです。。

gRPCでサーバー・クライアントを繋げてみたもののiOS編です。

## gRPCとは
[こちらの記事](https://qiita.com/oohira/items/63b5ccb2bf1a913659d6)でわかりやすく簡単に紹介されています。

gRPC自体は `.proto` ファイルを使用し、それを元に生成したコードを使用してクライアントから簡単にサーバー側のデータを取得することができるものです。
上記の点から、特定のエンドポイントに対して必要な値を載せてリクエストを飛ばして○○というデータが返ってくるというAPI定義書を作成することなく使用する側はサーバーからデータを取得することができます。

また、HTTP/2を使用、データ取得関数使用時にシリアライズを行うため、高速に通信することができます。

## 実装編
### `proto` ファイルを定義する
クライアントとサーバーにとっての共通のイ

元記事を表示

flutter iOSでビルドできない時の対処法

初めてQiitaに投稿してみます、、、

## 現象
* **flutter** と**Android Studio**を使い始めて数週間のペーペーです。
* simulator.appのiOSのシミュレータで、`run`を実行すると、以下のようなビルドの失敗が続くようになりました。

“`
Launching lib/main.dart on iPhone Xʀ in debug mode…
Running Xcode build…
Xcode build done. 12.2s
Failed to build iOS app
Error output from Xcode build:

** BUILD FAILED **

Xcode’s output:

/build/ios/Debug-iphonesimulator/Runner.app: resource fork, Finder information, or similar detritus not al

元記事を表示

簡単なiOSアプリの開発費相場の意識調査結果

最近Twitter経由で個人での簡単なiOSアプリの受託開発の打診を受け、費用を伝えると連絡が途絶えました。具体的な内容は書けないのですが、以下のような案件です。

– 実装期間は2日(かなりシンプルな機能でこれ以上はかかりそうにない)
– 実装可能か要検証な機能有り
– アイコン画像等のリソースは発注元が作成
– App Store申請作業込み(シンプルな為リジェクト対応が必要になる可能性あり)

見積もりとしては合計20万円と出しました。

そこで以下のようにツイートでアンケートをとってみました。

[iOS]プロトコルで疎結合に組む方法

今更なんですが、Protocolの話です。
サンプルとして「カスタムViewを疎結合に組む方法の話」をします。
なおSwiftUIは無視します。

# 1.カスタムViewの例

## カスタムViewを作る際に困ること

iOSにおいてカスタムViewを作ると言ったらざっくりこうなるでしょう。

![Protocol-Page-1 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20784/5cd6b440-16ff-d41b-9df5-8dee9865074a.png)

違和感は無いと思いますが、実際に作ってみると案外上手く組めません。
悩みの原因は**どこに書くべきか迷う処理**が存在するからです。

## カスタムViewをトリガーにしてViewControllerに何かさせたい時

カスタムViewをトリガーにしてViewControllerに何かさせたい時の処理を考えます。
例えば「Viewの中のボタンをタップしたときに画面遷移をする」のような処理です。

抽象的にはこうです。

!

元記事を表示

Siriショートカットで出来ること出来ないこと

# Siriショートカットで出来ること出来ないこと

## TL;DR

* Siriショートカットで色々やってみたかったけど、項目を眺めてるだけだと内容がわかりにくく、公式ドキュメントも一覧性がない。仕方がないので、全部触ってみてわかりにくいものに註釈をつけて、自分が後で閲覧するようのリストを作った。
* ついでに全体を触ってみた上での所見、困ったところ、便利なところを簡単に。

## 所見

* 使い所
* アクションの中に「SSH経由でスクリプトを実行」と「Webリクエスト」というものがあり、指定したサーバー上で実行したりLambdaに投げたりしてしまえば処理の上で出来ないことは事実上無い。従って考えるべきは「何が可能か」ではなく「あえてモバイル端末上で実行して意味があることはなにか」であるこれは概ね以下の4つの観点に集約されそう。
* モバイル端末を携帯している「わたし」自身のリアルタイムな情報を利用する場合
* 典型的には「位置情報」「接続中のアクセスポイント」「歩数」など、端末が収集してくれている自分の情報
*

元記事を表示

[Flutter] Dribbbleデザイン、そのまま作ろう その13

こんにちは 皆さん!Dreamwalkerです。
メリークリスマス! :santa_tone2:

どんな年末過ごしているでしょうか
忙しくて、遅くなってしまいました。

今回は13番目の「DribbbleのデザインをFlutterでやってみた」になります。

#:fire:今回のデザイン:fire:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/da1bbf81-50a6-7ec4-db87-6e6df49ac75c.png)
https://dribbble.com/shots/9110398-Gift-Shop/attachments/1183035?mode=media

#:clap:結果:clap:

##一つ目のページ。
![Screenshot_1577357764.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/e6558f4e-205c-d40f-01f

元記事を表示

【iOS】?コンテナViewの採用基準?

# TL;DR
UIKitには4つのコンテナViewがありますが、どれを選択すべきなのか、
自分の中で曖昧だな〜と思ったので、整理しました。

# コンテナViewって?
UIViewに直接パーツを貼り付けても実装は可能ですが、
それをやると細かいUI調整がしんどくなります。
しかも動的にデータが更新されるようなアプリだったら、厳しいですね。
そこでコンテナViewというViewにパーツを乗せて、レイアウトやデータ更新を制御しやすくします。

# UIKitのコンテナView概観
詳細については後述しますが、UIKitの標準クラスとしては4つあります。

[UICollectionView](https://developer.apple.com/documentation/uikit/uicollectionview)
[UITableView](https://developer.apple.com/documentation/uikit/uitableview)
[UIStackView](https://developer.apple.com/documentation/uik

元記事を表示

XCodeでビルドしたら「The application’s Info.plist does not contain CFBundleShortVersionString.」と出た時の対処

ozvision Advent Calendar 2019
に参加させて頂きました。(日にち過ぎてしまったけど…)

[株式会社オズビジョン](https://www.oz-vision.co.jp/)の開発チームに業務委託として参加しています村上です。(以前は社員でしたが出戻りました)

最近リリースされたハピタスアプリ(ネットショッピングなどでポイントがたまるアプリ)の改修などをしています。

よかったら使ってみてください。
[iOS版ハピタスアプリ](https://apps.apple.com/jp/app/id1475444626?&mt=8)
[Android版ハピタスアプリ](https://play.google.com/store/apps/details?id=jp.hapitas.appnativeside)

[Web版ハピタスはこちら](https://hapitas.jp/)

業務でハマったことを書いていきます。

XCodeでスマホアプリをビルドしてシミュレーターを起動しようとしたら以下のようなエラーが出ました。

  • OTHERカテゴリの最新記事