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

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

【Xcode】CocoaPods で複数ライブラリを導入したらハマった話

## はじめに
個々のサンプルプロジェクトでは問題なく動いていたのに、1つのプロジェクトにライブラリをまとめたらハマってしまったので、原因と対策をメモしておきます。

## 発端
イーサリアム用のライブラリと、AWS 用のライブラリのサンプルをそれぞれ試して導入の目処がたったので、下記の **Podfile** にて、開発中のプロジェクトへ導入しました。

“`:Podfile
source ‘https://github.com/CocoaPods/Specs.git’
platform :ios, ‘10.2’

target ‘AppEnv’ do
use_frameworks!
pod ‘web3swift’
pod ‘AWSAppSync’
pod ‘AWSS3’
end
“`

で、サンプルのコードを開発プロジェクトへ取り込んでコンパイルしたところ、**web3swift** 関連コードでエラーが発生。「あれ?」と思ってフレームワークを見てみると、なぜか頭が大文字にリネーム(?)された **Web3swift** に差し変わっていてポカン

元記事を表示

Swiftでiosアプリ開発-1【個人記録】

#概要
[「たった2日でマスターできるiPhoneアプリ開発集中講座 Xcode 11 Swift 5対応」](https://ticklecode.com/swiftbook2019/)
に沿って、Swiftでのiosアプリ開発を学習してみることにしました。その記録用です。

#じゃんけんアプリ
#楽器アプリ
###パーツの配置
楽器アプリには、シンバル、ギター、Play、Stopというパーツがある。
それぞれ、のパーツは押すことによってプログラムが動作することが要求されるため、パーツはそれぞれButtonである。

###1.使う画像をAssets.xcassetsに格納する
これで、プログラムやAttributesInspectorから画像を呼び出せるようになる。

###2.パーツを配置する
AttributesInspectorから+ボタンで、配置したいパーツを選択し、それをドラッグ&ドロップで配置していく。
スクリーンショット 2020-03-28 18.25.59.png初心者によるRxSwiftのデモ

## RxSwiftとは

RxSwiftの前身はMicrosoftが開発した.NET用のライブラリ「Reactive Extensions」です。このReactive Extensionsの概念が有効だったため、数々のプログラミング言語へと移植されました。その中でSwiftに移植されたのがRxSwiftです。

## リアクティブプログラミングとは

リアクティブプログラミングとは「値の変化」と、それに対する「振る舞い」の関係を宣言的に記述するプログラミングの一種です。
例えばボタンを押すとラベルの文字が変化する、のようなユーザーインタラクティブなシステムや、通信処理などの非同期処理などで簡潔にかけるため特に有用です。数々の言語へ移植されている点がその有用性の証明とも言えます。

SwiftではiOS13専用で公式より[Combineというフレームワークがリリース](https://developer.apple.com/documentation/combine)されましたが、これはRxSwiftの概念を多く真似して作られているようです。

Combineを理解するための前提として

元記事を表示

iOSアプリのMultitasking対応について

## はじめに
WWDC2019にて2020年4月までにMultitaskingをサポートすることが必須と発表されました。
そして今年1月、必須ではないにしてもMultitaskingをサポートすることを **強くお勧めする** とアナウンスがありました。
もちろん対応しなければアプリをリジェクトされるわけではありませんが、今後Multitaskingが重要となっていくことは明らかです。
そこで今回はMultitaskingの対応方法および、注意すべき点についてまとめていきます。
[iPhoneとiPadに適したユーザーインターフェイスの構築](https://developer.apple.com/jp/news/?id=01132020b)

## Mutitasking設定方法
1. `Requires full screen`にチェックが入っている場合は外します
スクリーンショット 2020-03-28 15.17.59.pngアプリ申請自動化とAppleID2ファクタ認証

# はじめに
2019年にAppleDeveloperProgramのAppleIDは2ファクタ認証が必須となりました。(AccountHolderというもっとも権限を持つアカウントのみ)

この2ファクタ認証が有効になることにより、
CIサービスを用いたアプリ申請自動化にどのような影響が出るのか
またその回避策を改めてまとめた記事です。

この記事はfastlaneを中心に情報をまとめます。

# 2ファクタ認証 OFFが最もシンプル
はじめに述べてしまいますが、
もっともシンプルな解決策は2ファクタ認証を有効化**していない**アカウントを用意することです。
運用上、それが難しい方がこの記事でなんらかの解決策を見出して頂けると嬉しいです。

# 前提情報
### アプリ申請の手順
今回はアプリ申請に関わる手順を以下のものとします。

1. ipaファイルをAppstoreConnectにアップロード
2. ストア情報のアップロード (説明文やスクショ等)
3. 再コンパイルの完了を待つ
4. アプリ審査提出
5. 再コンパイル後のdSYMをダウンロード
6. firebase等にd

元記事を表示

Firebase Crashlyticsの導入

## 思ったこと
– Firebaseのドキュメントが古かった。
– https://firebase.google.com/docs/crashlytics/get-started?hl=ja
– 最初にみたドキュメントが古くて、同じことを2回やる羽目に
– Xcodegenの対応
– XcodegenだとprebuildScriptsのscriptがcocoapodsのスクリプトよりも前に呼ばれて、エラーが出る問題
– https://qiita.com/gin0606/items/3935027fef9597ddf6e7
– W/A的に対応したけど、もっといい方法がありそう。。。

## ドキュメント
– 一番新しいやつスタートガイドライン
– https://firebase.google.com/docs/crashlytics/get-started-new-sdk?platform=ios&authuser=1
– Fabricから移行するとき
– https://firebase.google.com/docs/

元記事を表示

AWS AppSync用にaws-appsync-codegenでiOS(Swift)のソースコードを生成する

AWS AppSyncでiOS(Swift)用のコードを生成する時に勘違いしていたことがあったので、それについて公式のサンプルから理解できるように細かく書いておきます。私自身がAppSync歴1日なので正確に理解できているかもわかりませんので、その点についてはお手数おかけいたしますがコメントなどでご指摘よろしくお願いします。

また、現状(2020年)ではAppSyncの公式ドキュメントはAmplifyを使うことが前提とされており、Amplifyを使わない場合はやり方を探すのはかなり難しい。難しいので書き残しておきますというモチベーションです。

サンプルはAWS AppSync公式で説明されている[サンプルスキーマ「イベントアプリ」](https://docs.aws.amazon.com/ja_jp/appsync/latest/devguide/quickstart-launch-a-sample-schema.html)からです。

# 最初に結論

おそらくこのページを見ている方が最も知りたいのはコード生成のコメント`aws-appsync-codegen`についての使い方で

元記事を表示

[Flutter] iOS 13.4にアプデ後実機デバッグができない場合の対処法

iOS13.3.1では実機デバッグができず辛い思いをしていましたが、
ついにiOS13.4がリリースされたのでいざ挑戦!!

と思いきや以下エラーでビルドが通らない。

“`
Building for iOS, but the linked and embedded framework ‘App.framework’ was built for iOS Simulator.
“`

対処法は以下
1. ios/Flutter/App.framework ディレクトリ以下を削除
2. 再ビルド

するとビルドが通るようになりました。

元記事を表示

[RxSwift] RxSwiftとは

#RxSwiftとは
コードが新しいデータに反応、順次的に分離された方式で処理される、非同期プログラム開発が簡素化できる、データの変化に対応しやすい。
`observable` `asynchronous` `functional` `via schedulers`

##RxSwiftの基礎
Rxの3つの構成要素についてみてみる
Observables、Operators、Schedulers

###1.Observables
– Observable クラスはRxの基盤
– `T`タイプのデータを渡す、イベントを非同期に生成
– 他のクラスでemit(放出?)する値を購読できるようにする
– ObservableTypeのProtocol(Observable)はシンプルで、以下の3つのイベントのみemitし、observersはこの3つのみ受信できる
– next:最新/次のデータを渡すイベント
– completed:成功的にイベントを終了させるイベント。追加イベント生成しない
– error:Observableがエラー発生。追加

元記事を表示

Youtubeのサムネイルを検索できるアプリをリリースしました!

##はじめに簡単な自己紹介✍️
主にiOS開発をメインに勉強しております、私立文系の凡人大学生です、、、?
今年の目標は応用情報技術者試験に受かることです〜!

##リリースしたアプリ?

![YoutubeGif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302458/7ba2705a-e4c1-453b-a6c9-1162b725cf3b.gif)

Youtubeのサムネイルを検索できるアプリになっています。

App Store
https://apps.apple.com/jp/app/%E5%8B%95%E7%94%BB%E5%88%86%E6%9E%90/id1502014149

GitHub
https://github.com/geekshu625/YoutubeAPI
(改善点あればプルリクとか貰えますと泣いて喜びます)

##なぜ作ったか??
###Youtubeのサムネイルを検索できるプラットフォームがない

最近、僕の友人にもYoutuberになる人が現れ、様々なツ

元記事を表示

【超初心者向け】クロージャの書き方【swift】

##クロージャとは
swiftのLanguage Guideによると
>クロージャは、コードの中で渡したり使用したりすることができる自己完結型の機能ブロックです。

>中略

>クロージャは、それらが定義されているコンテキストから任意の定数や変数への参照を取得して保存することができます。これは、それらの定数や変数の上で閉じることとして知られています。

最近話題のDeepLに翻訳してもらいました。

##関数をクロージャにしてみよう!

以下の関数をクロージャで書いてみます。

・関数

“`swift
func closurePractice(num1: Int, num2: Int) -> Int {
return num1 + num2
}
“`

・クロージャ

“`swift
{ (num1: Int, num2: Int) -> Int in
return num1 + num2
}
“`

クロージャを使うと、このように処理を簡潔に記載することができます。

##クロージャをもっと簡潔に書いてみる
型推論を使うことで、データ型の記載を省略することが

元記事を表示

【AppStore申請】スクリーンショット作成

今回AppStore申請時に、スクリーンショットの生成ツールとして、[APPLAUNCHPAD](https://theapplaunchpad.com/)というツールを使用したので紹介。

## [APPLAUNCHPAD](https://theapplaunchpad.com/)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/5cdf9328-f6dc-c1bb-78fd-595a802b7dba.png)

## 作成した様子

iPhone7で撮影したスクリーンショットを基に、自動で各サイズのスクリーンショットを生成してくれ、流行りの感じの広告風の画像が作成できた。

無料だとテンプレートは限られるが、十分に使用できると感じた。

簡単に作成したのはこんな感じです。↓↓↓

![screencapture-theapplaunchpad-dashboard-ios-2020-03-24-07_27_48.png](https://qiita-image-stor

元記事を表示

Flutter iOS permission_handler 不要なパーミッションリクエストを削除する

[permission_handler](https://pub.dev/packages/permission_handler) は、Flutter用のアプリ権限プラグイン。 このプラグインは、権限をリクエストおよびチェックするためのクロスプラットフォーム(iOS、Android)APIを提供します。

このプラグインを導入すると、内部的にすべての権限のリクエスト処理があるためか、
アプリの送信を行うと、たくさんの権限のリクエストに関連した設定が不足として、has one or more issuesメールが送られきてしまいます。

加え、
**ビルドステータスが”バイナリが無効”に変更されました**
とされ、 App Store Connectへのアプリの送信が完了することができませんでした。

Missing Push Notification Entitlement あたりのみの場合であれば、無視できるのが通常ですが、これほどあるのはまずいようです。

使用しない権限の削除する方法について、[プラグインページ](https://pub.dev/packages/permissi

元記事を表示

FlutterでWidgetの位置とサイズを取得する

#FlutterでWidgetの位置やサイズを取得したい
検索しても地図上の位置を取得するのばっかヒットしてつらい

###GlobalKeyを使ってRenderBoxを取得する
[参考サイト:https://medium.com/@diegoveloper/flutter-widget-size-and-position-b0a9ffed9407](https://medium.com/@diegoveloper/flutter-widget-size-and-position-b0a9ffed9407)

“`dart:TestState.dart
//class TestWidgetは省略

GlobaleKey globaleKey = GlobalKey(); //←これが重要

class _TestState extends State{
@override
Widget build(BuildContext context) {
return Column(
children: [
E

元記事を表示

@Stateの値によって処理を制御する方法いくつか

# はじめに

`@State` で定義した値に変化が生じた際、それに応じて処理を挟み込むいくつかの方法です。

# 準備

デモ用に、文字列の末尾が3の倍数だったらアホになるExtensionを生やします。

“`swift
extension String {
var needsAho: Bool {
self.last
.flatMap { Int(“\($0)”) }
.flatMap { $0 % 3 == 0 } ?? false
}
}
“`

# 1. Computed Propertyを使う

– 一番シンプルな方法で、値に変化があると即時に反映されます

“`swift
struct ContentView: View {
@State private var inputText: String = “”
private var displayText: String {
inputText.needsAho ? “?” : “”
}

元記事を表示

AVSampleBufferDisplayLayerを透過する

特殊なケースですが、透過情報を持ったSampleBufferを`AVSampleBufferDisplayLayer`にenqueueしても、背景が透過されないことがあります。

これは`AVSampleBufferDisplayLayer`が透過できない訳ではなく、enqueueしたCMSampleBufferに透過情報があるかどうかのフラグが有効になっていないため起こる問題です。

次のようにSampleBufferに含まれるimageBufferに対して`kCVImageBufferAlphaChannelIsOpaque`フラグを落とせば透過が有効になります。

“`swift
imageBuffer.attachments.merge([kCVImageBufferAlphaChannelIsOpaque as String : false], mode: .shouldPropagate)
“`

元記事を表示

FlutterでSplashスクリーンを設定する

# SplashScreenとは?
アプリを起動させた時にアイコンが中央に表示される画面のことです。
これがあるだけで、大分アプリっぽくなりますよね?
![ダウンロード.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247084/fa4695d4-3440-e042-c182-d8f544b0da10.gif)
実装にはiOSとAndroidで異なる手順を踏まなくてはいけなくなるので、
それぞれについて説明していきます。

# iOS
iOSは比較的簡単な手順で済みます。
1. project/ios/Runner/Assets.xcassets/LaunchImage.imageset/配下に画像を保存
2. project/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.jsonを編集
以上の2つのみです。
### 画像を保存
この時、画像は1x, 2x, 3xの3つの倍率を用意しなければいけません。
カスタムで4xの倍率を用意し

元記事を表示

【iOS】AppStoreアプリ申請 Reject(リジェクト)例

アプリ申請をしてみたら以下のようなリジェクトがあったので、共有ついでに、対処方法ご存知の方いましたら、おまちしています。

ちなみに今回が初めての申請で、、とはいえとてもしょうもないアプリをテスト的に配布してみようかなと思ったので、コンテンツ不足とかは予測していましたが、、、

## リジェクト内容

“`
Hello,

We are unable to continue this app’s review because your Apple Developer Program account is currently under investigation for not following the App Store Review Guidelines’ Developer Code of Conduct.

Common practices that may lead to an investigation include, but are not limited to:

– Inaccurately describing an app or service
– Misl

元記事を表示

Kivy-iOS メモ

#Kivyとは?
python3 でiOSアプリやandroidアプリなどのUIを記述可能なライブラリ

#Kivy導入時に参考にした情報をまとめておく。
###導入
– https://qiita.com/sobassy/items/b06e76cf23046a78ba05
– https://github.com/kivy/kivy-ios
– https://qiita.com/tea63/items/c318ac7a1c09a78acab0

###pathの繋げ方(エラー出た人だけ)
-https://qiita.com/yoshinbo/items/8eb71d8015291ac6a3bc

元記事を表示

デフォルトTableViewサンプル集 【操作編】(swift)

# はじめに
[デフォルトTableViewサンプル集(swift)](https://qiita.com/am10/items/9bbbe794e88a96e5420e)これのセル選択や編集などの操作編です。

[サンプル集](https://github.com/adventam10/TableSample)

| 複数選択 | 複数選択 2 | 一部選択不可 | セル編集 |
| — | — | — | — |
| ![multi_selection](https://user-images.githubusercontent.com/34936885/77222594-0c131680-6b98-11ea-9b0d-06b3d6a0b718.png) | ![multi_selection_2](https://user-images.githubusercontent.com/34936885/77543310-dbf6ab00-6eea-11ea-96c1-df66da3069d5.png) | ![unselectable_parts](https://u

元記事を表示

OTHERカテゴリの最新記事