Le module SearchApi
vous offre une interface React Native générale pour interagir avec l'API de recherche iOS, Core Spotlight.
Pour plus d'informations sur les API de recherche iOS, consultez https://developer.apple.com/ios/search/.
npm install react-native-search-api --save
react-native link
En haut de votre AppDelegate.m
ajoutez la ligne suivante :
# import " RCTSearchApiManager.h "
Dans votre implémentation AppDelegate, ajoutez ce qui suit :
- ( BOOL )application:(UIApplication *)application continueUserActivity:( NSUserActivity *)userActivity restorationHandler:( void (^)( NSArray * _Nullable))restorationHandler {
return [RCTSearchApiManager application: application continueUserActivity: userActivity restorationHandler: restorationHandler];
}
Abonnez-vous aux événements ouverts d'élément de recherche dans vos composants comme ceci :
componentDidMount ( ) {
< ... >
SearchApi . addOnSpotlightItemOpenEventListener ( this . handleOnSpotlightItemOpenEventListener ) ;
SearchApi . addOnAppHistoryItemOpenEventListener ( this . handleOnAppHistoryItemOpenEventListener ) ;
}
Pour éviter les fuites de mémoire, n'oubliez pas de vous désinscrire :
componentWillUnmount ( ) {
< ... >
SearchApi . removeOnSpotlightItemOpenEventListener ( this . handleOnSpotlightItemOpenEventListener ) ;
SearchApi . removeOnAppHistoryItemOpenEventListener ( this . handleOnAppHistoryItemOpenEventListener )
}
En général, vous devriez vous demander si l'application a été lancée à l'aide de la recherche. Pensez donc à utiliser les deux méthodes suivantes :
// For the spotlight item:
SearchApi . getInitialSpotlightItem ( ) . then ( result => {
if ( result ) {
console . log ( 'Started with a spotlight item!' )
}
} )
// For the app history item:
SearchApi . getInitialAppHistoryItem ( ) . then ( result => {
if ( result ) {
console . log ( 'Started with an app history item!' )
}
} )
Afin de créer un nouvel élément Spotlight, utilisez indexSpotlightItem
ou indexSpotlightItems
:
SearchApi . indexSpotlightItem ( item ) . then ( result => {
console . log ( 'Success' ) ;
} ) . catch ( err => {
console . log ( 'Error: ' + err ) ;
} ) ;
Pour ajouter de nouveaux éléments à l'historique de l'application, utilisez createUserActivity
:
SearchApi . indexAppHistoryItem ( item ) . then ( result => {
console . log ( 'Success' ) ;
that . setState ( { labelText : 'Success' } ) ;
} ) . catch ( err => {
console . log ( 'Error: ' + err ) ;
that . setState ( { labelText : ( 'Error: ' + err ) } ) ;
} ) ;
Les paramètres que les éléments peuvent spécifier sont répertoriés ci-dessous :
Les dictionnaires, transmis pour créer des éléments Spotlight et de l'historique des applications, ont des clés communes et des clés spécifiques. Voici la liste de toutes les clés possibles.
title
: chaîneTitre de l'article. Obligatoire pour les deux types d’éléments.
contentDescription
: chaîneDescription de l'article. Facultatif.
keywords
: TableauUn tableau de mots-clés, attribués à l'élément de recherche. Facultatif.
thumbnail
: chaîne|int|objet Miniature à présenter dans les résultats de recherche. Le même format que source
dans le composant Image
. Facultatif.
Exemples :
var localItem = {
< ... > ,
thumbnail : require ( '/react-native/img/favicon.png' )
} ;
var remoteItem = {
< ... > ,
thumbnail : { uri : 'https://facebook.github.io/react-native/docs/assets/favicon.png' }
} ;
Veuillez vous référer à la documentation pour plus de détails.
uniqueIdentifier
: chaîneL'identifiant unique de l'élément phare, transmis ultérieurement lors de l'événement d'ouverture de l'élément. Requis.
domain
: chaîneDomaine de l'élément vedette. Facultatif.
userInfo
: ObjetUn dictionnaire, transmis plus tard lors de l'événement d'ouverture des articles. Requis.
eligibleForPublicIndexing
: booléen Un indicateur qui, lorsqu'il est défini sur true
permet d'ajouter l'élément à l'index public. Facultatif.
expirationDate
: DateDate d'expiration de l'élément d'activité de l'utilisateur. Facultatif.
webpageURL
: chaîneURL de la page, représentant le même contenu sur le site Web de l'application.
© 2017 PrésenceKit par Ombori AB