@metamask/react-native-search-api
Version:
A React Native module that allows to perform the Spotlight integration on iOS
113 lines (83 loc) • 3.14 kB
Markdown
React Native Search Api module
The `Search Api` module gives you a general React Native interface to interact with the iOS Search API.
# Installation
## Automatic part
1. `npm install react-native-search-api --save`
1. `react-native link`
## Manual part
To the top of your `AppDelegate.m` add the following line:
```
import "RCTSearchApiManager.h"
```
In your AppDelegate implementation add the following:
```
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
return [RCTSearchApiManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
}
```
# Usage
Subscribe to the search item open events in your components like this:
```
componentDidMount() {
<...>
SearchApi.addOnSpotlightItemOpenEventListener(this.handleOnSpotlightItemOpenEventListener);
SearchApi.addOnAppHistoryItemOpenEventListener(this.handleOnAppHistoryItemOpenEventListener);
}
```
To prevent memory leaks don't forget to unsubscribe:
```
componentWillUnmount() {
<...>
SearchApi.removeOnSpotlightItemOpenEventListener(this.handleOnSpotlightItemOpenEventListener);
SearchApi.removeOnAppHistoryItemOpenEventListener(this.handleOnAppHistoryItemOpenEventListener)
}
```
In order to create a new spotlight item, use `indexSpotlightItem` or `indexSpotlightItems`:
```
SearchApi.indexSpotlightItem(item).then(result => {
console.log('Success');
}).catch(err => {
console.log('Error: ' + err);
});
```
To add new items to the app history, 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)});
});
```
The parameters, that items may specify are listed below:
# Search item keys
Dictionaries, passed to create spotlight and app history items have some common
and some specific keys, here is the list of all possible keys.
## Common keys
#### title: string
Title of the item. Required for both item types.
#### contentDescription: string
Description of the item. Optional.
#### keywords: Array<string>
An array of keywords, assigned to the search item. Optional.
#### thumbnailURL: string
URL of the thumbnail, presented in the search results. Optional.
## Spotlight-specific keys
#### uniqueIdentifier: string
The unique identifier of the spotlight item, passed later on during
the item opening event. Required.
#### domain: string
The domain for the spotlight item. Optional.
## App history-specific keys
#### userInfo: Object
A dictionary, passed later on during the item opening event. Required.
#### eligibleForPublicIndexing: boolean
A flag, that when set to `true` allows to add the item to the public index.
Optional.
#### expirationDate: Date
Expiration date of the user activity item. Optional.
#### webpageURL: string
URL of the page, representing the same content on the app's website.
# Credits
Ombori Group AB