しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

【Kotlin】XML用の独自の属性を定義する

下のmyTextのように自分独自の属性を定義して使う方法を調べてみました。 <TextView app:myText="Test" /> 定義res/valuesにattrs.xmlに下のように記載するだけです。 <resources> <declare-styleable name="MyAttributes"> <attr name="myText" format="string" /> <attr name="myValue" format="integer" /> </declare-styleable> <…</resources></textview>

Androidアプリのスプラッシュ画面を実装する

アプリ起動時に表示されるスプラッシュ画面の実装を試してみました。 AndroidOS12から仕様が変わったようなので両方のパターンで作ってみます。 OS11以前 下の記事を参考に試してみました。 まずはwindowBackgroundを使う形で試してみます。 qiita.com まず…

Androidアプリ開発のThemeとStyleについて調べてみた

ThemeとStyleの違いについてよく分からなかったので調べてみました。 下記事によるとThemeはアプリ全体など広範囲に適用するものでStyleは個別のパーツに設定するもののようです。 記事を見た感じApplicationやActivityにはThemeを利用、Buttonなどの個別のV…

FlutterでHello World

Flutterを使ってiPhone/Androidアプリを試してみました。 SDKのインストール まずは下サイトを参考にSDKをダウンロードします。 ダウンロードしたら適当な場所に配置してパスを通します。 docs.flutter.dev パスを通したら下コマンドで問題ないかチェックし…

iOS16のロック画面のウィジェットを試してみる

iOS16でロック画面にウィジェットが出せるようになったので試してみました。 まずは通常のアプリ同様にプロジェクトを作成します。 次はプロジェクト設定のTARGETS下部にあるプラスボタンからターゲットを追加します。 追加するのはWidget Extensionです。 …

AndroidのソースコードをMacにダウンロード

Android開発時にソースコードを見たい時があったので見方を調べてみました。 Android Studioから見る事もできるのですが、こちらだと関連メソッド見るのが少し手間だったりしたのでソースコードのダウンロードする方法を調べました。 ソースコードのDLはrepo…

Swift5.5のasync/awaitを試してみる

Swift5.5で登場したasync/awaitを試してみました。 async/awaitは非同期処理を簡単に書けるような機能で通信処理などの実装を書きやすくなります。 今までは通信などの非同期処理を実装する時、下のように完了後のメソッド(completion)を使って実装する事が…

AdMobのAPI用のリフレッシュトークンを取得する

毎回忘れてしまうのでまとめました。 こちらは2022/08時点の情報なので最新情報は下URLをご参照下さい。 developers.google.com まずはGoogle Cloud Platformからプロジェクトを作成します。 Google Cloud Platform 作成後は下URLからプロジェクトのAdMobのA…

【Kotlin】Androidで通知を送る

Androidの通知を実装してみました。 通知は下の手順で送信します。 チャンネルの作成 チャンネルの登録 通知の送信 チャンネルはAndroid 8.0から必須になったもので、通知のグループのようなものです。 ユーザーはチャンネルごとに通知をOFFにしたりする事が…

Kotlinでサービスを使ってみる

Androidのサービスという仕組みを試してみました。 サービスとはバックグラウンドで処理を行う時などに使う機能で、ActivityからUIを除いたような動作をします。 まずはプロジェクトを作成してからServiceを追加します。 名前などを適当につけて作成します。…

intent-filterについて調べてみる

Androidアプリ開発でAndroidManifest.xmlに出てくるintent-filterがよく分かってないので調べてみました。 今回は下の公式ドキュメント参考に調査しました。 developer.android.com intent-filterとはActivityの振る舞いを決めるものです。 intent-filterに…

Android Studioでライブラリを作成する

Android Studioでライブラリを作成して他のAndroidプロジェクトから読み込んでみました。 ライブラリ作成は下サイトを参考にしました。 developer.android.com まずはFile → New → New Moduleからモジュールを作成します。 その先の画面でAndroid Libraryを…

UITableViewCellのtextLabelがdeprecatedになってたので調べてみた

iPhoneアプリの実装をしていたらtextLabelとdetailTextLabelがdeprecatedになっていたので詳しく調べてみました。 textLabelとdetailTextLabelはUITableViewCellの左右のラベルにアクセスできるプロパティーです。 警告は下の通りです。 代わりにUIListConte…

Android用Realmの導入とbuild.gradleについてのメモ

今回はRealmの導入をしてみました。 それに合わせてbuild.gradleについて分からない所の簡単な調査も行いました。 インストール手順は公式サイトを参考にしました。 www.mongodb.com インストール まずは下のようにプロジェクトトップにあるbuild.gradleのpl…

Xcodeで単体テストとUIテストを試してみる

Xcode上でユニットテストとUIテストを作って動かしてみました。 ユニットテストは過去に下記事で試したんですが時間が経ったので再度試してみました。 llcc.hatenablog.com ユニットテストを動かす まずはプロジェクトを作成します。 作成時、Include Tests…

【Kotlin】ViewModelとLiveDataでUIの更新を楽にする

