El módulo SearchApi
le brinda una interfaz general de React Native para interactuar con la API de búsqueda de iOS, Core Spotlight.
Para obtener más información sobre las API de búsqueda de iOS, consulte https://developer.apple.com/ios/search/.
npm install react-native-search-api --save
react-native link
En la parte superior de su AppDelegate.m
agregue la siguiente línea:
# import " RCTSearchApiManager.h "
En su implementación de AppDelegate agregue lo siguiente:
- ( BOOL )application:(UIApplication *)application continueUserActivity:( NSUserActivity *)userActivity restorationHandler:( void (^)( NSArray * _Nullable))restorationHandler {
return [RCTSearchApiManager application: application continueUserActivity: userActivity restorationHandler: restorationHandler];
}
Suscríbase a los eventos abiertos del elemento de búsqueda en sus componentes como este:
componentDidMount ( ) {
< ... >
SearchApi . addOnSpotlightItemOpenEventListener ( this . handleOnSpotlightItemOpenEventListener ) ;
SearchApi . addOnAppHistoryItemOpenEventListener ( this . handleOnAppHistoryItemOpenEventListener ) ;
}
Para evitar pérdidas de memoria, no olvide cancelar la suscripción:
componentWillUnmount ( ) {
< ... >
SearchApi . removeOnSpotlightItemOpenEventListener ( this . handleOnSpotlightItemOpenEventListener ) ;
SearchApi . removeOnAppHistoryItemOpenEventListener ( this . handleOnAppHistoryItemOpenEventListener )
}
En general, debería interesarle si la aplicación se inició mediante la búsqueda; por lo tanto, considere utilizar los dos métodos siguientes:
// 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!' )
}
} )
Para crear un nuevo elemento destacado, utilice indexSpotlightItem
o indexSpotlightItems
:
SearchApi . indexSpotlightItem ( item ) . then ( result => {
console . log ( 'Success' ) ;
} ) . catch ( err => {
console . log ( 'Error: ' + err ) ;
} ) ;
Para agregar nuevos elementos al historial de la aplicación, use createUserActivity
:
SearchApi . indexAppHistoryItem ( item ) . then ( result => {
console . log ( 'Success' ) ;
that . setState ( { labelText : 'Success' } ) ;
} ) . catch ( err => {
console . log ( 'Error: ' + err ) ;
that . setState ( { labelText : ( 'Error: ' + err ) } ) ;
} ) ;
Los parámetros que los elementos pueden especificar se enumeran a continuación:
Los diccionarios, pasados para crear elementos destacados y del historial de aplicaciones, tienen algunas claves comunes y otras específicas; aquí está la lista de todas las claves posibles.
title
: cadenaTítulo del artículo. Requerido para ambos tipos de elementos.
contentDescription
: cadenaDescripción del artículo. Opcional.
keywords
: matrizUna serie de palabras clave, asignadas al elemento de búsqueda. Opcional.
thumbnail
: cadena|int|objeto Miniatura que se presentará en los resultados de búsqueda. El mismo formato que source
en el componente Image
. Opcional.
Ejemplos:
var localItem = {
< ... > ,
thumbnail : require ( '/react-native/img/favicon.png' )
} ;
var remoteItem = {
< ... > ,
thumbnail : { uri : 'https://facebook.github.io/react-native/docs/assets/favicon.png' }
} ;
Consulte la documentación para obtener más detalles.
uniqueIdentifier
: cadenaEl identificador único del elemento destacado, que se transmite más adelante durante el evento de apertura del elemento. Requerido.
domain
: cadenaEl dominio del elemento destacado. Opcional.
userInfo
: objetoUn diccionario, entregado más tarde durante el evento de apertura del artículo. Requerido.
eligibleForPublicIndexing
: booleano Una bandera que, cuando se establece en true
permite agregar el elemento al índice público. Opcional.
expirationDate
: fechaFecha de vencimiento del elemento de actividad del usuario. Opcional.
webpageURL
: cadenaURL de la página, que representa el mismo contenido en el sitio web de la aplicación.
© 2017 PresenciaKit por Ombori AB