Provides methods for managing the index, by inserting, updating and removing Indexable
values in the app.
This is a simple example for inserting a user's recipe into the index:
AppIndex appIndex = AppIndex.getInstance(getApplicationContext());
Indexable recipe = new Indexable.Builder()
.setName("My new brownie recipe")
.setUrl("//example.net/recipes/02101984")
.build();
appIndex.update(recipe);
The unique identifier for an Indexable
is the URL. This means that there
cannot be multiple different Indexable
values with the same URL, but you can
call update(Indexable...)
multiple times to update the same Indexable
as
it changes over time.
The app should handle the ACTION_UPDATE_INDEX
intent so that Google Play services can update the on-device index in the following
situations:
- When the app is installed on a device.
- If an existing version of the app is updated to a version that supports the intent.
- Periodic calls over time to accurately refresh the index.
- If the on-device index is lost for any reason (For example, if the index is corrupted).
The static accessors and object methods of AppIndex are thread-safe. However, Indexable
values are not. Therefore, you should not insert, update, or remove
the same Indexable
from different threads.
Constant Summary
String | ACTION_UPDATE_INDEX | The intent action that will be used by the
indexing service to request an app to update all its Indexable
values. |
String | APP_INDEXING_API_TAG | The tag used for logging debug information for
calls to AppIndex
class. |
String | EXTRA_UPDATE_INDEX_REASON | Used as an int extra field in ACTION_UPDATE_INDEX
intent to indicate the reason for the update
request. |
int | EXTRA_UPDATE_INDEX_REASON_REBUILD | An int value for EXTRA_UPDATE_INDEX_REASON
when the update request is sent because the
index needs to be fully rebuilt. |
int | EXTRA_UPDATE_INDEX_REASON_REFRESH | An int value for EXTRA_UPDATE_INDEX_REASON
when the update request is sent because some
content has not been re-indexed in some time (>30 days), and needs to be
re-indexed to stay in the index. |
Public Constructor Summary
Public Method Summary
synchronized static AppIndex | |
abstract Task< Void > | |
abstract Task< Void > | |
abstract Task< Void > | |
abstract Task< Void > |
Inherited Method Summary
Constants
public static final String ACTION_UPDATE_INDEX
The intent action that will be used by the indexing service to request an app to
update all its Indexable
values. When specifying the intent in the
Manifest file you can also define a permission so that only Google Play services is
allowed to trigger the intent.
Example entry for the Manifest file:
<receiver android:name=".MyIndexingReceiver" android:exported="true" android:permission="com.google.android.gms.permission.APPINDEXING"> <intent-filter> <action android:name="com.google.firebase.appindexing.UPDATE_INDEX"/> </intent-filter> </receiver>
public static final String APP_INDEXING_API_TAG
The tag used for logging debug information for calls to AppIndex
class.
To enable logging: adb shell setprop log.tag.AppIndex
DEBUG
public static final String EXTRA_UPDATE_INDEX_REASON
Used as an int extra field in ACTION_UPDATE_INDEX
intent to indicate the reason for the update request. Possible values are EXTRA_UPDATE_INDEX_REASON_REBUILD
and EXTRA_UPDATE_INDEX_REASON_REFRESH
.
public static final int EXTRA_UPDATE_INDEX_REASON_REBUILD
An int value for EXTRA_UPDATE_INDEX_REASON
when the update request is sent because the index
needs to be fully rebuilt. This could be for several reasons, including app
installation (the app is newly installed on the device), or index resets (For example,
because of temporary storage constraints).
public static final int EXTRA_UPDATE_INDEX_REASON_REFRESH
An int value for EXTRA_UPDATE_INDEX_REASON
when the update request is sent because some
content has not been re-indexed in some time (>30 days), and needs to be re-indexed
to stay in the index.
Public Constructors
public AppIndex ()
Public Methods
public static synchronized AppIndex getInstance ( Context context)
Returns an instance of AppIndex
.
This method does not require Firebase initialization. Instead, the application
context is inferred from the context
that is explicitly passed in.
public abstract Task< Void > remove ( String... urls)
Removes one or multiple Indexable
values from the index.
Parameters
Indexable
values to be removed from
the index. The total number of URLs that can be passed in a single call is limited
to Indexable.MAX_INDEXABLES_TO_BE_UPDATED_IN_ONE_CALL
,
otherwise an AppIndexTooManyArgumentsException
will be thrown.Returns
- A
Task
indicating the result of the operation
public abstract Task< Void > removeAll ()
Removes all data from the index.
Returns
- A
Task
indicating the result of the operation.
public abstract Task< Void > removeTypes ( String... types)
Removes all data for one or multiple IndexableTypes from the index.
Parameters
Returns
- A
Task
indicating the result of the operation.
public abstract Task< Void > update ( Indexable... indexables)
Inserts or updates one or multiple Indexable
values in the index. The Indexable
values are identified by their URL, and the update is a complete
replacement (all previously indexed information for a given Indexable
is
replaced with the new one).
Parameters
Indexable
values to be inserted or updated in the
index. The total number of Indexable
values that can be passed in a
single call is limited to Indexable.MAX_INDEXABLES_TO_BE_UPDATED_IN_ONE_CALL
),
otherwise an AppIndexTooManyArgumentsException
will be thrown.Returns
- A
Task
indicating the result of the operation.