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

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

Sign in with apple実装中に、サーバーサイド側でJWTを検証しようとしたところ、Signature verification raisedが発生する

iOSクライアントからJwt送信 -> Rails側でデコードをする場合に `Signature verification raised`が発生した
各種パラメーターは正しく与えているのにデコードに失敗してしまう
jwtの有効期限が切れたのかと思ったがそういうわけでもないようだった
結論、keysの正しいkidを選択していなかったことだった
Appleのサイトから証明書のjsonを取得すると、keysが2つあるのに気づいていた
確認したところ、デコードに使えるのは片方1つのみで、それはjwtの中に指定されている
正しいkeyのkidを指定したところ、うまく動くようになった

元記事を表示

Storyboardが複数の場合の画面遷移

# はじめに
`Storyboard:ViewController=1:1`で開発する時に画面遷移ってどうするんだろう、と思ったのでやってみました。
そこら中に記事があるので、自分用の備忘録として残しておきます。
想定は「Main.storybard」→「Sub.storyboard」の画面遷移です。

# 手順
1.`Main.storyboard`を開いて画面遷移する用のボタンを用意する。
main.png

~~~swift:MainViewController.swift
import UIKit

class MainViewController: UIViewController {

override func viewDidLoad() {
super.viewDid

元記事を表示

[Swift] Unity as a LibraryをSwiftから呼ぶ

基本的なところはここを見ながら進める。
https://qiita.com/tkyaji/items/7dbd56b41b6ac3e72635

SwiftでUnityクラスを作る。上の記事ならこんなかんじ。

“`swift
class Unity: NSObject, UnityFrameworkListener, NativeCallsProtocol {
static let shared = Unity()
private let unityFramework: UnityFramework

override init() {
let bundlePath = Bundle.main.bundlePath
let frameworkPath = bundlePath + “/Frameworks/UnityFramework.framework”
let bundle = Bundle(path: frameworkPath)!
if !bundle.isLoaded {

元記事を表示

Swift5 UITextFieldやUITextViewで全角文字数制限、半角文字数制限(全角数の倍)

#はじめに
UITextFieldやUITextViewで入力された文字数を制限する方法は簡単にできますが

半角全角混在した文字列を全角で50文字(半角だと100文字)みたいな
簡単にできそうな事がswiftで実現するには苦労しました

自分なりに試行錯誤しながら考えた方法ですが
下記の方法以外にいい方法があったら教えてください

#ゴール

#####最大文字数が全角で50文字(半角で100文字)以内という条件の時

全角で50文字、半角で100文字を越えるとそれ以上入力できない
もしくは超えた分を削除

#####詰まるところ半角全角が混在した文章がshiftJISで100バイトを超えない事

#コード全文

この後に冗長的な解説がありますので…取り急ぎコードのみでわかる方用に全文載せておきます

“`swift:ViewController.swift
//swift5

import UIKit

class ViewController: UIViewController, UITextFieldDelegate, UITextViewDelegate {

元記事を表示

iOS app開発 習得日記 (3)

(https://qiita.com/gomi_ningen/items/4e0e5bd98f08c4bcf93d)

続き

4.6.2
まで行くが、つまづく

エラーが理解できない

viewDidLoadにdelegateプロパティを設定するところ
“`
addTaskTextField.delegete = self
“`
ここで、Use of unresolved identifier とでる。
tableViewと同じように宣言しなければならないのはわかっているのだが、
どうすればいいのか?
接続するのか?

誰か教えてください!!

“`
import UIKit
import Foundation

class TODOMainViewContorller: UIViewController {

@IBOutlet weak var dismissButton: UIBarButtonItem!

@IBOutlet weak var tableView: UITableView!

@IBOutlet weak var

元記事を表示

遷移しよー!with CircleMenu

こんにちは!!!

## 手元からPCが消え去って1ヶ月。やっっっとパソコンが買えたので投稿。

### 今回はCircleMenuというオシャレなライブラリがあることを(今更)知ったのでこのアニメーションを利用してふわっと遷移しようという趣旨。
別にCircleMenuのオシャレなアニメーションに乗っかって遷移してるだけのハリボテです。

~~ブランクあるんや、、リハビリみたいなもんや、、~~

# 成果物

なんかgifだと残念な感じに円が残るけど実際には普通にスゥーっ!っと消えます!!!(血眼)

![Unknown](https://user-images.githubusercontent.com/61507019/78570467-fd975100-785f-11ea-8dcc-ab496d462cf1.gif)

# コード

“`swift

import UIKit
import CircleMenu

class ViewController: UIViewController {

let menuButton: CircleMenu = {

元記事を表示

【Flutter】BLoCパターンでアプリを作成してみた。~カウンターアプリ、githubリポジトリ検索アプリ~

## BLoCパターンとは
BLoC PatternはFlutterでのアプリケーション開発時に用いる、状態管理手法の1つです。
ビジネスロジックをコンポーネント単位で管理しやすくするためのパターンです。

[こちら](https://qiita.com/tetsukick/items/32d6cab8e176ecea2694)を参考にしてください。

## サンプルアプリの紹介

[Githubはこちら](https://github.com/Tetsukick/flutter_BLoc)

### カウンターアプリ
プラスボタン、マイナスボタンを押下することで画面中央の数字がインクリメント、デクリメントされます。

カウンターアプリカウンターアプリGitLab で Unity の iOS アプリを自動ビルドするようにしてみた

# GitLab で Unity の iOS アプリを自動ビルドするようにしてみた

GitLab で Unity の iOSアプリを自動ビルドするようにしてみました。
ipaファイルを配布するようにしたかったのですが、無料の範囲ではできないようです。
自動ビルドして作成した ipaファイルは Mac の Xcode を使って iPhone へインストールします。

## 環境

– macOS Catalina 10.15.4
– GitLab CE 12.8.6(Windows10上の仮想サーバーで動かしています)
– GitLab Runner 12.9.0(Mac上で動かしています)
– Unity 2018.4.20f1

## フォルダ構成

| ファイル/フォルダ | 内容 |
|:–|:–|
| TestProject_Unity/ | Unityプロジェクトフォルダ |
| TestProject_Unity/.gitignore | Git無視リストファイル |
| TestAutoTest/TestProject_Unity/Assets/Editor

元記事を表示

PokéAPIを利用してMVP+CleanArchitectureのiOSアプリを作ったので解説する

#はじめに
最近、勉強会などで、iOSの業務未経験の人たちと話している時に、これからiOSエンジニアとして仕事を得るためにどういったことを学べばいいのか、業務で実際にどういうことを意識して設計やツールを駆使しているかということをよく聞かれるので、それについて説明することができたらなと感じていました。

実際に業務で作っているコードを公開することはできないので、業務で作っているコードにかなり近い形のサンプルのアプリを作成、公開したので、それを参考にしながら私がどういったことを考えてiOSの業務をこなしているかについてを解説していきます。

**注意:これはあくまで私が個人的に思う業務における考え方であって、正解というわけではありません。一つの意見として捉えてもらえると幸いです。**

##最も重要なことは何か
私は、iOSに限らずアプリケーション開発の業務を遂行する上で、最も重要なことは、**アプリケーションのリリースサイクルを短くして、ユーザーに最速で最大の価値を提供し続けること**だと考えています。

それを達成するためには、以下の様なことを意識するのが効果的と考えて、業務で実践して

元記事を表示

iOS app の習得日記 (2)

(https://qiita.com/gomi_ningen/items/4e0e5bd98f08c4bcf93d)

続き

4.1 todoリスト作成までいった

```
import UIKit
import Foundation

class TODOMainViewController: UIViewController {

@IBOutlet weak var dismissButton: UIBarButtonItem!

override func viewDidLoad() {
super.viewDidLoad()
dismissButton.target = self
dismissButton.action = #selector(TODOMainViewController.dismissButtonTapped(_:))
}

func dismissButtonTapped(_ sender: Any) {
dismiss(animated: true, co

元記事を表示

【iOS】Realm Database簡単解説&サンプル!超簡単で高性能なモバイルデータベース!みんな使お??

#はじめに
Realm Databaseの簡単な解説とサンプルの記事です。
Realm自体、もう登場してから何年か経っているので
それなりに記事も出てきています!
なので特に目新しい事は無いかもしれませんが、
生暖かい目で見てくださいw

#Realm Databaseとは

###特徴はざっくり言うと次の通り

– モバイル向けに作られたNoSQLのデータベース
 (データの抽出はNSPredicateを利用する)
– SQLite、CoreDataより高速!
– 従来のテーブル定義がクラス定義になっている!
– 1体多のリレーションが持てる
– バックアップ、リストアが可能

この中でも**「従来のテーブル定義がクラス定義になっている」**という所が
私の中では一番のメリットだと思います!
このおかげてSwiftでアプリを作ってる方であれば
比較的抵抗無くデータベースを構築できると思います!

言葉だけではイメージが湧かないと思いますので、
さっそくサンプルを見ていきましょう!
ちなみに今回はRealmの導入方法は記載していません。
導入方法を探している方は他の記事をあたってくださ

元記事を表示

Flutter環境構築 – 2(Xcode・iOSシミュレーターセットアップ編)

#はじめに
前回の「[Flutter SDKインストール編](https://qiita.com/naru_chan__/items/359fcdfb8aa092e9a44e)」に引き続き、
今回は「Xcode・iOSシミュレーターセットアップ編」です!
Flutter SDKのインストール・Flutterコマンドのセットアップがお済みでない方は、
先に「[Flutter SDKインストール編](https://qiita.com/naru_chan__/items/359fcdfb8aa092e9a44e)」をご覧ください。

#「iOSシミュレーター実行編」でやること
本編では以下の項目を行います。

– Xcodeのインストール
– iOSシミュレーターのセットアップ
– Flutterアプリを作成し実行する

では次項目より実際に作業していきます。

#Xcodeをインストールする
#### 1.App StoreよりXcodeをインストール
App StoreにてXcodeを検索し、インストールします。

すでにインストールされている方はアップデートがないかを確認し、
最新バ

元記事を表示

SwiftUI で開発した iPhone/iPad アプリをリリースしてみた

先日 SwiftUI ベースの iOS/iPadOS アプリをリリースしたので、そこで気づいたことを共有します。

作ったのは [icotile というアプリ](https://apps.apple.com/app/icotile-twitter-list-manager/id1489092646)で、Twitter のリストや友達を管理するものです。Vue.js ベースの [Web アプリケーションとしてすでにリリース](https://icotile.ogaoga.org/)していて、API も揃っているので、移植してみました。

? 無料なので、動きなどは実際に試してもらえればと思います。
[‎icotile (Twitter List Manager) on the App Store](https://apps.apple.com/app/icotile-twitter-list-manager/id1489092646)

![icotile-iphone-ipadのコピー.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

iPhoneのショートカットアプリからAPIを使って複数のSESAMEを同時に解錠する

先日、CANDY HOUSEの[SESAME mini](https://jp.candyhouse.co/)を購入しました。我が家のドアには鍵が2つ付いてるので、SESAMEも2つです。解錠するときiPhoneアプリのUnlock All機能を使っていたのですが、

1. iPhoneのロック解除
2. アプリの起動
3. サイドバーの表示
4. Unlock All

とちょっとステップが多いので、iPhoneのショートカットアプリを使うことにしました。ショートカットをウィジェットに登録しておけばiPhoneのロック解除も不要になるので、

1. ウィジェットを表示
2. ショートカット

でいけます。

実はショートカットを使ったSESAMEの解錠はSESAMEの公式ブログでも紹介されている[^sesame-shortcuts]のですが、残念ながらiPhone 8では利用できませんでした。
そこで、この記事ではショートカットからSesame APIを使って解錠する方法を紹介します。

[^sesame-shortcuts]: https://ameblo.jp/candyhous

元記事を表示

【Flutter】BLoCパターンとは?

## BLoCパターンとは?
BLoCパターンは、Business Logic Componentの略
BLoC PatternはFlutterでのアプリケーション開発時に用いる、状態管理手法の1つです。
ビジネスロジックをコンポーネント単位で管理しやすくするためのパターンです。

## BLoCのガイドライン
1. インプットとアウトプットは、単純なStreamとSinkに限定する。(Inputs and outputs are simple Streams/Sinks only.)
2. 依存性は、必ず注入可能でプラットフォームに依存しないものとする。(Dependencies must be injectable and platform agnostic.)
3. プラットフォームごとの条件分岐は、許可しない。(No platform branching allowed.)

メモ的に参考資料をまとめておきます。

## 参考記事
– [長めだけどたぶんわかりやすいBLoCパターンの解説](https://qiita.com/kabochapo/items/8738223894

元記事を表示

iOS app の習得日記 (1)

こちらの記事を参考に
実習中
(https://qiita.com/gomi_ningen/items/4e0e5bd98f08c4bcf93d)

“`
import UIKit

class ViewController: UIViewController {

@IBOutlet weak var lable: UILabel!

@IBAction func buttonOnTouchUpInside(_ sender: Any) {
let now = Date() // 現在時刻を取得
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: “ja_JP”) // ロケールを指定
dateFormatter.dateFormat = “yyyy/MM/dd HH:mm:ss” // 時刻表示のフォーマットを指定
// 指定したフォーマットで現在時刻を取得してラ

元記事を表示

Swift データの保存と呼び出し

iOSのアプリでは、データの保存をしていないと、タスクキルをするたびに、行った操作がリセットされる。そのため、データの保存と呼び出しが必要となる。

**データの保存のやり方**

“`Swift:sample.swift
//objectsというデータを保存したい場合
UserDefaults.standrad.set(objects, forKey: String)
“`
*objectを定義している場所によっては、self.objectsとする。*
[forKey: String]の部分は、[forKey: “Store1”]のように自分で名前をつける。
この場合だと、以下のように書く。

“`Swift:sample.swift
//objectsというデータを保存したい場合
UserDefaults.standrad.set(objects, forKey: “Store1”)
“`

これは、Store1にobjectsを保存するということである。
新しくobjectsを更新するたびに、同じように保存すれば、Store1も更新される。

同じキーに2回以上保存を行っ

元記事を表示

iOS開発でDEV環境を構築する

iOSアプリを運用していくにあたって、アプリの配布やサーバーサイドとの連携は必須となります。
その際にクライアント側でDevやStaging、Releaseなど環境を使い分けたいケースは必ず出てきます。
今回はXcode上でDev環境を作る一連の流れをまとめてみました。
複数の環境を追加したい場合もこの流れで同じことを繰り返していけば良いので、簡単です。

この記事ではConfigrationを変更することで、DEV環境を作ります。
他にもTargetsを増やす方法やxcconfigファイルを使用する方法もあるので、チェックしてみてください。

## ProjectのConfigurationのNameをDebug -> Developに変更
単純にリネームです。
3つ以上環境使い分けたいケースでは、ここで追加をしてください。

スクリーンショット 2020-03-30 22.19.53.pngiosアプリ開発 初心者

# はじめに
これからiosアプリを開発していくにあたって日々学んだことをアウトプットしていきます。
少しでも参考になれたらと思います。

## Mac
AndroidアプリはMacとWindowsどちらでも開発可能ですが、iPhone用のアプリを開発するにはMacが必要です。

これからアプリを開発していこうと考えている方はMacのPCを
買うことをおすすめします。

### Xode
XcodeはAppleが無料で提供しているiosアプリ開発では王道のツールです。
iPhone、iPad、Mac、Apple Watchのアプリを開発できます。

※XcodeはMacでのみ動作しますが、最新バージョンのXcodeをインストールするためには、MacのOSも最新バージョンである必要があります。

#### Swift
SwiftはAppleが開発した新しいプログラミング言語で2014年から使わています。

対象としているOSは、MacOSとiOSで、PhoneやiPadなどの端末で使えるアプリ、パソコン向けのアプリを開発することができます。

これまではObjective-C使われて

元記事を表示

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

こんにちは 皆さん!Dreamwalkerです。
皆さんはFlutterを使って楽しんで開発進んでいますか?

今回は15回目の私がDribbbleのサイトの中で、
気に入れたデザインをFlutterで作ってみた。。ということになります。

Dribbbleというサイトは色んなデザイナーさん達が色んなデザインを載せていて
デザインをの知識というか、デザイナーじゃない人でも、開発に参考になったり、役に立ったりするサイトです。まあ、デザインに対して、色んなサイトありますけれど私はDribbbleを愛用してます。

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

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

右側の席を選ぶ画面を作ってみたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/52956ebe-e295-c343-e229-df0ff2a37e1f.png)
https://dr

元記事を表示

OTHERカテゴリの最新記事