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

# はじめに
アプリを削除しようとする時に出てくるメニューにボタンが追加できるらしい！
[Home Screen quick actions](https://developer.apple.com/design/human-interface-guidelines/components/system-experiences/home-screen-quick-actions/)という機能だそうです
![IMG_1813.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1d26f467-f510-be85-5fb9-2b52429d85ae.png)

やってみます

# 実装方法
## Info.plistの設定
① プロジェクトを選択します
② ターゲットを選択します
③ 「`Home Screen Shortcut Items`」と入力します
![スクリーンショット 2022-12-20 20.59.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/999c2ebe-253a-c907-e4ca-b7f31d84018b.png)

### Title <font color="Red">(必須)</font>
今回は「サンプルボタン」にしました。
![スクリーンショット 2022-12-20 21.06.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/bc576812-5169-1d6c-f59a-f2dd3aecb6e2.png)
![スクリーンショット 2022-12-20 21.39.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/15f2fcca-27a7-eb38-af61-6625fb4e93dd.png)

### Shortcut Item Type <font color="Red">(必須)</font>
今回は「com.sample.button」にしました。
![スクリーンショット 2022-12-20 21.07.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/fd311a33-537f-214e-0ea2-6aeba7c06327.png)

### Subtitle <font color="Orange">(オプション)</font>
今回は「これはサンプルボタンです」にしました。
![スクリーンショット 2022-12-20 21.08.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/e45951da-08f7-941f-1c7e-165bca38be74.png)
![スクリーンショット 2022-12-20 21.40.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/194a940e-9c95-9509-9c04-490a7991d117.png)

### Icon File <font color="Orange">(オプション)</font>
#### 方法１(テンプレートを使用)
[ここ](https://developer.apple.com/documentation/uikit/uiapplicationshortcuticontype?language=objc)に載ってるやつのみ使用可能です。
![スクリーンショット 2022-12-20 21.19.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/422effe8-d930-d21a-37cd-cbcfb5cb7951.png)
![スクリーンショット 2022-12-20 21.40.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/9ea01b91-a01b-c267-6ad7-2d9188086a90.png)

#### 方法2(SFSymbolsを使用)
キーを`UIApplicationShortcutItemIconSymbolName`にすることでSFSymbolsを使用することができます。
![スクリーンショット 2022-12-20 21.36.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0434a907-dc97-4048-83a1-9b9cb82ef656.png)
![スクリーンショット 2022-12-20 21.41.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/9e44913b-2916-3cdc-ebb0-949b94ac2395.png)

### User Info Dictionary <font color="Orange">(オプション)</font>
よくわかんなかった

## アクションの追加
```swift
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)
    }
}
```

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