Android
Инфраструктура приложений Firebase
Поиск…
замечания
Когда вы решите внедрить индексирование приложений, вы можете найти много блогов, документацию, которые могут вас смутить, в этом случае я предлагаю вам придерживаться официальных документов, предоставленных Firebase-Google. Даже если вы хотите использовать третью сторону для этого, сначала попробуйте следовать этой документации, потому что это даст вам четкое представление о том, как все работает.
Google проведет около 24 часов, чтобы проиндексировать ваш контент. Будьте терпеливы. Вы можете сделать тестирование, чтобы все было хорошо на вашей стороне.
Первый пример позволяет вам поддерживать HTTP-адрес вашего веб-сайта для перенаправления в вашем приложении. Это будет работать, например, вы искали запрос в поиске Google, результаты показывают один из URL вашего сайта, ссылки на приложения которого присутствуют в вашем уже установленном приложении. При щелчке по этому URL-адресу он перенаправляет вас прямо на ваш экран приложения, соответствующий этому результату поиска. Вот что я открыл для этого.
Добавление API AppIndexing индексирует ваш контент и используется в Auto completions в панели поиска Google. Давайте возьмем пример приложения inShorts для каждой страницы, есть заголовок и небольшое описание. После чтения 2 или 3 заголовков закройте приложение и перейдите в google searchBar.
Попробуйте ввести заголовок, который вы только что прошли, вы получите предложение страницы страницы с заголовком в качестве заголовка. Это отличается от предложений приложений, которые вы получаете во время поиска приложений. Это происходит из-за того, что вы написали код API AppIndexing для этой конкретной страницы, и заголовок такой же, как вы инициализировали в onCreate()
.
Поддержка URL-адресов Http
Шаг 1: Разрешить Google выполнять сканирование в файл robot.txt вашего содержимого. Извлеките сервер robot.txt. Вы можете контролировать сканирование Google для вашего контента, отредактировав этот файл, вы можете обратиться к этой ссылке для получения более подробной информации.
Шаг 2: - Свяжите свое приложение с вашим сайтом. Включите ресурс links.json. Загрузите его в известную директорию вашего веб-сервера. Контент вашего ресурса links.json -
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target" :
{ "namespace": "android_app",
"package_name": "<your_package_name>",
"sha256_cert_fingerprints": ["<hash_of_app_certificate>"] }
}]
Шаг 3: - Включите ссылки приложения в файл манифеста, чтобы перенаправить URL-адреса в ваше приложение, как показано ниже,
<activity
android:name=".activity.SampleActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize|stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="example.live"
android:pathPrefix="/vod"
android:scheme="https"/>
<data
android:host="example.live"
android:pathPrefix="/vod"
android:scheme="http"/>
</intent-filter>
</activity>
Обратитесь к этому, если вы хотите узнать о каждом теге здесь.
<действие> Укажите действие действия ACTION_VIEW, чтобы можно было установить фильтр намерений из Google Search.
<data> Добавьте один или несколько тегов, где каждый тег представляет собой формат URI, который разрешает эту активность. Как минимум, тег должен включать атрибут android: schem. Вы можете добавить дополнительные атрибуты для дальнейшего уточнения типа URI, который принимает действие. Например, у вас может быть несколько действий, которые принимают аналогичные URI, но которые отличаются просто по имени пути. В этом случае используйте атрибут android: path или его варианты (pathPattern или pathPrefix), чтобы различать, какую деятельность система должна открывать для разных путей URI.
<category> Включить категорию BROWSABLE. Категория BROWSABLE требуется для того, чтобы фильтр намерения был доступен из веб-браузера. Без этого нажатие ссылки в браузере не может быть разрешено для вашего приложения. Категория DEFAULT является необязательной, но рекомендуется. Без этой категории активность может быть запущена только с явным намерением, используя ваше имя компонента приложения.
Шаг 4: - Обработка входящих URL-адресов
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_schedule);
onNewIntent(getIntent());
}
protected void onNewIntent(Intent intent) {
String action = intent.getAction();
Uri data = intent.getData();
if (Intent.ACTION_VIEW.equals(action) && data != null) {
articleId = data.getLastPathSegment();
TextView linkText = (TextView)findViewById(R.id.link);
linkText.setText(data.toString());
}
}
Шаг 5: - Вы можете проверить это, используя команду Android Debug Bridge или студийную конфигурацию. Команда Adb: - Запустите приложение и выполните следующую команду:
adb shell am start -a android.intent.action.VIEW -d "{URL}" < package name >
Android Studio Configurations: - Студия Android> Сборка> Изменить конфигурацию> Параметры запуска> выберите URL> затем введите URL-адрес здесь> Применить и проверить. Запустите приложение, если в окне «Выполнить» отображается ошибка, тогда вам нужно проверить свой формат URL с помощью приложения, упомянутые в манифесте, в противном случае он будет успешно запущен и перенаправлен на страницу, указанную вашим URL, если это указано.
Добавить API AppIndexing
Для добавления этого в проект вы можете легко найти официальный документ, но в этом примере я остановлюсь на некоторых ключевых областях, о которых нужно позаботиться.
Шаг 1: - Добавить службу google
dependencies {
...
compile 'com.google.android.gms:play-services-appindexing:9.4.0'
...
}
Шаг 2: - Импорт классов
import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
Шаг 3: - добавление API-интерфейсов индексирования приложений
private GoogleApiClient mClient;
private Uri mUrl;
private String mTitle;
private String mDescription;
//If you know the values that to be indexed then you can initialize these variables in onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
mUrl = "http://examplepetstore.com/dogs/standard-poodle";
mTitle = "Standard Poodle";
mDescription = "The Standard Poodle stands at least 18 inches at the withers";
}
//If your data is coming from a network request, then initialize these value in onResponse() and make checks for NPE so that your code won’t fall apart.
//setting title and description for App Indexing
mUrl = Uri.parse(“android-app://com.famelive/https/m.fame.live/vod/” +model.getId());
mTitle = model.getTitle();
mDescription = model.getDescription();
mClient.connect();
AppIndex.AppIndexApi.start(mClient, getAction());
@Override
protected void onStop() {
if (mTitle != null && mDescription != null && mUrl != null) //if your response fails then check whether these are initialized or not
if (getAction() != null) {
AppIndex.AppIndexApi.end(mClient, getAction());
mClient.disconnect();
}
super.onStop();
}
public Action getAction() {
Thing object = new Thing.Builder()
.setName(mTitle)
.setDescription(mDescription)
.setUrl(mUrl)
.build();
return new Action.Builder(Action.TYPE_WATCH)
.setObject(object)
.setActionStatus(Action.STATUS_TYPE_COMPLETED)
.build();
}
Чтобы проверить это, просто следуйте шагу 4 в примечаниях, приведенных ниже.