1. 程式人生 > 其它 >iOS開發之桌面快捷方式Quick Actions

iOS開發之桌面快捷方式Quick Actions

長按桌面APPIcon圖示快捷操作新增功能開發

在支援 3D Touch 的裝置上,Quick Actions 可以讓使用者更快,更少的操作步驟去完成他們最常做的事情,其中這麼多操作可以通過主螢幕直接完成。比如用力地長按微信圖示,會彈出諸如"掃一掃"和"我的二維碼"等常用功能,這個我在加好友的情況下經常會用到,不是"掃"別人就是被別人"掃"。然後這是它的官方介紹,3D Touch - iOS - Apple Developer。

支援的裝置是在 iPhone 6S 和 6S Plus 及後續出的 iPhone 系列,系統則是從 iOS 9.0 開始支援 3D Touch。

Info.plist 建立快捷方式

快捷方式支援在 Info.plist 裡直接定義,主鍵是UIApplicationShortcutItems,它是一個數組Array。各個 Key 值可以在檢視Information Property List Key Reference,在這裡簡單地介紹一下各個 Key 的作用。

Key 作用
UIApplicationShortcutItemType(必需) 唯一標識
UIApplicationShortcutItemTitle(必需) 顯示的標題
UIApplicationShortcutItemSubtitle(可選) 顯示的副標題
UIApplicationShortcutItemIconType(可選) 使用系統的圖示
UIApplicationShortcutItemIconFile(可選) 使用專案的圖示
UIApplicationShortcutItemUserInfo(可選) 附加的資訊

以下是一個詳細的例子,上述的 Key 除了 UIApplicationShortcutItemUserInfo 外,其它都實現了。

 

現在我們來看看執行效果,值得一提的是,圖示分別在上半屏和下半屏的情況下,顯示的排序是會不同的,具體執行效果如下所示。

圖示在上半屏

 

圖示在下半屏

 

 

 

判斷使用者點選了哪個快捷方式

通過在 AppDelegate.m 檔案中實現 UIApplicationDelegate 的代理方法

application:performActionForShortcutItem:completionHandler:,可以得知使用者是從哪個快捷方式進來的,具體程式碼如下。

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler API_AVAILABLE(ios(9.0)) {
 NSLog(@"%s", __FUNCTION__);
 
 if ([shortcutItem.type isEqualToString:@"search"]) {
  NSLog(@"使用者從快捷方式“搜尋”進來的");
 } else if ([shortcutItem.type isEqualToString:@"list"]) {
  NSLog(@"使用者從快捷方式“榜單”進來的");
 } else if ([shortcutItem.type isEqualToString:@"public"]) {
  NSLog(@"使用者從快捷方式“一鍵釋出”進來的");
 }
}

 

程式碼建立快捷方式

快捷方式也支援程式碼建立,每一個 UIApplicationShortcutItem 就是一個快捷方式,一般在 AppDelegate.m 檔案中實現方法 application:didFinishLaunchingWithOptions: 裡編寫實現程式碼,程式碼比較易懂,這裡就不再說明了。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 NSLog(@"%s", __FUNCTION__);
 
 if (@available(iOS 9.0, *)) {
  UIApplicationShortcutIcon *searchIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeSearch];
  UIApplicationShortcutItem *search = [[UIApplicationShortcutItem alloc] initWithType:@"search" localizedTitle:@"搜尋" localizedSubtitle:nil icon:searchIcon userInfo:nil];
  
  UIApplicationShortcutIcon *publicIcon = [UIApplicationShortcutIcon iconWithTemplateImageName:@"upload"];
  UIApplicationShortcutItem *public = [[UIApplicationShortcutItem alloc] initWithType:@"public" localizedTitle:@"一鍵釋出" localizedSubtitle:nil icon:publicIcon userInfo:nil];
  
  UIApplicationShortcutItem *list = [[UIApplicationShortcutItem alloc] initWithType:@"list" localizedTitle:@"榜單" localizedSubtitle:@"全區排行" icon:nil userInfo:nil];
  
  application.shortcutItems = @[list, public, search];
 }
 
 return YES;
}

 

摘自 https://www.jb51.net/article/162263.htm