一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS9開放的新API--Spotlight使用指南

iOS9開放的新API--Spotlight使用指南

2020-12-29 16:07iOS開發網 IOS

作為蘋果iOS9的重要特性之一,Spotlight搜索如今重新回到主界面最左側(同樣支持主界面下滑呼出),通過API的支持,還帶來了全新的Universal Search通用搜索功能,除了網絡以及系統本身內容之外,還能直接搜索第三方應用內的相關內

1.Spotloight是什么?

  Spotlight在iOS9上做了一些新的改進, 也就是開放了一些新的API, 通過Core Spotlight Framework你可以在你的app中集成Spotlight。集成Spotlight的App可以在Spotlight中搜索App的內容,并且通過內容打開相關頁面。

  Demo演示

  iOS9開放的新API--Spotlight使用指南

2.如何集成Spotlight

  a.添加所需要的框架 

 

復制代碼 代碼如下:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000
#import <CoreSpotlight/CoreSpotlight.h>
#import <MobileCoreServices/MobileCoreServices.h>
#endif

 

  注,很多APP都是支持iOS9以下的,因此加入#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000,可以解決iOS9以下設備運行崩潰的問題

  b.創建CSSearchableItemAttributeSet 對象

 

復制代碼 代碼如下:

 

CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeImage];
   
    attributeSet.title = spotlightTitle;                // 標題
    attributeSet.keywords = keywords;                   // 關鍵字,NSArray格式
    attributeSet.contentDescription = spotlightDesc;    // 描述
    attributeSet.thumbnailData = photo;                 // 圖標, NSData格式

  // 把圖片轉換成NSData的方法
  UIImagePNGRepresentation([UIImage imageNamed:@"xxx.png"]

 

 

  c.創建可檢索條目CSSearchableItem

 

復制代碼 代碼如下:

// spotlightInfo 可以作為一些數據傳遞給接受的地方
// domainId      id,通過這個id來判斷是哪個spotlight
CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:spotlightInfo domainIdentifier:domainId attributeSet:attributeSet];

 

  d.添加檢索入口

 

復制代碼 代碼如下:

[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item] completionHandler:^(NSError * error) {
     if (error) {
        NSLog(@"indexSearchableItems Error:%@",error.localizedDescription);
     }
}];

 

 

  ========完整代碼========

 

復制代碼 代碼如下:

- (void)insertSearchableItem:(NSData *)photo spotlightTitle:(NSString *)spotlightTitle description:(NSString *)spotlightDesc keywords:(NSArray *)keywords spotlightInfo:(NSString *)spotlightInfo domainId:(NSString *)domainId {
   
    CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeImage];
   
    attributeSet.title = spotlightTitle;                // 標題
    attributeSet.keywords = keywords;                   // 關鍵字,NSArray格式
    attributeSet.contentDescription = spotlightDesc;    // 描述
    attributeSet.thumbnailData = photo;                 // 圖標, NSData格式
   
    // spotlightInfo 可以作為一些數據傳遞給接受的地方
    // domainId      id,通過這個id來判斷是哪個spotlight
    CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:spotlightInfo domainIdentifier:domainId attributeSet:attributeSet];
   
    [[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item] completionHandler:^(NSError * error) {
        if (error) {
            NSLog(@"indexSearchableItems Error:%@",error.localizedDescription);
          
        }
    }];
}

 

 

  ========加載本地圖片的使用方法========

 

 

復制代碼 代碼如下:
[self insertSearchableItem:UIImagePNGRepresentation([UIImage imageNamed:@"xxx.png"]) spotlightTitle:@"等風來" description:@"等風來描述" keywords:@[@"鮑鯨鯨",@"大麗花"] spotlightInfo:@"傳遞過去的值" domainId:@"com.wb.spotlight"];

 

 

  ========加載網絡圖片的使用方法========

 

 

復制代碼 代碼如下:
 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://hiphotos.baidu.com/doc/pic/item/eaf81a4c510fd9f905f61934262dd42a2934a48e.jpg"]];
        [self insertSearchableItem:data spotlightTitle:@"等風來" description:@"等風來描述" keywords:@[@"鮑鯨鯨",@"大麗花"] spotlightInfo:@"傳遞過去的值" domainId:@"com.wb.spotlight"];
    });

 

 

  ========刪除所有spotlight的方法========

 

 

復制代碼 代碼如下:

[[CSSearchableIndex defaultSearchableIndex] deleteAllSearchableItemsWithCompletionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"%@", error.localizedDescription);
}
}];

 

 

  ========刪除指定的spotlight的方法========

 

 

復制代碼 代碼如下:

[[CSSearchableIndex defaultSearchableIndex] deleteSearchableItemsWithDomainIdentifiers:@"domainId" completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"%@", error.localizedDescription);
}
}];

 

 

  ========點擊spotlight后的響應方法========

 

 

復制代碼 代碼如下:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
if ([[userActivity activityType] isEqualToString:CSSearchableItemActionType]) {
NSString *uniqueIdentifier = [userActivity.userInfo objectForKey:CSSearchableItemActivityIdentifier];
// 接受事先定義好的數值,如果是多個參數可以使用把json轉成string傳遞過來,接受后把string在轉換為json
NSLog(@"傳遞過來的值%@", uniqueIdentifier);
}
return YES;
}

 

 

  備注:

 

復制代碼 代碼如下:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000
  // 相關spotlight的方法等
#endif

// Spotlight支持iOS9以上設備運行,對與低版本的設備需加入這個防止崩潰問題

延伸 · 閱讀

精彩推薦
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5272021-01-16
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
主站蜘蛛池模板: 9999视频 | 久久噜国产精品拍拍拍拍 | 91香蕉影院| 色综合久久综合网欧美综合网 | 日本护士撒尿xxxx18 | 国产亚洲精品网站 | 久久热在线视频精品店 | 国产欧美日韩视频在线观看一区二区 | 日本无遮挡拍拍拍凤凰 | 369看片网| 欧美丝袜foot job| 毛片网站大全 | 亚洲免费在线视频 | 亚洲国产福利精品一区二区 | 91看片淫黄大片.在线天堂 | 成人免费观看一区二区 | 99re在线视频观看 | 亚洲精品在线网址 | 性色AV乱码一区二区三区视频 | 日本漫画工囗全彩内番e绅 日本伦理动漫在线观看 | 99热久久这里只精品国产www | 日韩 国产 欧美 | 亚洲七七久久综合桃花 | 欧美老少 | 日韩在线a视频免费播放 | 美女班主任让我爽了一夜视频 | 香蕉成人999视频 | 欧美人禽杂交狂配无删完整 | 美女禁区视频无遮挡免费看 | 无耻之徒第十一季在线观看 | 国产黄色大片网站 | 韩国三级在线 | 美女光屁股网站 | 男人的天堂视频在线 | 青青在线观看 | 国产男人搡女人免费视频 | 无码区国产区在线播放 | 午夜国产福利视频一区 | 亚洲人的天堂男人爽爽爽 | 国产精品精品 | 日本高清不卡一区久久精品 |