你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >>  iOS 9:快速讓你的APP支持spotlight搜索

 iOS 9:快速讓你的APP支持spotlight搜索

編輯:IOS開發基礎

Spotlight.jpg

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

效果就是這樣:

blob.png

創建支持搜索的內容

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

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

blob.png

首先創建表示一個配置展示內容的對象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;

blob.png

創建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, *)

直接貼我的項目代碼了。

blob.png

blob.png

用戶搜索後選中打開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