Das SearchApi
-Modul bietet Ihnen eine allgemeine React Native-Schnittstelle für die Interaktion mit der iOS-Such-API Core Spotlight.
Weitere Informationen zu iOS-Such-APIs finden Sie unter https://developer.apple.com/ios/search/.
npm install react-native-search-api --save
react-native link
Fügen Sie oben in Ihrer AppDelegate.m
die folgende Zeile hinzu:
# import " RCTSearchApiManager.h "
Fügen Sie in Ihrer AppDelegate-Implementierung Folgendes hinzu:
- ( BOOL )application:(UIApplication *)application continueUserActivity:( NSUserActivity *)userActivity restorationHandler:( void (^)( NSArray * _Nullable))restorationHandler {
return [RCTSearchApiManager application: application continueUserActivity: userActivity restorationHandler: restorationHandler];
}
Abonnieren Sie die Ereignisse zum Öffnen von Suchbegriffen in Ihren Komponenten wie folgt:
componentDidMount ( ) {
< ... >
SearchApi . addOnSpotlightItemOpenEventListener ( this . handleOnSpotlightItemOpenEventListener ) ;
SearchApi . addOnAppHistoryItemOpenEventListener ( this . handleOnAppHistoryItemOpenEventListener ) ;
}
Um Speicherlecks zu vermeiden, vergessen Sie nicht, sich abzumelden:
componentWillUnmount ( ) {
< ... >
SearchApi . removeOnSpotlightItemOpenEventListener ( this . handleOnSpotlightItemOpenEventListener ) ;
SearchApi . removeOnAppHistoryItemOpenEventListener ( this . handleOnAppHistoryItemOpenEventListener )
}
Im Allgemeinen sollten Sie daran interessiert sein, ob die App über die Suche gestartet wurde. Erwägen Sie daher die Verwendung der folgenden zwei Methoden:
// 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!' )
}
} )
Um ein neues Spotlight-Element zu erstellen, verwenden Sie indexSpotlightItem
oder indexSpotlightItems
:
SearchApi . indexSpotlightItem ( item ) . then ( result => {
console . log ( 'Success' ) ;
} ) . catch ( err => {
console . log ( 'Error: ' + err ) ;
} ) ;
Um dem App-Verlauf neue Elemente hinzuzufügen, verwenden Sie createUserActivity
:
SearchApi . indexAppHistoryItem ( item ) . then ( result => {
console . log ( 'Success' ) ;
that . setState ( { labelText : 'Success' } ) ;
} ) . catch ( err => {
console . log ( 'Error: ' + err ) ;
that . setState ( { labelText : ( 'Error: ' + err ) } ) ;
} ) ;
Die Parameter, die Elemente angeben können, sind unten aufgeführt:
Wörterbücher, die zum Erstellen von Spotlight- und App-Verlaufselementen übergeben werden, haben einige gemeinsame und einige spezifische Schlüssel. Hier ist die Liste aller möglichen Schlüssel.
title
: ZeichenfolgeTitel des Artikels. Für beide Artikeltypen erforderlich.
contentDescription
: ZeichenfolgeBeschreibung des Artikels. Optional.
keywords
: ArrayEin Array von Schlüsselwörtern, die dem Suchelement zugewiesen sind. Optional.
thumbnail
: string|int|object Miniaturansicht, die in den Suchergebnissen angezeigt werden soll. Dasselbe Format wie source
in der Image
. Optional.
Beispiele:
var localItem = {
< ... > ,
thumbnail : require ( '/react-native/img/favicon.png' )
} ;
var remoteItem = {
< ... > ,
thumbnail : { uri : 'https://facebook.github.io/react-native/docs/assets/favicon.png' }
} ;
Weitere Einzelheiten finden Sie in der Dokumentation.
uniqueIdentifier
: ZeichenfolgeDie eindeutige Kennung des Spotlight-Elements, die später während des Elementeröffnungsereignisses übergeben wird. Erforderlich.
domain
: ZeichenfolgeDie Domäne für das Spotlight-Element. Optional.
userInfo
: ObjektEin Wörterbuch, das später während der Artikeleröffnungsveranstaltung weitergegeben wird. Erforderlich.
eligibleForPublicIndexing
: boolean Ein Flag, das, wenn es auf true
gesetzt ist, das Hinzufügen des Elements zum öffentlichen Index ermöglicht. Optional.
expirationDate
: DatumAblaufdatum des Benutzeraktivitätselements. Optional.
webpageURL
: ZeichenfolgeURL der Seite, die denselben Inhalt auf der Website der App darstellt.
© 2017 PresenceKit von Ombori AB