4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Qiita全国学生対抗戦Advent Calendar 2022

Day 20

【iOS】ホームでアプリを長押しした時のメニューにカスタムボタンを追加する

Posted at

はじめに

アプリを削除しようとする時に出てくるメニューにボタンが追加できるらしい!
Home Screen quick actionsという機能だそうです
IMG_1813.PNG

やってみます

実装方法

Info.plistの設定

① プロジェクトを選択します
② ターゲットを選択します
③ 「Home Screen Shortcut Items」と入力します
スクリーンショット 2022-12-20 20.59.28.png

Title (必須)

今回は「サンプルボタン」にしました。
スクリーンショット 2022-12-20 21.06.19.png
スクリーンショット 2022-12-20 21.39.25.png

Shortcut Item Type (必須)

今回は「com.sample.button」にしました。
スクリーンショット 2022-12-20 21.07.11.png

Subtitle (オプション)

今回は「これはサンプルボタンです」にしました。
スクリーンショット 2022-12-20 21.08.21.png
スクリーンショット 2022-12-20 21.40.00.png

Icon File (オプション)

方法1(テンプレートを使用)

ここに載ってるやつのみ使用可能です。
スクリーンショット 2022-12-20 21.19.21.png
スクリーンショット 2022-12-20 21.40.34.png

方法2(SFSymbolsを使用)

キーをUIApplicationShortcutItemIconSymbolNameにすることでSFSymbolsを使用することができます。
スクリーンショット 2022-12-20 21.36.18.png
スクリーンショット 2022-12-20 21.41.16.png

User Info Dictionary (オプション)

よくわかんなかった

アクションの追加

import SwiftUI

@main
struct swiftui_home_screen_quick_actions_sampleApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

class AppDelegate: NSObject, UIApplicationDelegate{
    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        let config = UISceneConfiguration(name: nil, sessionRole: connectingSceneSession.role)
        config.delegateClass = SceneDelegate.self
        return config
    }
}

class SceneDelegate: UIResponder, UIWindowSceneDelegate{
    func windowScene(_ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
        if shortcutItem.type == "com.sample.button" {
            print("サンプルボタンが押されました")
        }
        completionHandler(true)
    }
}

おわり

あんまり活用してるユーザーはいなそう????
自分は使ったことないです笑

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?