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;
}
이번에는 다음을 갖는 ActivityType
CSSearchableItem.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를 사용하여 검색 가능한 인덱스에 추가하는 항목에 대한 보안을 구현할 수 있습니다.