iOS 14 以降の Google AdMob 対応(AppTrackingTransparency Framework)

資料 https://developers.google.com/admob/ios/ios14?hl=ja#request https://support.google.com/admob/answer/9997589?hl=ja 前提 iOS 14 では AppTrackingTransparency Framework が追加され、ユーザのトラッキング収集はこのフレームワークを介して、ユ…

Apple の住所(地名)検索 API を比較する(iOS)

テキストから住所(地名)を得たい場合 (たとえば、"嵐山" という入力から "京都府京都市右京区" という結果が欲しい) その用途に使用できそうな Apple の API は、以下がある。 CLGeocoder.geocodeAddressString() CLGeocoder.geocodePostalAddress() MKL…

OSS の iOS の Web ブラウザアプリで、UserAgent を設定している箇所を見比べてみる。

気になったので、オープンソースな iOS の Web ブラウザアプリで、 WKWebview のカスタムユーザーエージェント(customUserAgent) を設定している部分を見てみる。 Chrome ユーザーエージェントの例 Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) …

Xcode 12.0 beta 2 (12A6163b) に含まれる Framework

Xcode 12.0 beta 2 (12A6163b) の iOS platform の Frameworks の中をみると $ cd /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks $ ls ARKit.framework AVFoundatio…

本『リーダブルコード』の感想

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)作者:Dustin Boswell,Trevor Foucher発売日: 2012/06/23メディア: 単行本(ソフトカバー) 原題は The Art of Readable Code: Simple and Practical Techniq…

AppStoreConnect での米国輸出規制の暗号に関する質問をスキップする

免除される暗号のみを使用しているのに App Store Connect でアップロードごとに毎回、暗号に関する質問を答えるのが面倒。 その場合は、 Info.plist に以下を追加する。 <key>ITSAppUsesNonExemptEncryption</key> <false/> これでアプリには免除されていない暗号を使用してい</false/>…

iOS 14 の App Clips について

