1. 功能:系統(tǒng)搜索可以搜索到app內(nèi)的東西
| 對象名 | 描述 | 類型 |
|---|---|---|
| CSSearchableIndex | 用來插入條目的對象 | 對象 |
| CSSearchableItem | 要插入的對象 | 對象 |
| CSSearchableItemAttributeSet | 要插入的對象的屬性描述 | 對象 |
| identifier | 插入的標(biāo)識符,這個在處理的時候可以拿到,然后根據(jù)它來處理點(diǎn)擊事件 | 字符串 |
2. 引入頭文件
#import <CoreSpotlight/CoreSpotlight.h>
3. 創(chuàng)建插入的條目###
CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:identifier domainIdentifier:@"bundleID" attributeSet:attributeSet];
4. 進(jìn)行插入和刪除操作
插入 多個.一個的話數(shù)組里就寫一個
[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item]
completionHandler:^(NSError * __nullable error) {
if (error) {
NSLog(@"%@",error.localizedDescription);
}
}];
刪除一個或者多個,根據(jù)identity來刪除
//存的是id
NSArray * itemsIdentiferArray = @[];
for (NSString * identifty in itemsIdentiferArray) {
if ([identifty isKindOfClass:[NSString class]]) {
[[CSSearchableIndex defaultSearchableIndex] deleteSearchableItemsWithIdentifiers:@[identifty] completionHandler:^(NSError * __nullable error) {
if (!error)
NSLog(@"%@",error.localizedDescription);
}];
}
}
5. 點(diǎn)擊事件的處理
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
NSString *idetifier = userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"];
//拿到id做頁面跳轉(zhuǎn)
}
6. 規(guī)律
- 相同id的條目會覆蓋,不會有多個
- 圖片最好用本地的圖片,比如App logo
- 圖片傳的是data,如果是網(wǎng)絡(luò)的,可以使用緩存,或者異步下載
- 建議封裝一個單例,然后把id都存在一個數(shù)組里,并進(jìn)行數(shù)據(jù)持久化
由于這個單例的耦合性比較大,對接了項(xiàng)目的數(shù)據(jù)模型,就不放demo了,放了也不好用