- 1. iOS向けの最小限機能のブラウザーを開発中?
- 2. 【AdMob】iPadでAdMob広告を表示する場合に発生するエラー
- 3. FlutterアプリをApp Store Connectに登録する時に参考にしているサイト
- 4. XCTMemoryMetricが動かない場合のワークアラウンド
- 5. Unity2021の2D Mobile[プログラミング]
- 6. SwiftUI標準的なアラートの表示方法
- 7. 【Swift】MVPを簡単なサンプルと共に。
- 8. Unity2021の2D Mobile[初期設定]
- 9. 【Swift】Viewが生成されてからレイアウトしたい
- 10. AppiumでAndroid/iOSアプリのテストコードを書いてみた
- 11. 【AdMob】iOSでテストデバイスを設定する方法
- 12. Google AdMobにアプリを登録する方法
- 13. 【SwiftUI】BindingのあるViewでPreviewを表示させる方法
- 14. adMobの審査が通らない
- 15. 日付、カテゴリなどに基づいたCore Dataエントリのグループ化(iOS 15, SectionedFetchRequest)
- 16. 【Xcode】実機でビルドできなくなった
- 17. [Swift] SwiftUI で実装した searchable の見た目をカスタマイズする
- 18. 「Swift5」SwiftでiOSプラグインをUnity向けに実装する方法
- 19. 【Swift】URLの部分抽出
- 20. 「Swift5」オブジェクト指向でAPI通信を実装してみると、意外と簡単だった件
iOS向けの最小限機能のブラウザーを開発中?
Webサービスを先行してリリースした後に後発でモバイル向けアプリをリリースする場合、WebViewベースのアプリ(いわゆるガワネイティブ)となることが結構あると思います。このガワネイティブの実装では、WebView上でのイベントをフックしてネイティブのUIを表示したり、ネイティブ側で特定の処理を実行したりといった要件がありますよね。
また、SwiftUIではまだWebViewが提供されていないため`WKWebView`を`UIViewRepresentable`でラップして利用する必要があります。ただ、WebViewのインタラクション(検索・戻る・進む・リロードなど)までラップしているサンプルはGitHubなどを調査してもあまり見当たりません(あったとしても多機能すぎたり実装がよくない)でした。
このような事情から、WebViewの仕様を学び、扱う練習を目的としてブラウザを自作してみることにしました。
## 要件
– SwiftUIベースのアプリにする
– [デフォルトブラウザの要件](https://developer.apple.com/documentation/xcod
【AdMob】iPadでAdMob広告を表示する場合に発生するエラー
# はじめに
今回の問題はシュミレーターのみで発生します。
実機テストやリリースアプリでは発生しない問題なのでエラーが気にならない方はスルーでいいと思います。私は気になったので対応しました
# エラー
![スクリーンショット 2022-08-03 17.32.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/dc13e708-51f0-3dd3-e26f-b471a3811e5f.png)
“`
Invalid Request. The GADRequest scene property should be set for applications that support multi-scene. Treating the unset property as an error while in test mode.
“`# 解決方法
## バナー広告の場合
バナー広告の表示方法解説は[こちら](https://qiita.com/SNQ-2001/it
FlutterアプリをApp Store Connectに登録する時に参考にしているサイト
# App Store Connect登録手順(Flutter)
FlutterアプリをApp Store Connectに登録する際に、参考にしているサイトのリンク集です。
私が独学でFlutterを学んでいる時に、以下のサイトには大変お世話になりました:bow_tone1:
※参考にしているサイトは随時更新予定です。## 1. Certificates Identifiers & Profiles
https://qiita.com/c_tomioka/items/af5942b7031962c3faff
https://harublog.site/developer-identifiers
##### Bundle ID
例)`com.organizationName.appName`
※organizationNameは組織名
※appNameはアプリ名## 2. アプリをAppStore Connectに登録する
https://zenn.dev/moutend/articles/feebf0120dce6e6426fa## 3. Xcodeでアーカイブ
XCTMemoryMetricが動かない場合のワークアラウンド
XCTestでは、measureを使うと使用メモリや実行時間を計測できるが実行時間以外のメトリクスはうまく動いてくれない。
“`
final class MeasureTests: XCTestCase {
func testSingleContextLayer() {
measure(metrics: [XCTMemoryMetric(), XCTClockMetric()]) {
}
}
}
“`どうもiOSシミュレータでは動いてくれないようなので、実行ターゲットをMacにすると使えるようになる。
![CleanShot 2022-08-14 at 02.13.29@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24979/98214ed3-4550-7cc7-f79f-0f6d0ae9553b.png)
Unity2021の2D Mobile[プログラミング]
# はじめに
この記事は一つ前の**初期設定**を済ましていることを前提としています。それから、そこそこのプログラミング経験がある方でなければ分かり辛い表現が多いと思います。
ご注意ください。Unityを初めてたったの二日目ですがUnityの仕様がだんだん掴めてきた現状です。
備忘録として記事を書いている形ではありますが、あまりに基礎的なことなので自分でも見返すかはよく分かりません。まぁ誰かの役に立ったらいいや程度の認識で進めましょう。
一日目に「一日あったら簡単なゲームくらい作れるやろwww」という甘い見通しが残念ながら達成されなかったのに続いて二日目も無事終わりそうですが、全容が掴めてきましたのでその先駆けとしてプログラミングについて書き留めておきたいことを書いていきます。
特にTMPを使用していた場合、古いTextに関するプログラムは軒並み使えなかったので、TMPを使用していてボタンやテキストのUIのスクリプトアタッチが出来ないよ~!という方に参考にしていただければ幸いです。https://qiita.com/king_dog_fun/items/60dcdf
SwiftUI標準的なアラートの表示方法
普段はAndroidエンジニアをしています。
SwiftUIでiOSアプリの開発の勉強中です。勉強記録として振り返れるように記事にしております。
SwiftUIでアラートの表示する方法です。使用バージョン
Xcode13# SwiftUIでアラートの表示する方法
“`ContentView.swift
struct ContentView: View {
@State var isShowAlert: Bool = falsevar body: some View {
Button(action: {
isShowAlert = true
}) {
Text(“アラート”)
}.alert(isPresented: $isShowAlert) {
Alert(title: Text(“タイトル”), message: Text(“メッセージ”),dismissButton: .default(Text(“OK”), acti
【Swift】MVPを簡単なサンプルと共に。
# はじめに
今回はMVPを簡単なサンプルとともに紹介していきます。
MVPのイメージを記事にしたものもあるのでそちらもよろしければどうぞ。https://qiita.com/Ri__/items/4ccd2dab642b2959aaf8
# 想定読者
– MVP聞いたことあるけどよく知らないなという人
– MVCで開発しているけどかなりコードの見通しが悪くなってきてどうにかしたいという人# サンプルアプリ
今回MVPを紹介するために作るアプリは単純な割り算アプリです。### 機能詳細
– 割られる数と割る数を入力すると計算結果が表示されます
– 割る数が0の場合はエラーを表示します※入力された文字が数字じゃなかったらなどなど細かいところはかなり適当に実装しております
![Simulator Screen Recording – iPhone 11 – 2022-08-13 at 14.11.49.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2644705/23101835-38
Unity2021の2D Mobile[初期設定]
# はじめに
スマホのゲーム開発を始めようと思い至ったのは夏休みが暇すぎたからです。
幸い僕にはあまりある時間と大量のプログラミングの経験とコンピュータに関する知識がありました。一日で簡単なゲームくらいは作れるだろうと思い適当なサイトを参照しながら開発を進めようとしたところ、参照しているサイトより進んだUnityのバージョンが存在していることに気が付きました。それがUnity2021です。正確にはUnity2021.3.8f1です。
まぁ大丈夫だろうと最新の安定バージョンらしいそれをインストールして進めていたのですが、どうにも文字化けがあったり、エラーが起きたりで進められない。こうして僕の簡単な目論見をした一日は消費されていきました。
この記事を書いているのは、その次の日です。
この記事では僕が忘れてもいいように、Unityの2021において行うべきだと判断した初期設定の数々を書いていきたいと思います。# Unity Hub
Unityをインストールするため、あるいはバージョン管理をするためのソフトです。Unityを扱うにはこれを入れるのが最も賢いらしく、僕もそれには
【Swift】Viewが生成されてからレイアウトしたい
# はじめに
Qiitaに書くほどではないとは思いますが、
UIKit初心者の自分からしたらどうやってやるの?ポイントだったので記事にしておきます# やろうとしてること
① UIViewControllerでWKWebViewを表示します
② 作ったUIViewControllerをUIViewControllerRepresentableでViewにします
③ SwiftUI側でsheetで表示します# 問題点
iPadの`sheet`は全画面ではないのでWebViewがはみ出る
|iPhone|iPad|
|:-:|:-:|
|![simulator_screenshot_C3E6D1A2-91C1-4992-A399-57FD25C93EA8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/59b4560f-a945-ddce-97b8-7598a9d76d07.png)|![simulator_screenshot_9881A23D-FBC7-43C2-831E-173F1
AppiumでAndroid/iOSアプリのテストコードを書いてみた
# これは何?
所属しているチームのお隣のQAチームがテスト自動化ツールであるAppiumを使う機会があり、そこにちょっとだけ参加することになったので、お盆休みの勉強がてら環境構築とテストコードを書いてみました。
この記事は、そのときの手順を示しています。# Appiumについて
https://appium.io/
Appiumは、モバイルアプリ向けのUIテスト自動化ツール。
サーバクライアントモデルを採用しており、テストコード側からクライアントライブラリ等を介してWebDriver API(の拡張)を叩くと、APIサーバ側でそれを解釈して、プラットフォームごとにあるUIテスト自動化ツール(UIAutomatorやXCUITestなど)の命令に変換し、アプリ操作の自動化を実現している。
クライアントの部分をAppium Client、APIサーバをAppium Server、命令を変換する部分をDriverと呼んでいる。誤解を恐れずに言えば、Seleniumのモバイルアプリ版。
アーキテクチャについては、下記記事内の図が非常にわかりやすいのでお借りします(2022/
【AdMob】iOSでテストデバイスを設定する方法
# はじめに
現在AdMobではシュミレーターで起動した際には自動でテストモードの広告が表示されます。
しかし、実機でビルドした際には本番広告が表示されます。
実機テストの際に本番広告を謝ってタップしてしまってポリシー違反に引っ掛かってしまわないように実機テストするデバイスはテストデバイスに登録が推奨されています。今回はAdMobにテストデバイスを登録する方法を紹介します。
# アプリ側での実装
場所はどこでも構いません。
`AdSupport`をインポートして広告IDを取得します。
“`swift
import AdSupportprint(ASIdentifierManager().advertisingIdentifier)
// XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
“`取得できたらコードは削除して大丈夫です。
後ほど使うので広告IDは控えておきましょう。# AdMob側での設定
「設定」を選択します。
![スクリーンショット 2022-08-11 23.51.22.png](https://qiita-image-s
Google AdMobにアプリを登録する方法
### アプリ登録の手順メモ
1. AdMobのホーム画面を開く
1. 画面左側の[アプリ]-[アプリ追加]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719666/6af7f5ad-8f05-1819-ad7a-1086dd3cd657.png)
1. プラットフォームとストアにリリースされているかを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719666/9fa1f34c-9ba0-1aa3-38a7-7236099c48d0.png)
1. アプリ名を入力(リリースして場合は後から変更されるので適当で良い)
1. ユーザ指標を選択し、アプリ追加をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719666/9d224a77-5dfc-cc87
【SwiftUI】BindingのあるViewでPreviewを表示させる方法
# 解決方法
“`swift
import SwiftUIstruct TextView: View {
@Binding var text: String
var body: some View {
Text(text)
}
}struct TextView_Previews: PreviewProvider {
static var previews: some View {
TextView(text: .constant(“プレビュー用デフォルトテキスト”))
}
}
“`# 解説
こちらで囲うことによって`Binding`に変換されます。
“`swift
.constant()
“`
https://developer.apple.com/documentation/swiftui/binding/constant(_:)# おわり
BindingはSwiftUIに絶対に付いてくるので知ってて損はないと思います。
adMobの審査が通らない
# 初めに
今回、Flutterでアプリを制作し、アプリの下部にGoogle adMobで広告配信することにした。
通常、adMobの審査は24~48時間とドキュメントに書かれているが、今回、自分のアプリでは約8日間時間を要した。時間がかかった原因について記録を残しておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663093/dfc92bef-0366-d63c-2d3d-2f98c41dceb6.png)
# 結論
結論としては下記の画面のお支払いの設定が必要だった可能性があると考えている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663093/03cd9441-ca30-c9ed-c725-3917a8247fcb.png)
この支払の設定を行うと約12時間後に審査が通り、広告が配信されるようになった。
キュメント上に記述はなく、完全な因果関係はわからないが、これが審査が
日付、カテゴリなどに基づいたCore Dataエントリのグループ化(iOS 15, SectionedFetchRequest)
取得したCore Dataのデータは、各項目内のプロパティを使用して分類することができます。
例えば、日別のToDo項目を保存している場合、日別に分類し、リストの異なるセクションに表示することができます。![date-category.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/cd19e1ab-c166-353f-051c-c2a1237bf20e.jpeg)
あるいは、異なるカテゴリーに基づいて収納する場合にも することもできます。
![stars-category.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/3084bad8-c8f9-af21-c60f-a5e6adaa9de6.jpeg)
## ステップ1.キー識別子として文字列を作成する
まず、各カテゴリーがそれを説明する文字列を持っていることに注目してください。
たとえば、項目を日付(これは Date オブジェクト
【Xcode】実機でビルドできなくなった
# エラー
![スクリーンショット 2022-08-04 19.14.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/fd3be3d6-e44c-a126-aceb-6257d70e396c.png)
“`
Faild to prepare device for development.
Please unlock and reconnect the devive.
“`
# 解決方法
端末の再起動# おわり
簡単なことで時間喰われました。。。# 参考サイト
https://developer.apple.com/forums/thread/133106
[Swift] SwiftUI で実装した searchable の見た目をカスタマイズする
# 初めに
色々と調べたものの情報が全く見当たらず困り….
(あったが全く動作しないものが多く困った…)英語の細かい文献でようやく見つけ、また機会があると思って残しておきます。
## SwiftUI の searchable に関して
`searchable`はiOS15から追加された、検索フィールドを簡単に実装できるものです。
https://developer.apple.com/documentation/swiftui/form/searchable(text:placement:)
## 今回の状況について
引数の`placement`という実装場所を指定できる引数があります。`.navigationBarDrawer()`をセットすることで、ナビゲージョンバーに検索バーを設定することができます。
`UIKit`の時と比べて、**ナビゲーションにカスタマイズせずに検索バーを実装できる**のは大変ありがたいです。
![nav_01](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co
「Swift5」SwiftでiOSプラグインをUnity向けに実装する方法
# はじめに
SwiftでiOSプラグインをUnity向けに実装する方法について音声読み上げアプリを開発しながらを解説していきます。
この記事はiOSプラグインをSwiftで実装する事にフォーカスしています。
詳細まで完璧に理解したい方は[こちら](https://qiita.com/mao_/items/5b33c90e533a538570b8)を閲覧してください。# 開発環境
Xcode 13.4.1
Swift5
# この記事の対象者
・Unityでネイティブの機能を実装したい方
・自作のiOSプラグインを作りたい方
・いろんな記事を見たがなぜかできない方<-元々は僕がそうでした # プラグイン作成してUnityで使うまでの手順 1、Swiftで必要な処理をStaticLibraryで実装 (Xcode) 2、Swiftで書いた処理をObjC++で呼び出す (Xcode) 3、ObjC++をC#から呼び出せるようにする (Xcode) 4、C#から[P/Invoke](https://qiita.com/mao_/items/5b33c90e533a538570b8#pin
【Swift】URLの部分抽出
# URLの構造
![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/b8d089e2-954c-44cc-a266-1e34e4364a2a.png)[こちら](https://innova-jp.com/what-is-url/)のサイトで詳しく説明されています。
# プロトコルの抽出
“`swift
import Foundationvar url = URL(string: “https://taishin-miyamoto.com/ShadowBan?screen_name=SNQ2001”)
print(url?.scheme ?? “”)
// https
“`# ドメインの抽出
“`swift
import Foundationvar url = URL(string: “https://taishin-miyamoto.com/ShadowBan?screen_name=SNQ2001”)
print(url?.host ?
「Swift5」オブジェクト指向でAPI通信を実装してみると、意外と簡単だった件
# はじめに
今回は実際にOpenWeatherMapのAPIを使ってサンプルアプリをオブジェクト指向で実装していきます。# 開発環境
Xcode 13.4.1
Swift5
# この記事の対象者
・SwiftでAPI通信を実装したい方
・API通信の実装方法は理解したが、オブジェクト指向での実装方法を知りたい方
・サンプルアプリを使ってみたい方
・Alamofire等のライブラリを使わず実装したい方
# クラスの説明
・DataManager :APIから取得したデータを格納するためのstruct等を記述するクラス
・MainViewController :UI操作をするメインのクラス
・DataController :URLセッション等のメソッドを記述するクラス
# 実装手順
### ①Open Weather Mapのサイトに登録してキーを取得
### ②APIから取得したデータを格納するためのstructをDataManagerに記述
### ③DataControllerでURLセッション等を記述
### ④MainViewController