다음을 통해 공유


Xamarin.iOS에서 핵심 추천을 사용하여 검색

Core Spotlight는 앱 내 콘텐츠에 대한 링크를 추가, 편집 또는 삭제하는 데이터베이스와 유사한 API를 제공하는 iOS 9용 새로운 프레임워크입니다. Core Spotlight를 사용하여 추가된 항목은 iOS 디바이스의 스포트라이트 검색에서 사용할 수 있습니다.

Core Spotlight를 사용하여 인덱싱할 수 있는 콘텐츠 형식의 예제는 Apple의 메시지, 메일, 일정 및 노트 앱을 참조하세요. 모두 현재 Core Spotlight를 사용하여 검색 결과를 제공합니다.

항목 만들기

다음은 Core Spotlight를 사용하여 항목을 만들고 인덱싱하는 예제입니다.

using CoreSpotlight;
...

// Create attributes to describe an item
var attributes = new CSSearchableItemAttributeSet();
attributes.Title = "App Center Test";
attributes.ContentDescription = "Automatically test your app on 1,000 devices in the cloud.";

// Create item
var item = new CSSearchableItem ("1", "products", attributes);

// Index item
CSSearchableIndex.DefaultSearchableIndex.Index (new CSSearchableItem[]{ item }, (error) => {
    // Successful?
    if (error !=null) {
        Console.WriteLine(error.LocalizedDescription);
    }
});

이 정보는 검색 결과에 다음과 같이 표시됩니다.

핵심 추천 검색 결과 개요

항목 복원

사용자가 앱 AppDelegate 의 Core Spotlight를 통해 검색 결과에 추가된 항목을 탭하면 메서드 ContinueUserActivity 가 호출됩니다(이 메서드도 사용 NSUserActivity됨). 예시:

public override bool ContinueUserActivity (UIApplication application,
   NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler)
{

    // Take action based on the activity type
    switch (userActivity.ActivityType) {
    case "com.xamarin.platform":
        // Restore the state of the app here...
        break;
    default:
        if (userActivity.ActivityType == CSSearchableItem.ActionType.ToString ()) {
            // Display content for searchable item...
        }
        break;
    }

    return true;
}

이번에는 다음을 갖는 ActivityTypeCSSearchableItem.ActionType활동에 대해 검사.

항목 업데이트

핵심 스포트라이트를 사용하여 만든 인덱스 항목을 수정해야 하는 경우가 있을 수 있습니다(예: 제목 또는 썸네일 이미지 변경). 이 변경을 위해 처음에 인덱스 만들기에 사용된 것과 동일한 메서드를 사용합니다. 항목을 만들고 수정된 특성을 포함하는 새 CSSearchableItem 항목을 연결하는 데 사용된 것과 동일한 ID를 사용하여 새 CSSearchableItemAttributeSet 항목을 만듭니다.

항목 업데이트 개요

이 항목을 검색 가능한 인덱스로 작성하면 기존 항목이 새 정보로 업데이트됩니다.

항목 삭제

Core Spotlight는 더 이상 필요하지 않은 경우 인덱스 항목을 삭제하는 여러 가지 방법을 제공합니다.

먼저 식별자별로 항목을 삭제할 수 있습니다. 예를 들면 다음과 같습니다.

// Delete Items by ID
CSSearchableIndex.DefaultSearchableIndex.Delete(new string[]{"1","16"},(error) => {
    // Successful?
    if (error !=null) {
        Console.WriteLine(error.LocalizedDescription);
    }
});

다음으로, do기본 이름으로 인덱스 항목 그룹을 삭제할 수 있습니다. 예시:

// Delete by Domain Name
CSSearchableIndex.DefaultSearchableIndex.DeleteWithDomain(new string[]{"domain-name"},(error) => {
    // Successful?
    if (error !=null) {
        Console.WriteLine(error.LocalizedDescription);
    }
});

마지막으로 다음 코드를 사용하여 모든 인덱스 항목을 삭제할 수 있습니다.

// Delete all index items
CSSearchableIndex.DefaultSearchableIndex.DeleteAll((error) => {
    // Successful?
    if (error !=null) {
        Console.WriteLine(error.LocalizedDescription);
    }
});

추가 핵심 추천 기능

Core Spotlight에는 인덱스가 정확하고 최신 상태로 유지되도록 도와주는 다음과 같은 기능이 있습니다.

  • Batch 업데이트 지원 – 앱에서 대규모 인덱스 그룹을 동시에 만들거나 수정해야 하는 경우 전체 일괄 처리를 한 번의 호출로 클래스의 CSSearchableIndex 메서드로 보낼 Index 수 있습니다.
  • 인덱스 변경 내용 에 응답 - 앱을 사용하면 CSSearchableIndexDelegate 검색 가능한 인덱스의 변경 내용 및 알림에 응답할 수 있습니다.
  • 데이터 보호 적용 – 데이터 보호 클래스를 사용하여 Core Spotlight를 사용하여 검색 가능한 인덱스에 추가하는 항목에 대한 보안을 구현할 수 있습니다.