APP圖標添加長按快捷菜單

官方文檔鏈接
https://developer.apple.com/documentation/uikit/uiapplicationshortcutitem/
官方demo下載鏈接
https://docs-assets.developer.apple.com/published/127f683dd6/AddHomeScreenQuickActions.zip

添加方式有兩種盅安,靜態(tài)添加動態(tài)添加

一、靜態(tài)添加

直接在info.plist文件中添加(不想一個個添加,可以找到info.plist文件窗怒,以源碼方式打開,然后直接復制)

<key>UIApplicationShortcutItems</key>
<array>
    <dict>
        <key>UIApplicationShortcutItemType</key>
        <string>SearchAction</string>
        <key>UIApplicationShortcutItemIconType</key>
        <string>UIApplicationShortcutIconTypeSearch</string>
        <key>UIApplicationShortcutItemTitle</key>
        <string>Search</string>
        <key>UIApplicationShortcutItemSubtitle</key>
        <string>Search for an item</string>
    </dict>
    <dict>
        <key>UIApplicationShortcutItemType</key>
        <string>ShareAction</string>
        <key>UIApplicationShortcutItemIconType</key>
        <string>UIApplicationShortcutIconTypeShare</string>
        <key>UIApplicationShortcutItemTitle</key>
        <string>Share</string>
        <key>UIApplicationShortcutItemSubtitle</key>
        <string>Share an item</string>
    </dict>
</array>
Key Description
UIApplicationShortcutItemType (required) 可以理解為菜單中 item 的標識土涝,添加多個 item 的時候根據(jù)這個標識來區(qū)分點擊事件
UIApplicationShortcutItemTitle (required) 菜單中 item 標題备蚓,最多顯示兩行,顯示不全系統(tǒng)會自動在后面加上 ...
UIApplicationShortcutItemSubtitle 菜單中 item 副標題弛说,最多顯示兩行,顯示不全系統(tǒng)會自動在后面加上 ...
UIApplicationShortcutItemIconType 系統(tǒng)圖標翰意,枚舉類型木人,關(guān)于所有圖標可以自己嘗試,或在文檔中查看
UIApplicationShortcutItemIconFile 自定義圖片名稱(官方文檔推薦圖標應(yīng)是 35 * 35 的單色冀偶,方形圖片)
UIApplicationShortcutItemUserInfo 一個可選的醒第,應(yīng)用程序定義的字典

關(guān)于這些字段更詳細的解釋,可查看官方文檔:https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW36
系統(tǒng)圖標官方文檔:
https://developer.apple.com/documentation/uikit/uiapplicationshortcuticon/icontype

二进鸠、動態(tài)添加

  • 可以放在任何想要添加的頁面稠曼,一般放在頁面啟動之后
    func addShortcutItems() {
        
        // 自定義圖標
        let shareIcon = UIApplicationShortcutIcon(templateImageName: "share")
        let shareItem = UIApplicationShortcutItem(type: "Share", localizedTitle: "分享", localizedSubtitle: nil, icon: shareIcon, userInfo: nil)
        
        // 系統(tǒng)圖標
        let homeIcon = UIApplicationShortcutIcon(type: .home)
        let homeItem = UIApplicationShortcutItem(type: "home", localizedTitle: "首頁", localizedSubtitle: nil, icon: homeIcon, userInfo: nil)
        
        // .fill后綴的圖標名是 Apple 為我們提供了免費 SF 符號,可以在應(yīng)用中使用客年,
        // 具體可查看官方文檔:https://developer.apple.com/sf-symbols/
        let addIcon = UIApplicationShortcutIcon(systemImageName: "square.and.arrow.up.fill")
        let addItem = UIApplicationShortcutItem(type: "Add", localizedTitle: "添加", localizedSubtitle: nil, icon: addIcon, userInfo: nil)
        
        UIApplication.shared.shortcutItems = [shareItem, homeItem, addItem]
    }

  • 點擊代理事件霞幅,在SceneDelegate中進行處理
    /// App沒有啟動,點擊菜單item會打開App量瓜,然后走這個代理方法
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let _ = (scene as? UIWindowScene) else { return }
        
        if let shortcutItem = connectionOptions.shortcutItem {
            // 加0.1s延遲司恳,然后繼續(xù)之后的操作
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
                self.showAlertAction(shortcutItem.type)
            }
        }
    }
 
    /// App已經(jīng)啟動,會走這個代理方法
    func windowScene(_ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
        showAlertAction(shortcutItem.type)
    }
    
    
    /// 菜單item點擊事件
    func showAlertAction(_ type: String) {
        
        var msg: String = ""
        if type == "Add" {
            msg = "Add"
        } else if type == "Share" {
            msg = "Share"
        } else if type == "Home" {
            msg = "Home"
        }
        
        let alertVC = UIAlertController(title: "", message: msg, preferredStyle: .alert)
        let cancleAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
        alertVC.addAction(cancleAction)
        self.window?.rootViewController?.present(alertVC, animated: true, completion: nil)
    }
    

注意點

  • 上線之前菜單中默認有兩個绍傲,移除App編輯主屏幕扔傅,上線之后從App Store中下載之后會自動添加一個 分享APP
  • 靜態(tài)添加動態(tài)添加 兩種方式可以同時使用, 系統(tǒng)會優(yōu)先加載靜態(tài)添加的items, 然后再加載動態(tài)添加的items.
  • 自定義的菜單 items 數(shù)量全部加起來最多只有4個
  • 菜單展示優(yōu)先級從高到低順序依次是,靜態(tài)添加 > 動態(tài)添加 > 系統(tǒng)自帶烫饼,優(yōu)先級越高猎塞,越靠近App圖標在設(shè)備主屏幕中的位置,附支付寶截圖


    App在屏幕上方.jpg
App在屏幕下方.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枫弟,一起剝皮案震驚了整個濱河市邢享,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淡诗,老刑警劉巖骇塘,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伊履,死亡現(xiàn)場離奇詭異,居然都是意外死亡款违,警方通過查閱死者的電腦和手機唐瀑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來插爹,“玉大人厢汹,你說我怎么就攤上這事颠悬∶谏瘢” “怎么了拷橘?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長气嫁。 經(jīng)常有香客問我当窗,道長,這世上最難降的妖魔是什么寸宵? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任崖面,我火速辦了婚禮,結(jié)果婚禮上梯影,老公的妹妹穿的比我還像新娘巫员。我一直安慰自己,他們只是感情好甲棍,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布简识。 她就那樣靜靜地躺著,像睡著了一般感猛。 火紅的嫁衣襯著肌膚如雪财异。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天唱遭,我揣著相機與錄音,去河邊找鬼呈驶。 笑死拷泽,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的袖瞻。 我是一名探鬼主播司致,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼聋迎!你這毒婦竟也來了脂矫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤霉晕,失蹤者是張志新(化名)和其女友劉穎庭再,沒想到半個月后捞奕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡拄轻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年颅围,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恨搓。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡院促,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斧抱,到底是詐尸還是另有隱情常拓,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布辉浦,位于F島的核電站弄抬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏盏浙。R本人自食惡果不足惜眉睹,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望废膘。 院中可真熱鬧竹海,春花似錦、人聲如沸丐黄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灌闺。三九已至艰争,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桂对,已是汗流浹背甩卓。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕉斜,地道東北人逾柿。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像宅此,于是被迫代替她去往敵國和親机错。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容