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

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

忘備録-基本的なiOSアプリ開発

趣味でiOSアプリ開発をかじっていた自分が、改めてiOS開発を勉強し始めた際に、曖昧に理解していたところや知らなかったところをメモしています。いつか書き直します。

## 参考文献

この記事は以下の書籍の情報を参考にして執筆しました。4章を読んだ時のメモです。

– [本気ではじめるiPhoneアプリ作り Xcode 10.x対応 (Informatics&IDEA)](https://www.amazon.co.jp/%E6%9C%AC%E6%B0%97%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BiPhone%E3%82%A2%E3%83%97%E3%83%AA%E4%BD%9C%E3%82%8A-Xcode-10-x%E5%AF%BE%E5%BF%9C-Informatics-IDEA/dp/4815600031/)

#4章の概要
4章では電卓アプリを作りながらアプリ開発の基本を学べました。プロジェクトの作成方法から部品配置、コーディング、画面遷移、Auto Layoutについて学べます。本記事ではその中で知らなかったことを忘備録と

元記事を表示

RSSデータの更新日を取得してTableViewで新しい順に並び替える

# はじめに
 エンジニアブログのまとめアプリを作っている時に、ブログの更新日を取得して順番に並び替える機能を実装しました。その際にハマったところをまとめます。

開発環境
– Xcode 11.2.1
– Swift5
– macOS 10.15.1

#完成形
![スクショ8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533606/4c149a58-3dd4-a417-3c58-c5907b7bb846.png)

#実装
手順は以下です
①各ブログのRSSデータを取得する
②XMLParserで「pubDate」の部分をパースする
③sort(by:)メソッドで並べ替える
④「Sat, 07 Dec 2019 03:17:56 +0000」のような書式で取得されるので「11月7日(土)」のような書式に変換する
⑤TableViewのLabelに表示する

##①各ブログのRSSデータを取得する
“`swift:ListViewController.swift
import UIKit

cl

元記事を表示

iOS13とVision.frameworkで犬と猫に癒される

Ubiregi Advent Calendar 2019 17日目です。

今回はiOS13のVision.frameworkで新たに使えるようになった`VNRecognizeAnimalsRequest`を使って動物(?と?)を識別するアプリのサンプルを紹介します。

## Vision.frameworkとは

![e3663268-5db4-42c9-a7f0-2114920a9f1f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108964/3724285f-b324-af04-180f-b0817afecc37.png)
参照:https://developer.apple.com/documentation/coreml

– iOS11から追加された画像や映像から人や文字など様々なものを識別するAPIを提供するApple標準フレームワーク
– 機械学習フレームワークの`Core ML`を抽象化したもの
– iOS13から新たに?と?の識別子が追加された???

## やってみた

![D

元記事を表示

iOSで使えるQR決済系API調査

## LINE Pay
・Web or LINE bot から使用可能 (外部アプリでできるか不明)
・LINEの決済ページへ遷移して決済を実行する
使用例: https://qiita.com/ufoo68/items/a6d036d143fe4950aea3

## PayPay
・[APIは一般には開放していない](https://about.paypay.ne.jp/docs/terms/paypay-merchant-terms/)
※ 加盟店がPayPayユーザーからの商品等の注文等を自己のシステムにおいて管理できるようにするのみ使用可能

## Apple Pay (メルペイのiDを含む)
・[ApplePay API](https://developer.apple.com/jp/apple-pay/implementation/)を利用する
・Swiftネイティブで実装するので実装コストは一番低そう
・`PKPaymentNetwork `より、オプションで決済を許可するカードブランドを指定できる
→ https://developer.apple.com/do

元記事を表示

アプリ内課金の価格改定した話

# はじめに

NewsPicksの桐畑です。
先日、NewsPicksではiOSとAndroidアプリの定期購読価格を改定いたしました。
今回、その時の具体的な手順や注意すべきポイントをお伝えしたいと思います。

※なお、2019年11月時点の話となります。動作をなんら保証する情報ではありませんので、その点ご留意ください。

# アプリ内課金について

iOSとAndroidのアプリ内課金には大きく、`都度課金` / `定期購読課金` があります。

`都度課金` は、課金したタイミングに応じてアプリ内のサービス(ポイントやガチャ用の魔法石など)が発生するタイプの課金です。
*例:5,000円で魔法石300個を購入*

`定期購読課金` は、その名の通り定期的に課金が発生し、課金継続期間中はサービスが利用できます。
*例:毎月 1,600円が課金されて、課金期間中は記事と動画見放題 。*

# 定期購読の価格改定方法

また、定期購読の価格改定方法にも大きく以下の2パターンがあります。

## 1. 全ユーザーに一律で新価格を適用

既存ユーザー / 新規ユーザー問わず、シンプルに

元記事を表示

FeliCa システムコードの切り替えは Polling コマンドのみで【iOS 13 Core NFC】

さて、この Core NFC Advent Calendar 2019 で、私は以下の FeliCa カードの読み取りに関する記事を執筆、公開しました。

– [iPhone で電子マネー(楽天Edy、nanaco、WAON)を読み取ってみよう!](https://qiita.com/treastrain/items/f5c518486d19ba3573d3)
– [iPhone で交通系IC(Suica、PASMO、ICOCA、…etc.)を読み取ってみよう!](https://qiita.com/treastrain/items/d54ef2c2abbcd40fb9f1)

そして FeliCa の特徴として、1つの物理カードの中に複数のシステムを持つことができる、というものがあります。これにより、1枚のカードで複数のサービスが利用可能になります。

[**FeliCa が複数のシステムを持つことができることをご存知の場合は本題までスキップ**](#本題)

# 1枚のカードに1つのシステムがあるパターン
例えば、Suica、PASMO、ICOCA などに代表される交通系ICは `

元記事を表示

【初学者向け】Flutterを使ってアプリを作る

こちらは、[TOWN Advent Calendar 2019](https://adventar.org/calendars/4335) 17日目のエントリーです。

[Flutter](https://flutter.dev/)とは、Googleによって開発された、単一のソースコードからiOS/Android両方のアプリケーションを構築することができるオープンソースのモバイルのアプリケーションフレームワークです。
今回はQiitaの記事を一覧表示するFlutterのアプリを作ってみました。

## 開発環境構築
以下のエントリを参考にさせていただきました。
⇛ [Flutter開発環境構築(Mac編)](https://qiita.com/akatsukaha/items/3b8a5a6d94a3cdb1e047)

## 作ったもの
[![Screenshot from Gyazo](https://gyazo.com/8b281681ccb6066ee6e5153d12a86f70/raw)](https://gyazo.com/8b281681ccb6066ee6e5153d

元記事を表示

【ios12.3~】iosデバイスを脱獄する方法【checkra1n】

現状でiosを脱獄する手順を簡単に説明した記事です。脱獄とは何か、どのようなことができるのかといったことは省略します。

### この記事の対象者
– iosバージョン12.3以上
– iPhone 5sからiPhone Xまでのiosデバイス

### 必要なもの
– MacOS
– checkra1n (https://checkra.in/ からダウンロードしてくる)

### 手順
1. iphoneのバックアップを行う(optional)
2. checkra1nを起動する
3. iphoneをMacに接続する
4. checkra1nの指示に従う

元記事を表示

SIer営業からiOSエンジニアになったお話し

# はじめに

[からくり Advent Calendar 2019](https://qiita.com/advent-calendar/2019/caraquri)の16日目を担当します。
宜しくお願いいたします。

# 本記事を書こうと思った経緯

**私は新卒で入社したSIerで技術営業を4年していました。**
ですが、今ではiOSエンジニアをしています。

私は元々理系4大卒で、最初にプログラミングを勉強したのが情報処理の講義で扱ったC言語でした。
その際、C言語に挫折し必修の単位を落とし掛けそうになりました。

結果的にプログラミングを毛嫌いするようになってしまい、この先プログラミングをすることはないだろうと当時思っていたほどです。

それが今では、コードを書くエンジニアになっています!

その背景や経緯を知ってもらい、**これからエンジニアを目指す方の参考に少しでもなればと思い**記事を書くことにしました。

# 経歴

– 理系4大卒
– 2015年に大手SIerに入社
– 技術営業として配属
– 2018年7月に退職
– 2018年8月よりiOSエンジニアとして[か

元記事を表示

ReactiveSwift を使ってQiitaの記事一覧を表示するアプリを作った

## そもそも[ReactiveSwift](https://github.com/ReactiveCocoa/ReactiveSwift) とは
Reactive Extensionsでの実装をするためのライブラリで、よく比較対象にあがるのは[RxSwift](https://github.com/ReactiveX/RxSwift)です。
大きな特徴としては、HotなObservable, ColdなObservableそれぞれ異なる型を持っています。

## なぜReactiveSwiftなのか?
ちゃんとした理由があるとかではないです。今回やろうと思ったきっかけという感じになるのでご了承ください。
採用面接時に RxSwift ではなく ReactiveSwift を使用しているとの話があり、その際に先ほど挙げたHot/ColdなObservableが型から違ってHot/Coldを意識した実装が可能という話を聞き、気になっていました。安直ですが、それが今回使ってみようと思った理由です。

## 依存関係
– [QiitaAPIKit](https://github.com/ry

元記事を表示

iOSアプリ作成時の証明書の期限アラート

本記事は、[サムザップ Advent Calendar 2019 #2](https://qiita.com/advent-calendar/2019/sumzap2) の12/16の記事です。

# 今回やること!
普段、iOS向けのアプリ開発を行っている方たちには
お馴染みの証明書周りについて触れてみます。

皆さん、こういうことありませんか?

気づいたら証明書の期限が間近に迫っており、
結構ギリギリに「更新しました!」というのは自分だけではないはず。。。

現チームの場合、証明書を更新したタイミングで簡単なリマインダーを設定して
証明書の期限の検知を行なっていたのですが、
リマインダーの設定忘れなどがあるとそもそも検知が難しくなるなどの理由から
今回はMacに登録されている証明書を直接取得して対応してみました。

# 前もって
– 証明書が登録されているMacで定期的にチェックを行う仕組みを前提としました。
毎日一度は起動する!など一定以上Macが動作している状況でないと意味がないかもしれません。

– GNU版などの導入はせずに、Macにデフォルトで入っているBSD版で

元記事を表示

[Laravel]iOSアプリへのプッシュ通知をLaravelのNotificationを使って送信する方法

# 概要
サーバーサイドにLaravelを使っているプロジェクトで、
iOSアプリ用のプッシュ通知を実装する機会があったので、その備忘録です。

Laravelでのサーバーサイド開発もiOSアプリ開発もまだまだ入門者レベルなので、
内容に誤り等ありましたら、ご指摘いただければと思います。

# 前提
PHP 7.2
Laravel 5.8
諸々の証明書 発行済み

# 使用ライブラリ
[Laravel APN (Apple Push) Notification Channel](https://github.com/laravel-notification-channels/apn)

# インストール
“`
composer require laravel-notification-channels/apn -v 0.4.0
“`

# 設定
“`config/broadcasting.php

‘connections’ => [
//追記
‘apn’ => [
‘environment’ => ApnChannel::PRODUC

元記事を表示

忘備録 – iOSアプリ開発の前知識

趣味でiOSアプリ開発をかじっていた自分が、改めてiOS開発を勉強し始めた際に、曖昧に理解していたところや知らなかったところをメモしています。いつか書き直します。

## 参考文献

この記事は以下の書籍の情報を参考にして執筆しました。1章と3章を読んだ時のメモです。

– [本気ではじめるiPhoneアプリ作り Xcode 10.x対応 (Informatics&IDEA)](https://www.amazon.co.jp/%E6%9C%AC%E6%B0%97%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BiPhone%E3%82%A2%E3%83%97%E3%83%AA%E4%BD%9C%E3%82%8A-Xcode-10-x%E5%AF%BE%E5%BF%9C-Informatics-IDEA/dp/4815600031/)

##アプリ開発の流れ

1.企画
2.製作 : デザインの検討や画面パーツを作成する
3.開発 : プログラミングを行う
4.テスト
5.リリース
6.フィードバック対応 : ユーザの反響への対応とアップデー

元記事を表示

FirebasePredictionsで効率的な有料会員獲得を目指す

[NewsPicks Advent Calendar 2019](https://qiita.com/advent-calendar/2019/newspicks) 16日目の記事です。

## Subscriptionの獲得が大事
NewsPicksのネイティブアプリではiOS・Androidともに月額によるSubscriptionを提供しています。
課金獲得数がそのまま収益へと繋がるのでチーム一同毎日どうすればユーザーに価値を感じてもらいSubscriptionに登録してもらうのか、またどうすればずっと登録を継続してもらえるのか考えています。
最近ではユーザーの行動ログ分析やユーザーインタビューなどを行い施策に落とし込むことをしています。しかし行動ログの分析には難しい統計学の知識が必要で専門的な能力が必要です。残念ながら僕にはそのような知識はないので今すぐどうこうできません。ユーザーインタビューを行おうにも人見知りの激しい僕にはハードルが高い施策です。そんな困った人に救いがあるのがFirebasePredictionsです。

## FirebasePredictionsとは
ざっ

元記事を表示

名前付き UIView と後付けストアドプロパティもどき

## 名前付き UIView

Storyboard などで配置した UIView に `@IBOutlet` を使わないでアクセスしたいとします。なぜ、`@ IBOutlet` を使わないかは大人の事情で割愛するとして、そうした事情でコードなどで特定の UIView をアクセスしたい場合に、Storyboard で配置した UIView やそのサブクラスに、tag に数字を仕込み、 `viewWithTag()` で 特定のViewにアクセスする事ができます。

“`.swift
// An integer that you can use to identify view objects in your application.
var tag: Int

// Returns the view whose tag matches the specified value.
func viewWithTag(Int) -> UIView?
“`

最近、またこの大人の事情で、`@IBOutlet` を使わないで、特定のViewにアクセスする必要が出てきました。以前と同様`tag

元記事を表示

大学祭でシステムを作った話(デジタルパンフレット・公式App編)

背景・結論編の続きです。
今日はデジタルパンフレットアプリについて語ります。

## 何を作ったのか
大学祭で、行われている企画の一覧や詳細を確認できるほか、構内のマップを表示できるようにするアプリです。

## なぜ作ったのか
INIADでは、学部の方針として、MOOCsの活用や、デジタルサイネージ・Gmailの活用で、なるべく紙を使わずして情報をやり取りできるようにしています。
とはいえ、来場者にそれを強いることはできないので、紙のパンフレットを製作・配布していましたが、何となく情報系学部なのにその辺解決できないかな・・・そうだ!スマホアプリにしよう!となった次第です。(なお、やっぱり全員アプリというのは難しいので紙のパンフレットは製作しました)

## 使用したツールなど
今回は、iOS向けに開発しました。(Android版は、自分が書けなかったので、大学の友人にお願いしていましたが、時間がなかったのが災いして間に合いませんでした・・・来年は自分がちゃんと書けるようになりたいな・・・)
Swiftによるネイティブアプリです。
アプリのバックエンドは、RailsでWeb APIを構

元記事を表示

パソコン中古から復帰するための・・・記事

iOS 10.8 今のバージョン iOS 最新バージョンにあげたい!!

パソコンが壊れてハードディスクがいっちゃってる!ってなったのですよね!

だから新しく パソコンを中古で購入して、、、今

iOS 10.8 だということがわかりました。

iOS 10.9 段階を減ると

iOS 10.14 以降はサポートしてるっぽいのだけども

iOS 10.8からだとサポートしてないので過去のダウンロードサイトを利用し鐵賦活するために一つ一つダウンロードしていくと決めた。

ダウンロードページ
https://developer.apple.com/download/more/

Xcode download でもよく使っているのだけども ディベロッパーだとみれるのかな?

その奮闘と順番を書いていこうと思うです。

どうやら

元記事を表示

YAMAP iOSアプリのCI環境のおはなし

この記事は、[YAMAP エンジニア Advent Calendar 2019](https://qiita.com/advent-calendar/2019/yamap-engginers)の17日目の記事です。

※ 主に 2019/12/11 に行われた [【福岡】 CircleCIユーザーコミュニティミートアップ#3](https://circleci.connpass.com/event/154878/) で発表した内容のおまけです。

## 発表した資料

– [YAMAP iOSアプリでつかってる .circleci/config.yml](https://tkysfjk.github.io/files/2019-12-11-circleci-me

元記事を表示

iOS13で並び替えアニメーション

# はじめに
iOS12以前のCollectionViewやTableViewのデータの扱い方や並び替えのアニメーションのイメージを一言で表すと、「煩雑で難しい」でした…

ところが、iOS13からCollectionViewやTableViewでのデータの扱い方が簡単になった&なんかアニメーションも自動でやってくれるようになりました!

ただ、なったはいいのですがiOS12以前のアニメーションの仕組みを考えるととてもその自動アニメーションの動作が本当に実用に耐えうるのか疑問が残るところ…

こいうことで実際に自動アニメーションを何パターンか試してみました!

## どう変わったのか
### iOS12以前
#### データの扱い
特にデータを扱うためのクラスなどはなく、自分でデータをよしなに扱う必要がありました。
また、このデータと表示されるセルの対応などをUICollectionViewDataSourceで自分できちんと扱う必要がありました。
多分こんな感じで扱う人が多かったんじゃないかと

“`swift
struct Section {
/// 何か必要なデ

元記事を表示

iOSにRouterという概念があるらしい。

## 初めに
この記事はこちらの本を参考にしています。
https://peaks.cc/books/iOS_architecture
詳しく知りたい方はこちらを読みましょう。
MVVMやMVP,クリーンアーキテクチャ,Reduxなど様々なアーキテクチャについて書いてあるので本当にためになります。
全ての内容を事細かに書くと本のネタバレになってしまうので、自分なりに**ざっくり**まとめて書きたいと思います。
## Routerとは
viewControllerから画面遷移の処理を切り離すことで画面遷移の部分を見やすくし、viewControllerに記述する量を減らすことができる。
TransitionerとRouterに分けます。
Transitionerでは下のようにprotocolextensionを使って画面遷移の共通部分を初期化します。

“`swift:Transitioner
protocol Transitioner: AnyObject where Self: UIViewController {
func pushViewController(_ viewC

元記事を表示

OTHERカテゴリの最新記事