- 1. 【Swift】Int型 ⇄ 16進数文字列 ⇄ バイト配列(UInt8配列) を相互変換する
- 2. iOS 開発の頑張らないビルド用 Swift CLI ツール管理
- 3. 【Swift】ボイスチェンジャーアプリでBluetoothイヤホンを使用して録音再生できるようにしてみた
- 4. 【Swift】アプリ内でダークモード/ライトモードを設定したい
- 5. 1年間Flutterで開発していてわかったアクセシビリティの問題(iOS編)
- 6. [Xcode] iosアプリ開発で通知が表示されない
- 7. 【Swift】unable to open file (in target tests in project)というエラーでビルドができない
- 8. 【Swift】EUC-JPでURLエンコーディングする
- 9. 【Flutter】社内向け入門講座の内容公開
- 10. 【iOS】Metal Best Practicesの解説(9) ロードと保存
- 11. fastlane match で既存の秘密鍵、証明書、プロビジョニングを取り込む
- 12. fastlaneのdeliverからAppStoreのメタデータ送信する際の留意点
- 13. [Flutter][iOS] permission_handler 不要な権限リクエストを削除しないとApp Store Connectから怒られる
- 14. iOSとAndroidを区別するのに便利なJavaScript置いておくね
- 15. Compositional Layoutsで水平方向のスクロール出来た!けど、垂直方向にもスクロール出来てしまう時の対処法
- 16. iosアプリで車種と走行距離から炭素排出量を計算するプログラム
- 17. iOSのLINEの内臓ブラウザが、POSTフォームのtarget=_blankで挙動が狂う件
- 18. 【SwiftUI】よくあるインジケーター表示切り替えを、ProgressViewとカスタム ViewModifierで使いやすくする
- 19. iOS13 / iOS14 /iOS15 で、AppDelegateのライフサイクルは違うよ 14がおかしいんだけど
- 20. 【Swift】QRコードの分割情報を取得する
【Swift】Int型 ⇄ 16進数文字列 ⇄ バイト配列(UInt8配列) を相互変換する
# はじめに
BLE通信などを実装していると、Write / Read のタイミングでバイト型を扱うと思います。
業務でファームウェアの仕様に合わせ、Int型 ⇄ 16進数文字列 ⇄ バイト配列 で相互変換する必要がありました。
ここら辺は忘れやすいかなと思い、まとめることにしました!# 環境
– Xcode12.5
– Swift5# 変換していく
今回は、以下のデータを変換していきます。| Int型 | 16進数文字列 | バイト配列(UInt8配列) |
| :—: | :—: | :—: |
| 123456789 | “075BCD15” | [7, 91, 205, 21] |### 16進数文字列 -> Byte配列
ごりごり加工していくので、別途 extension に関数を定義しています。“`swift
extension String {
func toBytes() -> [UInt8]? {var hexString = self
if hexSt
iOS 開発の頑張らないビルド用 Swift CLI ツール管理
## TL;DR
どうせ macOS 上でしか開発できないので、 直接ビルドツールの実行バイナリをダウンロードして利用する。
## モチベーション
– XcodeGen
– SwiftLint
– LicensePlistといった最終成果物には含まれないが、ビルドプロセスで利用する Swift 製 CLI ツールの管理について、 [Mint](https://github.com/yonaskolb/Mint) を利用してプロジェクトでバージョンを固定+開発者のローカルマシンに依存させないといった設定をよく実施するかと思います。
https://qiita.com/usamik26/items/be813a224a2146daffb7
https://dev.classmethod.jp/articles/package_management_by_mint/
これまでは特に問題がなかったのですが、 Apple Silicon ( M1 Mac ) の登場によって、[Homebrew 経由でインストールしたものを Build Phases で実行する際に PATH を
【Swift】ボイスチェンジャーアプリでBluetoothイヤホンを使用して録音再生できるようにしてみた
「おばけだぞう」と子供がしつこく言うので、変声機アプリを作ってみた。
#サンプル画像:
![RPReplay_Final1631489151.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/715627/bd07fb63-7aa5-59e7-49b7-5db7208e06a7.gif)#アプリ概要:
-「Record」ボタンで音声を録音
-スライダー「Speed」「Pitch」、スイッチ「Echo」「Reverb」で声のエフェクトをかける
-「Play」ボタンで再生、モーダルに画面遷移してお化けアイコンの表示参考サイト:
[[Swift4.2]蝶ネクタイ型変声期作ってみた](https://qiita.com/tosh_3/items/95e9e41279ba0ffcd3f4)#課題:
再生時に「音量」が上がらない。
Bluetoothイヤホンを接続すると「録音・再生」が機能しない。下記のサイトを参考:
[AVAudioSessionで録音する際に、音はbluetoothイヤホ
【Swift】アプリ内でダークモード/ライトモードを設定したい
## やりたいこと
アプリ内で、OS設定によらずライトモード/ダークモードを設定したい。
##設定方法
1行加えるだけで、即時にアプリ全体に反映されます。
* ダークモードに設定する場合
“`swift:ViewController.swift
UIApplication.shared.windows.first?.overrideUserInterfaceStyle = .dark
“`* ライトモードに設定する場合
“`swift:ViewController.swift
UIApplication.shared.windows.first?.overrideUserInterfaceStyle = .light
“`* OS設定に従う場合
“`swift:ViewController.swift
UIApplication.shared.windows.first?.overrideUserInterfaceStyle = .unspecified
“`起動時に設定する場合は、initial view controllerの viewDi
1年間Flutterで開発していてわかったアクセシビリティの問題(iOS編)
この1年コンスタントにFlutterでコーディングをしていてわかった_スクリーンリーダー(VoiceOver)_の問題についての記録です。
—–
## 1. 項目を選択したときのガイドアナウンスが読み上げられない
ボタンや項目などを選択したときには通常
_開くにはダブルタップします_
のようなアナウンスがあります。
これによりユーザは項目が操作可能かどうかを知ることができます。## 2. リストをスクロールしたときの度合いを読み上げない
通常リストをスクロールさせた場合
* リストの総数
* 表示されている項目の開始位置
* 表示終了位置
が
_全50行中10行目から20行目まで_
のように読み上げられます。## 3. 垂直スクロールバーにフォーカスされていない
検索をすると表示させることは造作もないことのようですが、残念ながらVoiceOverがフォーカスできていないようです。(水平も同様)
垂直スクロールバーでは
* その画面がトータルでいくつの画面が連なって構成されているのかという情報の読み上げ
* 1本指の下または上のスワイプでスクロールを行うことができる
[Xcode] iosアプリ開発で通知が表示されない
## どゆこと
ionic + angularでiosアプリ開発を少し勉強していたところ,通知がどうやっても表示されない問題に遭遇しました.
初めはコードに問題があると思い,色々と調査を行いましたがどうやら原因はそうではなかったようです.
iosアプリはApple IDがあれば無料で開発することができますが,有料のApple Developer Program(ADP)というメンバシップが存在し,その有料のメンバシップに入っている開発者でないと使えない機能が存在するようです.
今回私が詰まっていた通知機能は有料会員でないと使えない機能でした.
なので有料会員にならないと試せないようです.
有料会員でないと使えない機能及び無料会員でも使える機能は以下のページにまとまっています.
https://help.apple.com/developer-account/#/dev21218dfd6
![参考](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401124/b462e83d-52a7-c03
【Swift】unable to open file (in target tests in project)というエラーでビルドができない
#状況
#####プロジェクトを起動するとunable to open file (in target tests in project)というエラー文が出ていてビルドができない。
#原因
#####CocoaPodsのインストールが無い為。
#解決方法
#####ターミナルにて下記のコードでインストールをして私の場合は解決しました。
“`
sudo gem install cocoapods
“`
#####又、プロジェクトフォルダにあるPodfile.lockを削除し、ターミナルにてpod installをしても解決できるみたいです。
https://cocoapods.org/
【Swift】EUC-JPでURLエンコーディングする
#はじめに
クエリを含むURLを作成したい時には、URLエンコーディングを行う必要があると思います。
EUC-JPでエンコードする記事はあまり見かけないのでまとめます。(今どき、EUC-JP使っているサーバーなんてほぼないと思いますが。。。)
ご参考になればと思います!# 実装してみる
今回は String の Extension で実装します。“`swift
import Foundationextension String {
var encodedByEUCJP: String {
// エンコーディングしない文字列をキャラクタセットとして定義
let allowedCharacters = CharacterSet(charactersIn: “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~”)// エンコーディングを定義する
let eucjpEncoding = String.Encoding(ra
【Flutter】社内向け入門講座の内容公開
インドネシアの[PT.AQ Business Consulting Indonesia](https://aqi.co.id/)でFlutterのエンジニア兼アドバイザーをしております菊池と申します。
Zennで本を出版しております[flutter chips](https://zenn.dev/tetsukick/books/06ee607e30e243)(30,000字程度)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/5183aafc-d1d7-534f-f618-031f10790fdc.png)## 本記事で伝えること
– Flutterを用いた簡単なアプリ開発デモ
– 開発効率をあげるTips
– デバッグ方法
– おすすめパッケージ
– アーキテクチャ紹介
– やっておいたほうが良いこと
– 知っておいて損しないこと
– 情報収集源## 本記事を読む前に
本記事を読む前提として以下を実施済みですと、より内容が理解しやすいかと思います。
– Flut
【iOS】Metal Best Practicesの解説(9) ロードと保存
[Metal Best Practices](https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/MTLBestPracticesGuide/index.html#//apple_ref/doc/uid/TP40016642-CH27-SW1)は、iOS/MacOS/tvOSのAPIであるMetalを用いた設計のベストプラクティスガイドです。
本稿では、何回かに分けてこのガイドを読み解き、コード上での実験を交えて解説していきます。
読んでそのまま理解できそうなところは飛ばしますので、原文を読みながら原文のガイドとしてご利用下さい。
また、iOSの記事なので他のOS(MacOS, tvOS)についての記載は割愛します。他の記事の一覧は、初回記事よりご覧下さい。
https://qiita.com/TokyoYoshida/items/521619d6d8dd8d8ef9e4
### [Load and Store Actions(ロードと保存)](https://devel
fastlane match で既存の秘密鍵、証明書、プロビジョニングを取り込む
## 想定ケース
– 諸事情により Apple Developer Portal へのアクセス権限がない
– 手元に秘密鍵、証明書、プロビジョニングのファイルはある、もしくは Keychain に取り込み済み
– ファイルで直接やりとりするのではなく、 fastlane match で管理したい## 作業手順
### 前提
– fastlane 2.193.1
– fastlane match 導入済みで、Storage の整備や Passphrase についても設定済み
– 秘密鍵、証明書については有効なものを Keychain に取り込み済み
– プロビジョニングについては有効なものがファイルとして手元にある### 秘密鍵、証明書、プロビジョニングの用意
秘密鍵と証明書を Keychain からファイルに書き出します。
この際、開発者間でやりとりする場合のように、 Keychain 上で秘密鍵と証明書を2つ選択して1つの p12 ファイルとして書き出すのではなく、秘密鍵と証明書それぞれ1つずつ選択した状態でファイルに書き出していきます。
ファイルの拡張子について
fastlaneのdeliverからAppStoreのメタデータ送信する際の留意点
## 概要
2021/08現在における `fastlane deliver` を使った AppStore へのメタデータ送信について、ドキュメントが少なかったので留意点を記しておきます。## 前準備
#### ■ AppStre API Key2021/08現在では `deliver` からメタデータをCI経由で送る場合 `AppStore API Key` が必要です。
これがないと 2FA をクリアできないので、、
ローカルで実行するだけであれば、`fastlane` で利用できる通常のログイン機構で大丈夫です。
その場合、コマンドの途中で 2FA のパスワードを求められることになります。ちなみに.envなどを利用して環境変数に必要keyを格納し、下記のようにAPIKeyを取得できるような `fastlane private action` を `Fastfile` に作っておくと便利です。
“`ruby
#### App Store API への認証Key生成desc “App Store Connect API Key”
# private_lane :ap
[Flutter][iOS] permission_handler 不要な権限リクエストを削除しないとApp Store Connectから怒られる
**アプリをApp Store Connectに送信した際に(CI/CDで自動配布した際に)警告メールが届き、testflightでアプリをまくことができなかった**
原因:どうやらAppleの静的解析ツールに引っかかっているらしいアプリのOS権限管理をpermission_handler 8.1.4+2にした後、ビルドしたバイナリをApp Store Connectに送信したら以下のようなめっちゃ長いメールが届いた。そんな場合の対処法をメモ
結論として、iOSのセットアップとして公式に記述されている方法と少し違った?ので注意が必要。
###来たメール
>
App Store Connect
>
Dear Developer,
>
We identified one or more issues with a recent delivery for your app, “hoge-app” 1.0.0. Please correct the following issues, then upload again.
>
ITMS-90683: Missing Purpose St
iOSとAndroidを区別するのに便利なJavaScript置いておくね
“`
var isAndroid = (UA && UA.indexOf(‘android’) > 0) || (weexPlatform === ‘android’);
var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === ‘ios’);
“`これは基本的にユーザーエージェント(UA)を見て正規表現でandroidかiOSかを判別しています。`UA &&`の部分はnullチェックですね。UAの値を取得できなかった時にエラーで落ちないようにしています。
日本のスマホのシェアはAndroidとiOSが99%を占めているので上記以外はその他で例外処理をしてしまって良いでしょう。
Compositional Layoutsで水平方向のスクロール出来た!けど、垂直方向にもスクロール出来てしまう時の対処法
# 現状
![CompositionalLayoutsHorizontal現状.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755375/e99086e2-908a-ee3e-39b2-640e8c3a35bc.gif)
# 解決策
以下のコードをCollectionViewに対して設定することで解決しました。“`swift:ViewController
collectionView.isScrollEnabled = false
“`
![CompositionalLayoutsHorizontal改善.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755375/613932cf-7412-d374-7b64-4c3ed038c338.gif)# 検証したこと
以下のdelegateメソッドを呼んで水平スクロールと垂直スクロールの時の挙動を調べた。“`swift:ViewCont
iosアプリで車種と走行距離から炭素排出量を計算するプログラム
# 人間は炭素でてきている
![124107813116516430885.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33704/f47716c7-efcb-e38f-11bc-0640bc550493.jpeg)
「水35L、炭素20㎏、アンモニア4L、石灰1.5㎏、リン800g、塩分250g、硝石100g、硫黄80g、フッ素7.5g、鉄5g、ケイ素3g、よし構築式を書くぞ。あとは魂の情報だ、、、」
エンジニアのみなさまにおかれましては常に真理の追及をしていると思いますが人体錬成をするさいにはリスクを考慮したいところです。いろいろと持ってかれる可能性があります。手とか足とか弟とか。
と、話を大きくそらしますが、先月から電通イノベーションスタジオ@サンフランシスコで働いています。案件が大量に降ってくるので忙しくて大変です。エンジニア仲間が欲しいのでこうやってネタ記事を書いてる次第です。
この記事が面白かったらGoodボタンとチャンネル登録とエントリーをお願いします!
https://ww
iOSのLINEの内臓ブラウザが、POSTフォームのtarget=_blankで挙動が狂う件
# 概要
iOSのLINEブラウザの挙動がおかしくてはまりました。# 現象
環境:iOSのLINEとYahooの内臓ブラウザ(ほかにもあるかもしれない。)
条件:POSTメソッドのformタグで、target=”_blank”が指定されている
結果:formのaction先には遷移するが、formのパラメータはすべて抜け落ちる# 再現
## 1. コード
“`html:html01.html
targetなしPOSTフォーム関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた