- 1. はじめに
- 2. エラー内容
- 2.1. 週刊 DICOMデコーダーを創る (3) シークエンス解読
- 2.2. 【Swift】サロンでRxSwiftを教えてもらったのでまとめてみた
- 2.3. 【Swift】MVPを簡単にまとめてみる
- 2.4. 画面遷移でSegueを利用するメリット(Swift)
- 2.5. 【SwiftUI】Picker使ってみた
- 2.6. コードをよりよく構造化するために役立つXcodeの機能 (Xcodeに関する15のヒント)
- 2.7. 【Swift】Hashable, Identifiableについて
- 2.8. iOSアプリ開発を考えているなら知っておくべきMacCatalystの基礎知識
- 2.9. 【連載】初心者のためのMacCatalyst講座
- 2.10. 【iOS】古いMacとXcodeでバイナリを作ったらアプリが起動できなくなった話
- 2.11. UnityからXcodeにしてビルドする関連(2021年5月)
- 2.12. 【iOS】Push通知用証明書とプロビジョニングプロファイルの作成(2021年版)
- 2.13. [iOS]写真へのアクセスレベル「追加のみ」「閲覧・追加両方」を1アプリ内に混在させる時どうなるか
- 2.14. 【Swift】画面遷移で責務分離する
- 2.15. 【iOS】Safariの広告をブロックしたい
- 2.16. 週刊 DICOMデコーダーを創る (2)
- 2.17. iOS で体温記録する
- 2.18. SwiftUIで書くiOSアプリハンズオン(QiitaClientを作ってみよう)
FlutterでAdMobを表示(iOS/Android)
# はじめに
今回はAdMobの公式パッケージを使って広告を表示できるようにします。# 更新履歴
2021.5.16 初回投稿# 環境
– macOS Big Sur(11.2.3)
– Flutter (Channel stable, 2.0.6, on macOS 11.2.3 20D91 darwin-x64, locale ja-JP)
– Android toolchain – develop for Android devices (Android SDK version 30.0.3)
– Xcode – develop for iOS and macOS
– Chrome – develop for the web
– Android Studio (version 4.1)
– VS Code (version 1.56.0)# 参考にしたサイト
– [flutterアプリでfirebase_admobからgoogle_mobile_adsに切り替えてみた – Qiita](https://qiita.com/kazutxt/items/8ea0eab5d
[Flutter] Gitリポジトリからダウンロードしたプログラムでエラー
はじめに
Windowsで作成したFlutterアプリをGitリポジトリを通してMacにダウンロード。
それを起動させようとしたらエラーが出てきた。
Firebase関連のプラグインのバージョンを変えたりして、試行錯誤していたら余計にハマった。
バージョンがあってないやら、ファイルがみつからないやら、、、、、
あまりにも適当にやりすぎてエラーを再現できないが、備忘録としてエラー回避できた方法をいくつか残す。エラー内容
Error output from CocoaPods:
↳
[!] Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no
platform was specified. Please specify a platform for this target in your Podfile. See
`https://guides.cocoapods.
週刊 DICOMデコーダーを創る (3) シークエンス解読
## SQ(シークエンス)の構造
DICOM規格日本語訳のPS3.5 p39-を読み解いていきます
図のように,SQのVRが来ると,その次の2byteは予約済み(普通は0x0000がはいっている)で,関係が無いので飛ばします.
続く4byteにデータ長が入っています.
データ長は2種類あり,
|種類 | データ長のバイト列 | 概要|
|:-:|:-:|:-|
|明示的長さ| 0x00 01 13 50 (例) | このように値が入っている場合はデータ長を示す |
|未定義長さ| 0xFF FF FF FF | データ長が明示されていない.
この場合は,項目を区切るタグを目印によむ |このような未定議長さの場合には,区切りタグを基に読む必要があります.
| タグ | 意味
【Swift】サロンでRxSwiftを教えてもらったのでまとめてみた
#はじめに
随時更新予定
今回は、オンラインサロンでRxSwiftを教えてもらっているので、その中で自分の学びになったことを簡潔にまとめてみたいと思います。#学んだこと
・どれがBLなのかを考える
・Result型で値を返すことができる“`swift
enum CalculateError: Error {
case numberToDivideIsZero
}
func calculate(num1: Double, num2: Double) -> Result{
if num2.isZero {
return .failure(.numberToDivideIsZero)
}
return .success(num1 / num2)
}let num1 = 10.0
let num2 = 0.0
switch calculate(num1: num1, num2: num2) {
case .success(let result):
print(
【Swift】MVPを簡単にまとめてみる
#はじめに
今回は、MVPアーキテクチャについて簡単にまとめていきたいと思います。#MVPとは
特徴
・Model, View, Presenterにより分割されるGUIアーキテクチャ
・データ同期する方法に、PassiveViewとSupervisingControllerの二つがある#フロー同期とオブザーバー同期
まず、PassiveViewとSupervisingControllerを理解する前に、フロー同期とオブザーバー同期の説明をします。##フロー同期
上位モジュールのデータを下位モジュールに適宜セットして同期する同期方法
つまり、手続き的な同期方法。メリット
・画面遷移間でデータの受け渡しなどでデータフローを追いやすい
→上位モジュール(遷移先)が下位モジュール(遷移元)の参照を持つことができるため、有効デメリット
・共通したデータを参照しているすべての箇所の参照を持っておかなければいけなくなるので、参照の管理が煩雑になりやすい。##オブザーバー同期
下位モジュール(監視元)が上位モジュール(監視先)からObserverパターンを使い送られてくるイベ
画面遷移でSegueを利用するメリット(Swift)
![Xcode-12](https://img.shields.io/badge/Xcode-12-brightgreen) ![Swift-5.3](https://img.shields.io/badge/Swift-5.3-brightgreen) ![iOS-14](https://img.shields.io/badge/iOS-14-brightgreen)
## はじめに
画面遷移で Segue はもうほとんど使ってないというのを聞いたので Segue を使う利点を捻り出してみました:dizzy_face:(私は特に Segue 推奨派というわけではありません:innocent:)
そもそも Storyboard 使わない!という方法もあると思いますが今回はそこにはふれません。
## つくるもの
Root -> NavigationController -> First -> Second -> Third上記のように遷移して値を渡して Third から Root に戻るときにも値を渡す方法を考えてみます。
こんな感じ(遷移時に first とか sec
【SwiftUI】Picker使ってみた
今回作成するアプリに複数の選択肢から1つだけ値を選択する機能が必要なので
Pickerという部品を使って実装してみました。SwiftUI初学者の方々に参考になれば嬉しいです。
実装後の動作は以下になります。
ソースコードは以下です。
“`swift:
import SwiftUIstruct ContentView: View {
@State var selection: String = “和食”
var array: [String] = [“和食”, “洋食”, “中華”]var body: some View {
VStack {
Picker(selection: $
コードをよりよく構造化するために役立つXcodeの機能 (Xcodeに関する15のヒント)
この記事では、コードの構造を改善し、クリーンにするコードのリファクタリングに役立つXcodeの機能をいくつかご紹介します
– 変数の名前を変更する
– プログラム関数に抽出する
– if 条件を変数に抽出する
– 複数の if 文を switch に変換する
– ローカライゼーション機能を文字列に手早く適応させる
– クラスにinit関数を作成する
– 有用なコードをスニペットに追加・表示・バックアップする
– 関数のドキュメントを作成・表示する
– 変更を破棄する(最新のgitコミットと比較して)
– 特定のコードに対して最後に変更を加えた編集者を検索する
– 関数がコールされる場所をすべて見つける
– コードのさまざまなセクションを折りたたむ
– プログラムヘッダーを手早く検索する (func, class, struct)
– その他の Xcode に関するヒント(キーボード・ショートカット)## 変数の名前を変更する
変数名をすばやく変更することができます。Xcodeは変数を参照するすべてのコードを見つけることができます。
まず、変数をダブルクリックして選択し、変数を
【Swift】Hashable, Identifiableについて
## はじめに
HashableプロトコルとIdentifiableプロトコルって何のために使うの?違いは?と疑問に思ったので調べました。
もし間違いがありましたらご指摘いただけると幸いです。## Hashable
### 概要
その型の値を元にハッシュ値が計算可能であることを表します。
下記のHashableの定義から、Hashableは`Equatable`プロトコルを準拠しており、`hashValue`プロパティと`hash`メソッドを持っていることがわかります。“`swift:Hashable
public protocol Hashable : Equatable {/// The hash value.
///
/// Hash values are not guaranteed to be equal across different executions of
/// your program. Do not save hash values to use during a future execution.
///
iOSアプリ開発を考えているなら知っておくべきMacCatalystの基礎知識
#MacCatalystとは
「MacCatalyst」とは、Appleの統合開発環境である「Xcode」の機能の一つです。かつては「Project Marzipan」と呼ばれていましたが2019年に「Project Catalyst」として発表され同年リリースされたXcode11から「MacCatalyst」を使用した開発が可能になりました。
#iPadアプリからMacアプリを作成が可能
アプリのiPad版さえあれば簡単にMac版を作ることができます。
細かく言うと、iPadアプリのソースコードを使って、Mac版のアプリをビルドすることができます。
1つのソースコードから2つのアプリができるので、開発コストは半分になります。
(そんな単純な訳ないですが…)#デバイスに合わせた機能追加も可能
また、Mac版かどうかで処理を分岐させることも可能で、Mac版のデザインや機能をiOS版と分ける事もできます。
例えば、Mac版は画面の広さを生かしてボタンを増やしたり、カメラアプリなら編集機能の追加などができます。以上がMacCatalystの概要でした。
次回はMacCata
【連載】初心者のためのMacCatalyst講座
#この講座について
この講座では「MacCatalystって何?」「MacCatalystを使ってみたい」という方向けに解説を
行っていきます。この記事を見てくれた方がMacCatalystを説明できる、MacCatalystが使える、
といったことを目標に解説していきます。#目次
第1回 [iOSアプリ開発を考えているなら知っておくべきMacCatalystの基礎知識](https://qiita.com/passion_t_sato/private/62cb3dfa44ee670963b6)
第2回 作成中…
【iOS】古いMacとXcodeでバイナリを作ったらアプリが起動できなくなった話
# 概要
2020年9月末に社内配布用にバイナリ作成をしたところ、iOS13でアプリが起動できなくなってしまった。
(iOS11では起動できていた。)## バイナリ作成環境
Mac Mojave
Xcode 9.4## 調査
バイナリ作成者のKeychainを確認したところ、バイナリ作成時の署名に利用した証明書のステータスが「信頼されていません」になっていた。
証明書の問題かと思い、証明書を作り直すがステータスは変わらず、バイナリを作ってもやはりクラッシュのまま…## 原因
一言で言うと、作業者のMacの中間証明書更新漏れ
\(^o^)/
Appleからのお知らせにもありました。
Xcode 11.4.1以降を使用していたら自動で取得できている模様。
新しいXcodeを使っていない開発者は自分で取得する必要があるってことですね。## まとめ
最新の中間証明書を取得してバイナリ作成したら動きました。
やはり、古いシステムは使い続けてもいいことないです。(当たり前)
皆さんは定期的にバージョンアップしましょう。2021年内にプッシュ通知証明書の更新計画もあるようで
UnityからXcodeにしてビルドする関連(2021年5月)
# やったこと
・Unityで2Dゲームを制作
・Admobで広告を表示(iOS)
Unityでアプリを作るまでは良かったが、その後が大変だった。# 自分の環境
・MacOS catalina
・Xcode 12.4
・Unity 2019.2.12f1 Personal
・Google Mobile Ads Unity Plugin v5.4.0
・CocoaPods 1.10.1# Admob広告を表示させる
GoogleMobileAds-v5.4.0.unitypackageをダブルクリックしてすべてチェックが入っていることを確認してimport
その他メディエーションしている場合は各種Adaptorをimportした後、iOSリゾルバを設定する。
Unity > Assets > External Dependency Manager > iOS resolver > settings
にて、CocoaPodsIntegration のプルダウンから
Xcode Project Add CocoaPods to the Xcode Project を選ぶ。#アプリ
【iOS】Push通知用証明書とプロビジョニングプロファイルの作成(2021年版)
#はじめに
スマホで普段何気なく目にしているPush通知。実はPush通知を利用するためにiOSもAndroidも事前準備が必要です。
テストでもPush通知の確認が必要なことがたくさんありますよね。
お客さんによってはコチラで準備をする必要があります。そんな時に困らないように、Push通知を利用するために準備しなくてはならないものを書いてみます。
今回は、ややこしいiOS版の準備について書いてみます。
#準備するもの
●Mac ※1
●Apple Developer Programの登録(有料です)※1 Mac OS 10.15以上推奨
#作成の流れ
1.CSRファイルと開発用証明書の作成
2.AppIDの作成
3.プロビジョニングプロファイルの作成
4.APNs用の証明書作成文字で書くのは簡単ですね(´・ω・`)
では、実際に作成してみましょう。#CSRファイルと開発用証明書の作成
#####1.キーチェーンアクセスを起動
#####2.画面左上の「キーチェーンアクセス」というメニューか
[iOS]写真へのアクセスレベル「追加のみ」「閲覧・追加両方」を1アプリ内に混在させる時どうなるか
## 基本事項
iOSアプリの写真(カメラロールなど)へのアクセス許諾についての基本は以下をご覧ください
[WWDC2020での許諾周りのアップデートまとめ](https://qiita.com/akatsuki174/items/cc59203c2f3b1fe83573#写真)
簡単にまとめると以下のようになります。
### iOS13以前
写真へのアクセス権限は一種類(閲覧・追加両方)しかなく、その許諾ダイアログは二択のダイアログである。
![2択ダイアログ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392332/65f7a47a-421d-b994-084b-268f4a6a57fb.png)許諾の状態をチェックする時は[`PHAuthorizationStatus`](https://developer.apple.com/documentation/photokit/phauthorizationstatus)を使う。
ユーザーに許諾を得る時は[`requestAuthori
【Swift】画面遷移で責務分離する
#はじめに
今回は、ViewControllerで画面遷移をおこなうときに責務を分離して、変更に強くなるようなコードを紹介したいと思います。
以下のようなアプリを例として作ってみたいと思います。![ezgif.com-gif-maker (2).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/33a38e1a-a207-ca33-13b3-ab6f583b28fd.gif)
#GitHub
https://github.com/0429oonishi/ScreenTransition-practice
#共通部分
以下のような階層にしました
![ScreenShot 2021-05-13 8.03.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/470ec79a-2420-fd79-6bdb-02277701f468.png)“`swift:User
struct User
【iOS】Safariの広告をブロックしたい
#hostsを編集。【要牢破り】
#### hostsファイル
[**hosts**](https://ja.m.wikipedia.org/wiki/Hosts)ファイルは[DNS](https://ja.m.wikipedia.org/wiki/Domain_Name_System)より優先されるので代替サーバーのアドレスを記載したりしますが、目的のサーバーをデバイス自身にする事で、ネット上にサーバーが見つからないようにできます。例
例えば[**Qiita**](https://qiita.com/)のアドレスを次のようにhostsに書き加えると、Qiitaにアクセスできなくなります。
`
127.0.0.1 localhost
::1 localhost
127.0.0.1 qiita.com
::1 qiita.com`解説
– IPv4のアドレス`127.0.0.1`とIPv6のアドレス`::1`を`localhost`として宣言してるので、`
週刊 DICOMデコーダーを創る (2)
##本日はtag, VR, lengthを読み取ってみる
需要の程は不明ですが,知識の整理も兼ねて今日も作っていきます.今日はtag, VR, 値長さを読み取るところまでやってみます.
前回はViewController.swiftにまとめていましたが,本格的に読み取り始めることにするので,新たにDicomDataクラスを作成します.“`DicomData.swift
class DicomData{var dicomData : Data!
init(withData data:Data) {
dicomData = data
// dicomデータかチェック
// ヘッダは128バイトのファイルプリアンブル
// 続く4バイトにプレフィックスが続く
if dicomData.count < 132{ print("file size error") return } if d
iOS で体温記録する
体調管理の一環で、体温を記録しようと思っても、
どのアプリを選んだら良いか迷ってしまう、という私のための記事です。↓こんなことがやりたい
![ios_shortcut_011.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59810/60165a8d-f32f-53bf-0ef0-565d142e6a6a.jpeg)> **おことわり。**
> 体温情報は、個人の健康に関連する機微情報の一つだと考えています。どこに保存すべきか、そもそも保存するべきかの判断は、個々人で配慮いただければと思います。本記事の趣旨としては、iOS ショートカットでこんな使い方もできる、というアイデアの一例のご紹介です。閑話休題。
いわゆる普通の体温計 (水銀じゃなくても) で体温測るのですが、記録をどこに残そうか、そのためにわざわざアプリ入れるのも、高機能な体温計を探すのもなぁ・・
そうだ、ヘルスケアアプリに直で記録してしまえ。
iPhone などの iOS の機能の **ショートカット** と **ヘルス
SwiftUIで書くiOSアプリハンズオン(QiitaClientを作ってみよう)
SwiftUIを使ったハンズオン用に記事を作成しました
## 使用するAPI
今回はQiitaAPiを題材とします。([ドキュメント](https://qiita.com/api/v2/docs))登録不要で使えて、例えば、 https://qiita.com//api/v2/items で、投稿を取得できます。
“`javascript
[{
rendered_body: “…”,
coediting: false,
comments_count: 0,
created_at: “2017-11-09T22:50:51+09:00”,
group: null,
id: “fe412a67b64e793d138b”,
likes_count: 0,
private: false,
reactions_count: 0,
tags: [{
name: “processing”,
versions: []
},
{