iOS 14 の App Clips に関して調べたことのまとめ 資料一覧 Introducing App Clips Human Interface Guidelines / App Clips Developer Document / App Clips Creating an App Clip Developing a Great App Clip 資料から重要そうなところを抜粋 概要 (画像…

iOS / Android 用のローカライズ文字列ファイルを生成するツール「strgen」

iOS / Android のローカライズ文字列ファイルを一括で生成するツールstrgen(Python)を作った。 PyPI に登録してあるので、 pip でインストールできます。 PyPI : https://pypi.org/project/strgen/ GitHub : https://github.com/daisuke-t-jp/strgen 概要 …

Python パッケージ作成に関する情報まとめ

Python パッケージ作成、PyPI(パイ・ピーアイ) への登録などに役立つ情報を、まとめる。 setup.py だけ使用するパターン、setup.cfg も使用するパターン、__init__.py に多くの役割を持たせるパターン/ほとんど役割を持たせないパターン、などパッケージ作…

iOS でパラパラ漫画のような見た目のインジケーターを作った

everysing というカラオケのアプリで、読み込み中に表示されるインジケーターがパラパラ漫画のようになっていて、キュートな感じがしてよい。(マイクやヘッドフォンのアイコンが表示される) この UI を再現したく、パラパラとアニメするインジケータを作っ…

macOS 10.15 から有効な EndpointSecurity API(SystemExtension.framework)

https://developer.apple.com/jp/system-extensions/ macOS 10.15 から、従来のカーネル拡張(KEXT)を使わずに、ユーザーランドで動作するソフトでシステムイベントを監視(おそらくイベントの許可/禁止も)できるようになった。 https://developer.apple.c…

GitHub Action の Private / Public リポジトリの制限

GitHub Actionsの支払いについて - GitHub ヘルプ Public リポジトリ GitHub Actions の制限はない Private リポジトリ GitHub Actions の実行時間とストレージに制限がある。 アカウントに存在するすべての Private リポジトリの実行時間、ストレージ使用量…

GitHub ワークフローで環境変数、シークレットな情報を使用する

これは 2020/05 時点の情報をもとにした記事なので、最新では事情が変わっている可能性を留意すること。 ワークフロー内で使用できる環境変数 環境変数の利用 - GitHub ヘルプ たとえば GITHUB_REPOSITORY(所有者とリポジトリの名前 octocat/Hello-World な…

GitHub ワークフローを使って、プロジェクトを定期実行し、成果物をデプロイする(Python)

GitHub ワークフローを使ってプロジェクトの定期実行→成果物をデプロイする方法を調べたのでまとめる。 これは 2020/05 時点の情報をもとにした記事なので、最新では事情が変わっている可能性を留意すること。 目的 GitHub ワークフロー / アクションの意味…

DuckDuckGo iOS アプリの「Find In Page(ページ内検索)」で入力文字の候補が選択できない問題を修正

DuckDuckGo Privacy BrowserDuckDuckGo, Inc.ユーティリティ無料 DuckDuckGo の iOS アプリで「Find In Page(ページ内検索)」で日本語が入力できない現象があったので、原因を調べて修正した。 DuckDuckGo は iOS / Android 共にオープンソースなので、第…

iOS の TensorFlow サンプルを試してみる

TensorFlow(テンソルフロー) や iOS でのサンプル実行の方法を調べたメモ。 https://www.tensorflow.org/lite?hl=ja iOS で TensorFlow を動かすには TensorFlow Lite を使用すると良い。 TensorFlow Lite はモバイルや組み込みデバイス向けにチューニング…

pod install と update の違い。あと deintegrate

pod install / update をいままで何となく使っていたので、違いを調べる。 https://guides.cocoapods.org/terminal/commands.html コマンドのマニュアル↑をみると install Podfile.lock に記載されているバージョンで、依存関係をインストールする update 古…

SwiftUI で GoogleAdMob バナーを表示する

SwiftUI で GoogleAds のバナー広告を表示するサンプルを作った。 方法としてはまず GADBannerView を表示する UIViewController を用意する。 class GADBannerViewController: UIViewController { let bannerView = GADBannerView(adSize: kGADAdSizeBanner…

Google AdMob (iOS)バナー広告のサンプルコードで「bottomLayoutGuide」の警告が出る件

https://developers.google.com/admob/ios/banner 2020/04/29 時点で、サンプルコードが以下になっているが func addBannerViewToView(_ bannerView: GADBannerView) { bannerView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(banne…

Swift TextField で入力した数内を金額(通貨)フォーマットにして表示する

https://github.com/daisuke-t-jp/SwiftCurrencyTextFieldSample Swift のテキストフィールドで入力した数値を「金額(円)表記」するサンプルを作ってみた。 ユーロ(€),ドル($) ならば、小数点の考慮も必要だが、日本円ならばこんな感じで。。

Swift URLRequest のタイムアウトを発生させる

URLRequest のリクエストがタイムアウトになった時の動作をみたい時がある。 そういう時は URLRequest の initializer で timeoutinterval をとても小さな値(たとえば 0.0001 秒とか)にすると、タイムアウトを発生させて、動作を試すことができる。 こんな…

UIResponder.keyboardDidShowNotification が他のアプリに切替した時にも通知される問題

iOS アプリでキーボードが表示されたイベントを知りたい時に UIResponder.keyboardDidShowNotification を通知を受ける。 コードは以下のたとえば下のようになる。 import UIKit import os class ViewController: UIViewController { override func viewDidL…

Python | POI データを取得して、地点の天気を得る

https://github.com/daisuke-t-jp/overpass_weather 今回作成したプロジェクトは GitHub に置いた。 概要 OpenWeatherMap API を使うと、呼び出し頻度の制限はあるが、無料で天気情報を取得できる。 https://openweathermap.org/ この取得する天気情報を、意…

SwiftUI の EdgeInsets で zero プロパティを使用する

iOS 13 SDK の時点では UIKit の UIEdgeInsets には zero プロパティがあるが https://developer.apple.com/documentation/uikit/uiedgeinsets/1624518-zero SwiftUI の EdgeInsets には zero プロパティが無い https://developer.apple.com/documentation/s…

SwiftUI List の高さを、項目の数と高さに合わせてちょうどフィットさせる

サンプルは GitHub にある。 List の高さが項目に対して、ちょうどフィットされていないと以下の課題が発生する List の高さが項目表示に足りない -> List 内スクロールが発生する List の高さが項目表示より大きい -> List が大きすぎて、見た目が悪い これ…

blurhash とは

blurhash という興味深い OSS を発見したのでメモ。 「画像」から「ブラー画像」を作るための「ハッシュ値」を作成できる 「ハッシュ値」から、ブラー画像を作成できる イメージはこんな感じ。 で、これは何に使うかと言えば、たとえば「アプリがサーバから…

映画『たそがれ清兵衛』の感想

たそがれ清兵衛発売日: 2013/11/26メディア: Prime Video なにか映画を流しながら PC 作業しようかなあ、と思い、チラチラみながらやってたのだが、だんだんとこれはちゃんと見たほうがよいんじゃないか?と思って、PC を閉じて、映画に集中した。 そのくら…

OSM データから POI データを抽出する

OSM データの読みだしには Overpass API というのがあり、それを介してデータを取得することができる。 手取り早くこれを試すには GUI で Overpass API を試せるサイトがあるので、これを使ってみる↓ https://overpass-turbo.eu/ この左側に以下のクエリを書…

SwiftUI の View 上で、雨が降るアニメーションをつくった

SwiftUI の View に多数の Circle を表示して、雨っぽいアニメーションを作った。 UIView の drawRect をオーバライドしなくてもこのくらいはできるんだなあ。。

SwiftUI の UIView を画像にして保存するサンプル

SwiftUI で UIView の内容を画像(UIImage)にして、アルバムに保存するサンプルを作った。 SwiftUI は現在の View を直接 UIView として扱うことは難しいので UIApplication 経由で UIView を取得する感じになる。 extension UIView { func image() -> UIIm…