你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> 【投稿】iOS 9:快速讓你的APP支持spotlight搜索

【投稿】iOS 9:快速讓你的APP支持spotlight搜索

編輯:關於IOS

【投稿】iOS 9:快速讓你的APP支持spotlight搜索

iOS9中支持為app中的內容做索引以支持spotlight搜索,感覺是個很有新意的功能。需要提到的是這些索引是存在本地設備中的,不會同步到icloud中,更換了設備就沒有了。

效果就是這樣:

【投稿】iOS 9:快速讓你的APP支持spotlight搜索

創建支持搜索的內容

支持搜索的內容的類是CSSearchableItem。

可以展示的屬性有標題,一段描述文字,還有縮略圖。這裡建議給每個item設置一個過期時間(expirationDate)。

【投稿】iOS 9:快速讓你的APP支持spotlight搜索

首先創建表示一個配置展示內容的對象CSSearchableItemAttributeSet

let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeData as String) // Add metadata that supplies details about the item. attributeSet.title = "July Report.Numbers" attributeSet.contentDescription = "iWork Numbers Document" attributeSet.thumbnailData = DocumentImage.jpg

attributeSet也支持電話號碼,和地理坐標。右邊會有對應的動作,如果是支持導航會有一個箭頭。(因為我的app裡不需要這功能,我自己沒有試過)

attributeSet.phoneNumbers; attributeSet.latitude; attributeSet.longitude;

【投稿】iOS 9:快速讓你的APP支持spotlight搜索

創建CSSearchableItem

uniqueIdentifier相當於這條數據的id。domainIdentifier則表示相關的域。蘋果還提供了一組api對這些索引進行修改刪除操作,domainIdentifier可以當做參數,比如可以講一個域下的所有索引刪除。

let item = CSSearchableItem(uniqueIdentifier: "1", domainIdentifier: "file-1", attributeSet: attributeSet)

將CSSearchableItem添加至系統

CSSearchableIndex.defaultSearchableIndex().indexSearchableItems([item]) { error in   if error != nil {      print(error?.localizedDescription)   }      else {           print("Item indexed.")   } }

tips

大部分的app可能還要兼容iOS8,這裡介紹下swift下的判斷方法。

如果是在一個方法裡要使用iOS9的api,使用下面來判斷(xcode7也會提醒你)。

   if #available(iOS 9.0, *) {    }

如果是自己寫的一整個方法想表示只在iOS9可用,用下面的關鍵字加在方法頭表示

@available(iOS 9.0, *)

直接貼我的項目代碼了。

【投稿】iOS 9:快速讓你的APP支持spotlight搜索

【投稿】iOS 9:快速讓你的APP支持spotlight搜索

用戶搜索後選中打開app的處理

在app delegate裡添加這個回調就好了。

func application(UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: [AnyObject]? -> Void) -> Bool { }

在OC下的方法是這個

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{ }

通過這個可以取到創建CSSearchableItem時設置的identifier

NSString* identifier=userActivity.userInfo[CSSearchableItemActivityIdentifier];

接著就可以用這個identifier取出對應的數據,進行處理了。

參考鏈接:

  • Index App Content

  • Session 709 — Introducing Search APIs

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved