Поиск с помощью Основного внимания в Xamarin.iOS
Core Spotlight — это новая платформа для iOS 9, которая представляет API, похожий на базу данных, для добавления, редактирования или удаления ссылок на содержимое в приложении. Элементы, добавленные с помощью Core Spotlight, будут доступны в поиске в центре внимания на устройстве iOS.
Пример типов контента, которые можно индексировать с помощью Core Spotlight, см. в приложениях Apple Messages, Mail, Calendar и Notes. В настоящее время они используют 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);
}
});
Эта информация будет выглядеть следующим образом в результатах поиска:
Восстановление элемента
Когда пользователь нажимает элемент, добавленный в результат поиска через Core Spotlight для приложения, AppDelegate
вызывается метод (этот метод 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
.
Обновление элемента
Иногда может потребоваться изменить элемент индекса, созданный с помощью Core Spotlight, например изменение заголовка или эскиза изображения. Чтобы внести это изменение, мы используем тот же метод, что и для первоначального создания индекса.
Мы создадим новый CSSearchableItem
с помощью того же идентификатора, что и для создания элемента и присоединения нового CSSearchableItemAttributeSet
, содержащего измененные атрибуты:
Когда этот элемент записывается в индекс, доступный для поиска, существующий элемент обновляется новыми сведениями.
Удаление элемента
Core Spotlight предоставляет несколько способов удаления элемента индекса, если он больше не требуется.
Сначала можно удалить элемент по его идентификатору, например:
// Delete Items by ID
CSSearchableIndex.DefaultSearchableIndex.Delete(new string[]{"1","16"},(error) => {
// Successful?
if (error !=null) {
Console.WriteLine(error.LocalizedDescription);
}
});
Затем можно удалить группу элементов индекса по их доменному имени. Например:
// 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 имеет следующие функции, которые помогают обеспечить точность и актуальность индекса:
- Поддержка пакетного обновления. Если приложению нужно создать или изменить большую группу индексов одновременно, весь пакет можно отправить
Index
в методCSSearchableIndex
класса в одном вызове. - Реагирование на изменения индекса. Использование
CSSearchableIndexDelegate
приложения может реагировать на изменения и уведомления из индексов, доступных для поиска. - Применить защиту данных. Используя классы защиты данных, вы можете реализовать безопасность элементов, добавленных в индекс, доступный для поиска, с помощью Core Spotlight.