Rechercher avec Core Spotlight dans Xamarin.iOS
Core Spotlight est une nouvelle infrastructure pour iOS 9 qui présente une API de type base de données pour ajouter, modifier ou supprimer des liens vers du contenu au sein de votre application. Les éléments ajoutés à l’aide de Core Spotlight seront disponibles dans la recherche Spotlight sur l’appareil iOS.
Pour obtenir un exemple des types de contenu qui peuvent être indexés à l’aide de Core Spotlight, consultez les applications Messages, Courrier, Calendrier et Notes d’Apple. Ils utilisent tous Core Spotlight pour fournir des résultats de recherche.
Création d’un élément
Voici un exemple de création d’un élément et de son indexation à l’aide de 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);
}
});
Ces informations s’affichent comme suit dans un résultat de recherche :
Restauration d’un élément
Lorsque l’utilisateur appuie sur un élément ajouté au résultat de recherche via Core Spotlight pour votre application, la AppDelegate
méthode est appelée (cette méthode ContinueUserActivity
est également utilisée pour NSUserActivity
). Par exemple :
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;
}
Notez que cette fois, nous sommes case activée pour l’activité ayant un ActivityType
de CSSearchableItem.ActionType
.
Mise à jour d’un élément
Il peut arriver qu’un élément d’index que nous avons créé avec Core Spotlight soit modifié, par exemple une modification du titre ou de l’image miniature est nécessaire. Pour apporter cette modification, nous utilisons la même méthode que celle utilisée pour créer initialement l’index.
Nous créons un nouvel CSSearchableItem
ID à l’aide du même ID que celui utilisé pour créer l’élément et attacher un nouvel CSSearchableItemAttributeSet
élément contenant les attributs modifiés :
Lorsque cet élément est écrit dans l’index pouvant faire l’objet d’une recherche, l’élément existant est mis à jour avec les nouvelles informations.
Suppression d’un élément
Core Spotlight offre plusieurs façons de supprimer un élément d’index lorsqu’il n’est plus nécessaire.
Tout d’abord, vous pouvez supprimer un élément par son identificateur, par exemple :
// Delete Items by ID
CSSearchableIndex.DefaultSearchableIndex.Delete(new string[]{"1","16"},(error) => {
// Successful?
if (error !=null) {
Console.WriteLine(error.LocalizedDescription);
}
});
Ensuite, vous pouvez supprimer un groupe d’éléments d’index par leur nom de domaine. Par exemple :
// Delete by Domain Name
CSSearchableIndex.DefaultSearchableIndex.DeleteWithDomain(new string[]{"domain-name"},(error) => {
// Successful?
if (error !=null) {
Console.WriteLine(error.LocalizedDescription);
}
});
Enfin, vous pouvez supprimer tous les éléments d’index avec le code suivant :
// Delete all index items
CSSearchableIndex.DefaultSearchableIndex.DeleteAll((error) => {
// Successful?
if (error !=null) {
Console.WriteLine(error.LocalizedDescription);
}
});
Fonctionnalités principales supplémentaires à la une
Core Spotlight propose les fonctionnalités suivantes qui aident à maintenir l’index à jour et à jour :
- Prise en charge des mises à jour batch : si votre application doit créer ou modifier un grand groupe d’index en même temps, l’ensemble du lot peut être envoyé à la
Index
méthode de laCSSearchableIndex
classe en un seul appel. - Répondre aux modifications d’index : l’utilisation de
CSSearchableIndexDelegate
votre application peut répondre aux modifications et aux notifications de l’index pouvant faire l’objet d’une recherche. - Appliquer la protection des données : à l’aide des classes de protection des données, vous pouvez implémenter la sécurité sur les éléments que vous ajoutez à l’index pouvant faire l’objet d’une recherche à l’aide de Core Spotlight.