ViewModelとLiveDataを試してみました。 ViewModelとLiveDataは個別に使うこともできるのですが、セットで使われる事が多いようなので一緒に試してみました。 ViewModelを利用する まずはViewModelを使うためにモジュールのbuild.gradleに下の1行を追加しま…

Kotlinの委譲用のキーワードのbyを試してみる

Kotlinのbyというキーワードが分からなかったので調べてみました。 byを使ってみる byとは委譲に使うキーワードです。 実際に動かしながら委譲やbyについて見ていきます。 まずはInterfaceとInterfaceを適用したクラスを作成します。 interface TestInterfac…

Xcodeからxclocのエクスポートとインポートを試す

Xcodeからxclocのエクスポートとインポートを試してみました。 xclocとは翻訳ファイル(Localization.string)などを編集しやすい形にしたファイルです。 こちらのフォーマットはxliffを改善したもので、Xcode10から使えるようになりました。 国際化自体につい…

Swiftでの絵文字判定について調べる

Swiftで文字列の中の絵文字を判定できないかを調べてみました。 結論 下のようにisEmojiPresentation、isEmojiModifier、isEmojiModifierBaseを使う事で判定できるようです。 各メソッドの内容は下部の調査内容に記載しました。 let inputText = "Some strin…

AndroidのXMLのIDの+について調べる

Androidアプリ開発で出てくるIDの+の意味について調べてみました。 <EditText android:id="@+id/editText" /> 調べた所+を付けるのはIDを自動定義するためのようです。 +なしだと参照するだけなのですが、+ありだと新規定義&参照してくれます。 参考にしたのは下記事です。 android - @+id/とはなん</edittext>…

国際化対応メモ

アプリの国際化をしたのでその時の対応内容についてまとめました。 文字列の取得はR.swiftを利用する R.swiftとは画像の取得・Storyboardの取得などを文字列を使わずに行えるようになるライブラリです。 導入する事で下のようにStoryboardやUIImageを取得で…

iOS15のAppearanceについて整理する

iOS15でAppearanceの仕様が変わったので詳しく調べてみました。 Appearanceとは AppearanceとはUIKitの機能の一つで、デフォルトの色やフォントなどを設定できます。 例えばアプリ起動時に下の処理を入れるとナビゲーションバーが青色になります。 UINavigat…

【Kotlin】ContentProviderでGoogle Play services out of dateエラーが出たときの対処

ContentProviderでデータ取得しようとしたら下のようなエラーが出て失敗しました。 Google Play services out of date 調べたところGoogle Play Servicesのアップデートや不足しているSDKを入れる事で対処できるようです。 android studio: LogCatにWarning…

カレンダー形式のUIDatePickerの正しいサイズを計算する

UIDatePickerですがiOSから下のようなカレンダー形式が使えるようになりました。 コードは下のとおりです。 class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let datePicker = UIDatePicker() datePicker.pref…

Embedded binary is not signed with the same certificate as the parent appエラーの対処法

iOSアプリ開発で下のエラーが出たので対処しました。 エラーは実機検証のときのみ発生して、シミュレータでは発生しませんでした。 エラーを見た所アプリ本体とWidget Extensionの証明書が違うとの事です。 error: Embedded binary is not signed with the s…

MacBook Pro 2021でのビルド時間測定

MacBook Proを買い替えたのでXcodeでのビルド時間やAdobe Premiereなどでの動画書き出し時間を比較してみました。 新旧マシンのスペックは下の通りです。 ビルド時間を短くしたかったので、どちらもスペック高めのものを購入しました。 ■ 新MacBook Pro MacB…

UIDatePickerのdatePickerModeをcountDownTimerにした時の挙動確認

今回はUIDatePickerのdatePickerModeをcountDownTimerに変えた時の挙動を見てみました。 まずはdatePickerModeに何もセットしない場合の挙動を見ます。 プロジェクトをViewControllerを作って下のように変更します。 class ViewController: UIViewController…

Storyboard+UIScrollView+AutoLayoutでhas ambiguous scrollable contentエラーが出ないようにする

Storyboard上でUIScrollView+AutoLayoutを使うと下のようなエラーが出る事があります。 今回はその対処法を調べました。 Xcodeのバージョンは13です。 参考にしたのは下URLです。 qiita.com まずはプロジェクトを作ってMain.storyboardにUIScrollViewを配置…

Android StudioのCPU Profilerで重い箇所を特定する

下URLを参考にCPU Profilerを試してみました。 developer.android.com まずは新規プロジェクトを作成します。 Profiler画面は[View] > [Tool Windows] > [Profiler]と選択することで表示できます。 画面は最初は下のようになっています。 アプリを立ち上げる…

StoreKit2のサンプルコードを動かしてみる

今回は下URLからダウンロードできるStoreKit2のサンプルコードを動かしてみました。 developer.apple.com StoreKit2は旧来のStoreKitを改良したもので、シンプルなコードで購入処理が記述できるようになっています。 ただしiOS15限定以上なので利用する際は…