iOS- Home Screen Quick Actions

   1.概述: iOS的快捷鍵分爲靜態快捷鍵和動態快捷鍵,靜態快捷鍵在系統安裝時就可使用,而動態快捷鍵只有第一次啓動程序後能使用。系統限制每一個app最多顯示4個快捷鍵,超過四個的action不起做用。而每一個快捷鍵對應一個UIApplicationShortcutItem 對象。 數組

   2.快捷鍵的建立 app

   2.1 靜態快捷鍵的建立:在app的info.plist的關鍵字UIApplicationShortcutItems(value值爲數組類型)下,每一個Item爲一個UIApplicationShortcutItem對象,每個UIApplicationShortcutItem中可以包含的信息以下: ui


      UIApplicationShortcutItemType(required)   事件的惟一標識,區分事件                            
atom

      UIApplicationShortcutItemTitle(required) 標題,在無子標題時若是標題太長可自動換行      spa

   UIApplicationShortcutItemSubtitle     子標題,在標題的下方 設計

   UIApplicationShortcutItemIconType       枚舉選取系統中的一個圖標 code

   UIApplicationShortcutItemIconFile   自定義一個圖標,以單一顏色單一35*35的大小展現,若是設置這個,UIApplicationShortcutItemIconType將不起做用 orm

   UIApplicationShortcutItemUserInfo   字典,裏面能夠添加各類key,value。 對象

   2.2動態快捷鍵的建立:用代碼動態添加,UIApplication增長了shortcutItems 屬性 three


@property (nullable, nonatomic, copy) NSArray<UIApplicationShortcutItem *> *shortcutItems;

代碼以下:

UIApplicationShortcutIcon *threeIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay];

UIMutableApplicationShortcutItem *threeShortcutItem = [[UIMutableApplicationShortcutItem alloc] initWithType:@"threeType" localizedTitle:@"標題" localizedSubtitle:@"Subtitle" icon:threeIcon userInfo:nil];

UIApplicationShortcutIcon *fourIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePause];

UIMutableApplicationShortcutItem *fourShortcutItem = [[UIMutableApplicationShortcutItem alloc] initWithType:@"fourType" localizedTitle:@"標題" localizedSubtitle:@"Subtitle" icon:fourIcon userInfo:nil];

UIApplicationShortcutIcon *fiveIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];

application.shortcutItems = @[threeShortcutItem, fourShortcutItem];

說明:也能夠把UIApplicationShortcutIcon 改爲可變的,在程序運行時改變action的title,subTitle均可實現。圖片能夠用系統提供的,也可本身設計。

  3.點擊事件處理:

  3.1點擊事件的處理(後臺):當app在後臺的時候UIApplication提供了一個回調方法

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler; 

依據這個回調中的shortcutItem的type和userinfo來作出不一樣的事件處理

  3.2點擊事件的處理(開進程):若是是快捷鍵直接開進程的話,didFinishLaunchingWithOptions返回YES的狀況下,didFinishLaunchingWithOptions方法和performActionForShortcutItem方法都會走。官方示例代碼中給出的是直接開進程時didFinishLaunchingWithOptions方法返回NO,這樣就不走performActionForShortcutItem方法了。這種狀況下須要直接在didFinishLaunchingWithOptions方法中處理事件。

UIApplication又給咱們一個從launchOptions中獲取這個shortcutItem的key(UIApplicationLaunchOptionsShortcutItemKey)
UIApplicationShortcutItem *item = [launchOptions valueForKey:UIApplicationLaunchOptionsShortcutItemKey];根據action響應事件便可。
相關文章
相關標籤/搜索