20210605のiOSに関する記事は3件です。

[iOS] LicensePlistを使用してライセンスを設定アプリに表示してみた

はじめに アプリに使用しているライブラリ等のライセンスを明示する方法が分からなかったので、調べてみるとLicensePlistという「設定アプリにライセンスを自動で一覧表示してくれる」ツールが便利そうなので使用してみました。備忘録です。 LicensePlist というiOSアプリ利用ライブラリのライセンス一覧を生成するツールを作りました mono0926/LicensePlist 環境 [Xcode] 12.4 [iOS] 14.4 [MacOS] 10.15.7 導入手順 CococaPods, Homebrew, Mintを使用してインストールすることが推奨されていました。 本記事ではCocoaPodsを利用しました。 Podfile pod 'LicensePlist' # Installation path: `${PODS_ROOT}/LicensePlist/license-plist` まずプロジェクトファイルの下にSettings.bundleファイルを作成します。 次に、XcodeのTARGETSの[Build Phases]タブでRun Scriptを追加して以下を記載します。 自動で中身を更新してくれるためこの方法が推奨されていますが、もちろん手動でも実行出来ました。 if [ $CONFIGURATION = "Debug" ]; then ${PODS_ROOT}/LicensePlist/license-plist --output-path $PRODUCT_NAME/Settings.bundle fi あとはSetting.bundleの中身(画像ではRoot.plist)を画像のように編集してtitleやFilenameを指定し、アプリを実行します。 アプリを実行すると、設定アプリの中の自分のアプリにLicenseセルが表示されて中身を確認できます。 今回初めてSettings.bundleを触ったのですが、Preference Items内の項目を編集することで、設定アプリに表示する項目も変更することができるようです (上画像のitem1~item4)。 最後に 私を含め、アプリを作るときにライセンス表示について分からない初学者は少なくないのではないでしょうか。 ライブラリをいくつも使用する際は、手動だと時間もかかると思うので簡単に取り込むことができるLicensePlistを今後も活用していこうと思います。 参考文献 この記事は以下の情報を参考にしました。 - LicensePlist というiOSアプリ利用ライブラリのライセンス一覧を生成するツールを作りました - mono0926/LicensePlist
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ElixirでiOSのPUSH通知

はじめに こんにちは。僕は普段Elixirで開発をしています。 Elixirでバックエンド開発をしている中で、iOSへのPUSH通知を実装したのでどうやって実装したかをメモとして残しておきます。 Pigeonの導入 僕はiOSに通知を送信するためにPigeonというライブラリを使用しました。 デバイスのトークンと設定ファイルさえ用意すればPUSH通知を簡単に送信することができます。 デバイストークン取得 AppDelegate.swift func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { // Convert device token to string let tokenParts = deviceToken.map { data -> String in return String(format: "%02.2hhx", data) } let token = tokenParts.joined() print(token) UserDefaults.standard.setValue(token, forKey: "APNKey") } 僕は最初はAppDelegate.swiftにトークンをprintさせて入手しました。なお、このトークンはXcode内のエミュレータではなく実機でアプリをrunしないといけなかったので注意してください! 設定ファイルの用意 開発環境内でPUSH通知の確認をするので、dev.exsにpigeonの設定を記述しました。 dev.exs ... config :pigeon, :apns, apns_default: %{ key: "priv/cert/AuthKey_XXXXXX.p8", key_identifier: "XXXXXX", team_id: "IDIDIDIDID", mode: :dev } ... 通知の送信 message |> Pigeon.APNS.Notification.new(device_id, Notifications.topic()) |> Pigeon.APNS.push() あとはこんな感じで通知が送信できます。 これだと通知のタイトルが表示されなかったりするので、 message |> Pigeon.APNS.Notification.new(device_id, Notifications.topic()) |> Pigeon.APNS.Notification.put_alert(%{"body" => message, "title" => "お知らせ"}) |> Pigeon.APNS.push() こんな感じにしたりすると通知にタイトルを付けたりとかできます。 短い記事でしたが以上です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Swift】UIButtonをsetTitleしたときのちらつきをなくす

はじめに 以下のように、UIButtonをsetTitleした時に一瞬ちらついてしまいます。これをスムーズに入れ替える方法を紹介します。 ちらつきあり ちらつきなし 実装 まず、ちらつきをなくす前のコードがこちらです。  enum ButtonType { case a case b var text: String { switch self { case .a: return "AAAAA" case .b: return "BBBBB" } } mutating func change() { switch self { case .a: self = .b case .b: self = .a } } } final class ViewController: UIViewController { @IBOutlet private weak var button: UIButton! private var buttonType: ButtonType = .b @IBAction private func buttonDidTapped(_ sender: Any) { button.setTitle(buttonType.text, for: .normal) buttonType.change() } } そして、ちらつきをなくしたコードがこちらです。 enum ButtonType { case a case b var text: String { switch self { case .a: return "AAAAA" case .b: return "BBBBB" } } mutating func change() { switch self { case .a: self = .b case .b: self = .a } } } final class ViewController: UIViewController { @IBOutlet private weak var button: UIButton! private var buttonType: ButtonType = .b @IBAction private func buttonDidTapped(_ sender: Any) { UIView.setAnimationsEnabled(false) button.setTitle(buttonType.text, for: .normal) buttonType.change() button.layoutIfNeeded() UIView.setAnimationsEnabled(true) } } ポイントは以下ですね。 ボタンのタイトルを変更する前にアニメーションを止めて、ちらつきを無くします。そして、ボタンに対してlayoutIfNeededをしてあげることで、ちらつきがなくなります。(これを書かないと、ちらついてしまう)そして、最後にアニメーションを再開します。 UIView.setAnimationsEnabled(false) button.setTitle(buttonType.text, for: .normal) buttonType.change() button.layoutIfNeeded() UIView.setAnimationsEnabled(true) おわりに おわりです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む