Firebase app indexing как удалить
Перейти к содержимому

Firebase app indexing как удалить

  • автор:

Как увеличить срок хранения мобильного приложения? 6 проверенных способов

Увеличение срока хранения в мобильном приложении — это действие, направленное на возвращение пользователей в приложение. На практике это обычно означает необходимость сосредоточить свои действия на долгосрочных последствиях. Одноразовые рекламные кампании могут привести к кратковременному увеличению трафика приложений, но они не способствуют созданию стабильной базы постоянных клиентов. Вот почему стоит разработать продукт и представить его на рынке таким образом, чтобы он не только привлекал интерес клиентов, но и поддерживал его. Механизмы, описанные ниже, составляют дополнительное целое, которое помогает его развивать.

1. Специальные акции для пользователей

Акции являются одним из способов увеличения удержания. Например акции с ограниченым временем на покупку или ограниченое колличество товаров.

Об этом можно также информировать посредством push-уведомлений, благодаря которым пользователи могут быстро реагировать на это, получая преимущество перед пользователями настольных компьютеров, используя сайт интернет-магазина.

Выделенные предложения также могут быть построены на основе анализа поведения предыдущих пользователей: если мы знаем, какие продукты просматривал наш клиент, мы можем предложить их по более выгодной цене. Кроме того, дополнительным стимулом для использования мобильного приложения является ограничение распространения некоторых предложений на мобильный канал.

Акция может быть дополнена перекрестными продажами (например, «Купите два продукта из данной категории и получить третий бесплатно») и, таким образом, можно увеличить объем покупки.

2. Интеллектуальные push-уведомления

Данные о поведении и геолокации, часто получаемые в режиме реального времени, позволяют точно связаться с людьми с сообщением в нужном месте и времени (например, «Здравствуйте! Вы чувствуете себя сонным? Сегодня со скидкой [здесь стоимость акции]»). Это дает им преимущество перед, например, ремаркетингом на основе файлов cookie. Придавая правильную ценность пользователю через персонализированное сообщение, мы увеличиваем вероятность совершения покупки.

Конечно, отправлять большое количество уведомлений безрассудно бессмысленно — это может отпугнуть пользователей и заставить их не использовать приложение или даже удалить его. Поэтому рекомендуется разрешить пользователям управлять настройками уведомлений в приложении.

Тщательно разработанное push-уведомление должно быть коротким, разборчивым и, самое главное, четко информировать пользователя о преимуществах возврата в приложение. Возможность пробудить интерес пользователя также заключается в использовании расширенных push-уведомлений, которые вместо текста могут иметь значок и изображение в содержимом.

Подробно про это я уже писал в другой своей статье. Если будет интересно — выложу на хабре.

3. Индексация приложений, то есть индексация приложений в поисковой системе.

В 2015 году, после трех лет тестирования, Google, наконец, решил ввести функцию индексации приложений в поисковой системе общего пользования (избранные разработчики получили доступ к ней двумя годами ранее; именно их приложения проложили путь для преемников). В настоящее время Google индексирует приложения для мобильных устройств с iOS и Android, что означает, прежде всего, гораздо больше возможностей для охвата получателей. Индексируя приложение, потенциальные пользователи могут найти его в результатах поиска Google. Я говорю здесь — конечно — о людях, просматривающих интернет с телефонов и планшетов. Если у них есть конкретное приложение, нажимающее на ссылку (например, размещенную на веб-сайте), они автоматически переносятся на один из его экранов (например, ответы на конкретный вопрос или товар). Если нет — они могут установить его, нажав кнопку на странице результатов (или в мобильной версии сайта). В этой ситуации они переносятся прямо в App Store или платформу Google Play.

Следует сразу отметить, что Google индексирует только те приложения, которые соответствуют условиям. Программная документация о так называемой индексация приложений доступна на веб-сайте Firebase App Indexing . Внедрение функций индексации (например, глубоких ссылок с мобильной страницы на экраны приложений) должно осуществляться на этапе разработки программы и являться частью более широкого плана присутствия в Интернете. Сам процесс реализации индексации приложений варьируется в зависимости от операционной системы (мы делаем по-разному в случае iOS, по-разному — Android) и подробно описан здесь (iOS) и здесь (Android) .

Наиболее важным преимуществом внедрения индексации приложений является возможность направлять пользователей непосредственно из результатов поиска на экраны конкретных приложений, что может значительно увеличить количество конверсий (но за счет посещений веб-сайта).

4. Ссылки, открывающие приложение, размещенные в рассылках, социальных сетях и т. Д. (так называемая глубокая связь)

Принцип роботы «глубоких ссылок» или deep link

Глубокие ссылки, то есть ссылки, позволяющие приложению и перемещающие пользователей с помощью мобильных устройств непосредственно на конкретный экран, могут использоваться, например, при рассылке по почте или рекламе в социальных сетях. Глубокие ссылки особенно хорошо работают в рассылках и в рекламе на Facebook.

Кроме того, глубокие ссылки могут содержать правила, которые проверяют, например, есть ли у пользователя текущая версия приложения, и переносят ее в магазин, поощряя обновление в случае отрицательного ответа.

5. Google UAC — универсальные кампании по продвижению приложений

Кампании по продвижению универсальных приложений (Universal App Campaigns , короче UAC ) — хороший вариант для людей, которые хотят автоматизировать рекламные процессы; После загрузки всех необходимых материалов в AdWords система распространения рекламы будет решать, кто, когда, что и как отображать, чтобы достичь нашей цели.

Для таких кампаний вы должны сначала внедрить решения платформы Firebase в свое мобильное приложение, что позволит вам устанавливать события, ранее определенные в приложении.

Вы можете узнать больше о кампаниях Universal App на официальной странице справки Google . Там мы также найдем информацию о различных способах установления целей, ориентированных на удержание.

6. Увеличение удержания мобильного приложения за пределы цифрового маркетинга: ATL и BTL

Продвижение мобильного приложения не должно ограничиваться интернет-маркетингом. Продвижение ATL (выше линии), например, рекламные щиты, газеты, листовки и BTL (ниже линии), например, городские игры в среде дополненной реальности и POSy, при правильном использовании они также могут хорошо работать.

Резюмируя

Следует помнить, что приложения ориентированы скорее на построение долгосрочных отношений с постоянными пользователями. Поэтому работа над сохранением и способы его увеличения стоит начинать на этапе разработки приложения. Если платное продвижение на практике оказывается единственным источником удержания на практике, определенно стоит поискать причины низких коэффициентов возврата пользователей в самом приложении и внести соответствующие изменения.

  • ios development
  • android development
  • deep link
  • mobile
  • Разработка под iOS
  • Разработка под Android

Строим мобильное приложение на Firebase — бесплатном и мощном бэкенде Google

Новый сервис Firebase от Google способен покрыть большинство потребностей мобильного разработчика и решить проблемы, которых у тебя еще нет. Сервис бесплатный при соблюдении лимитов, а чтобы за них выйти, нужно очень постараться. В этой статье я начну перечислять возможности сервиса и поделюсь своим опытом работы с ним.

Сказать, что по нашей улице прошел инкассатор, — это ничего не сказать. Займемся изучением инструмента вплотную!

Farewell VK, hello Firebase

В своих предыдущих статьях я рассматривал VK API как бесплатный бэкенд мобильных приложений. У него есть ряд преимуществ. Хостинг безлимитный, типов контента много, управлять им может даже школьник, достаточно объяснить ему структуру наполнения приложения.

Но один недостаток фатален — негибкость сервера. Запись на стене нельзя редактировать через какое-то время, и не получится отправить в приложение сообщение об ее обновлении. Нужно каждый раз выкачивать все объекты со стены и отслеживать все изменения, строго перебирая записи. Серьезные проекты так не работают, и «хватит это терпеть!» ©.

На наше счастье, Google выкупила компанию Firebase и открыла ее для использования всем желающим.

Подробнее, что там есть интересного

Твори, расти, зарабатывай!

Другие статьи в выпуске:

Xakep #218. Смотри во все глаза

  • Содержание выпуска
  • Подписка на «Хакер» -60%

В нашем распоряжении имеются:

Просто включи свой провайдер

  • Analytics — аналитика по приложению: размер аудитории, информация о пользователях, события в приложении и прочее.
  • Authentication — пользователи могут привязать свои учетные записи к приложению, а к ним мы можем привязать любые данные. Из коробки поддерживаются следующие провайдеры авторизации: Google, Facebook, Twitter, GitHub, анонимный вход и имейл-пароль для своей регистрации. Не хватает только VK-авторизации.
  • Realtime Database — самая настоящая база данных, работает с живыми изменениями в реальном времени.
  • Storage — хранилище для файлов пользователей, можно легко сделать персональное хранилище, а можно и делиться файлами.
  • Hosting — тут просто моментальное развертывание веб-приложений и мобильных приложений с помощью безопасной глобальной сети доставки контента.
  • Test Lab for Android — тестируй приложения Android на самых разных устройствах.
  • App Indexing — свяжи информацию с веб-сайта с внутренними страницами приложения, также есть возможность индексировать данные приложения и отображать их в результатах поиска на устройстве.
  • Crash Reporting — сбор информации о сбоях в приложении (на ранних версиях и сам был источником крашей, но вроде починили).
  • Notifications — уведомления, замена старым Google Cloud Messaging.
  • Remote Config — способ менять поведение приложения прямо со своего сервера, изменяя нужные параметры.
  • Dynamic Links — полезный способ прокинуть контекст в приложение (например, пользователь читал про аспирин на твоем сайте, перешел в маркет, установил приложение, и ему открылась страница с аспирином).
  • AdMob — рекламный сервис с множеством форматов, по праву занимает лидирующие позиции в мобильной рекламе. У этой сети рекламы всегда много, и она модерируется.

А за что попросят деньги?

Деньги с нас справедливо попросят, если наш бизнес действительно разрастется. Когда он упрется в бесплатные лимиты, платить нам уже будет с чего.

Бесплатно нам доступно:

  • Realtime Database:
    • 100 единовременных подключений
    • 1 Гбайт хранилища
    • 10 Гбайт в месяц трафика
    • 5 Гбайт хранилища
    • 1 Гбайт в день трафика
    • 20 000 операций загрузок в день
    • 50 000 операций скачивания в день
    • 1 Гбайт хранилища
    • 10 Гбайт в месяц трафика
    • Custom domain hosting & SSL
    • запуск не более пятнадцати тестов в день (десять на виртуальных и пять на физических устройствах)

    Более подробно читай здесь.

    Наш бесплатный Spark

    Аутентификация в приложении

    Чтобы пользователь мог сохранять настройки приложения на сервере, нужно создать учетную запись. Firebase позволяет это делать при помощи создания собственной учетной записи, как на любом сайте с имейлом-паролем. Также можно привязаться к учетным записям Google, Facebook, Twitter, GitHub. В своих приложениях я использую аккаунты Firebase и Google.

    Разрешенные способы входа

    Хороший пример кода для вдохновения ты найдешь здесь. А как сделать свою регистрацию, внятно описано тут.

    Для связки Google-аккаунта с приложением я делаю следующее. В методе OnCreate нужной Activity создаю объекты GoogleApiClient, FirebaseAuth и слушателя аутентификации FirebaseAuth.AuthStateListener.

    // [START config_signin] // Configure Google Sign In GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build(); // [END config_signin] mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); // [START initialize_auth] mAuth = FirebaseAuth.getInstance(); // [END initialize_auth] // [START auth_state_listener] mAuthListener = new FirebaseAuth.AuthStateListener() < @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) < FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) < // User is signed in Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); >else < // User is signed out Log.d(TAG, "onAuthStateChanged:signed_out"); >// [START_EXCLUDE] updateUI(user); // [END_EXCLUDE] > >; // [END auth_state_listener] 

    Чтобы запустить аутентификацию, используем простой метод:

    private void signIn()

    Запущенная активити предложит нам выбрать учетную запись Google из хранящихся на устройстве. После выбора нужно обработать результат в методе onActivityResult :

    @Override public void onActivityResult(int requestCode, int resultCode, Intent data) < super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(. ); if (requestCode == RC_SIGN_IN) < GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); if (result.isSuccess()) < // Google Sign In was successful, authenticate with Firebase GoogleSignInAccount account = result.getSignInAccount(); firebaseAuthWithGoogle(account); >else < // Google Sign In failed, update UI appropriately // [START_EXCLUDE] Toast.makeText(SettingsActivity.this, R.string.auth_failed, Toast.LENGTH_SHORT).show(); flipCard(); updateUI(null); // [END_EXCLUDE] >> > 

    После выполнения функции firebaseAuthWithGoogle сработает наш слушатель аутентификации mAuthListener.

    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) < Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId()); // [START_EXCLUDE silent] showProgressDialog(); // [END_EXCLUDE] AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener() < @Override public void onComplete(@NonNull Tasktask) < Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful()); // If sign in fails, display a message to the user. // If sign in succeeds the auth state listener // will be notified and logic to handle the signed in // user can be handled in the listener. if (!task.isSuccessful()) < Log.w(TAG, "signInWithCredential", task.getException()); Toast.makeText(SettingsActivity.this, R.string.auth_failed, Toast.LENGTH_SHORT).show(); >// [START_EXCLUDE] hideProgressDialog(); flipCard(); // [END_EXCLUDE] > >); > 

    Отключить приложение от учетной записи поможет метод revokeAccess() : в его колбэке обновляем интерфейс приложения.

    private void revokeAccess() < // Firebase sign out mAuth.signOut(); if (mGoogleApiClient.isConnected()) // Google revoke access Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(new ResultCallback() < @Override public void onResult(@NonNull Status status) < updateUI(null); >>); > 

    Данные пользователя

    Информацию о текущем привязанном пользователе мы получаем из объекта FirebaseUser:

    • getPhotoUrl() — вернет null или ссылку на аватар пользователя;
    • getEmail() — имейл-адрес;
    • getUid() — уникальный ID пользователя в системе;
    • getDisplayName() — имя пользователя;
    • getProviderData().get(1).getProviderId() — подскажет, как пользователь аутентифицировался (проверь на equals(«password») , если через email/пароль).

    Имея ссылку на аватар пользователя, можно в одну строчку кода загрузить его и отобразить в приложении. Для этого есть множество сторонних библиотек: Glide, Fresco, Picasso. Но если на счету каждый килобайт, то можно использовать свой AsyncTask. Вызываем загрузку так:

    ImageView iv_header = (ImageView) mDrawerHeader.findViewById(R.id.iv_header); if (user.getPhotoUrl() != null)

    DownloadImageTask в фоне загружает картинку, а в UI-потоке устанавливает ее в нужный ImageView:

    public class DownloadImageTask extends AsyncTask  < private ImageView ivImageView; private Context context; public DownloadImageTask(ImageView ivImageView) < this.ivImageView = ivImageView; this.context = ivImageView.getContext(); >@Override protected Bitmap doInBackground(String. params) < String imageUrl = params[0]; Bitmap resultImage = null; File f = new File(context.getCacheDir(), String.valueOf(imageUrl.hashCode())); if (f.exists()) < resultImage = BitmapFactory.decodeFile(f.getAbsolutePath()); // Log.d("DownloadImageTask", "f.exists()"); >else < try < URL url = new URL(imageUrl); HttpURLConnection ucon = (HttpURLConnection) url.openConnection(); Bitmap image = BitmapFactory.decodeStream(ucon.getInputStream()); FileOutputStream fos = new FileOutputStream(f); image.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.close(); fos.flush(); resultImage = BitmapFactory.decodeFile(f.getAbsolutePath()); // Log.d("DownloadImageTask", "file downloaded"); >catch (Exception e) < Log.e("getImage", e.toString()); >> return resultImage; > @Override protected void onPostExecute(Bitmap result) < super.onPostExecute(result); if (ivImageView != null) < ivImageView.setImageBitmap(result); >> > 

    Раздел «Аутентификация» в консоли разработчика

    Работа с Realtime Database

    Читать данные из Realtime Database можно и не представившись, для описания уровней доступа к информации используются правила. Описываются они в древовидной форме, можно задать отдельные правила на каждую ветвь.

    Древовидная структура данных Пример правил из моего проекта

    В моем проекте настройки пользователей хранятся в ветке history. Пользователь может читать только свою ветвь и только если он представился. Для проверки работы правил доступа есть симулятор.

    Проверяем правила доступа прямо в консоли

    В том же разделе можно посмотреть статистику по нагрузке, в моем случае с 2000 идентифицировавшихся пользователей пиковая нагрузка была восемь подключений (до ста еще расти и расти).

    В бесплатный тариф укладываемся с запасом

    Резервные копии на текущем тарифе недоступны, но если бизнес разрастется, то обязательно купим и настроим.

    Пишем и читаем данные с Android

    Нужно отметить, что все будет работать и без доступа к интернету, а после подключения устройства к Сети все изменения уйдут на сервер Firebase. Когда ты прочитаешь страницу документации, с непривычки может возникнуть ряд вопросов. На практике их будет еще больше.

    Начнем с записи. Нам надо получить ссылку на объект DatabaseReference и у него добраться до нужной ветки, в которую будем записывать переменную. Доступные нам типы переменных:

    Вот как просто объект User записывается в ветку users:

    private void writeNewUser(String userId, String name, String email)

    Получить уникальный userId пользователя после аутентификации очень просто: user.getUid() . Чтобы обновить данные, нужно просто вызвать setValue() с новыми данными. Уникальный ключ для каждого объекта позволяют получить методы push() и getKey() . В следующем примере я запрашиваю ключ для еще не добавленной записи, а потом создаю ветку с этим ключом и в нее сохраняю объект:

    String key = mDatabase.child(mUserId).push().getKey(); wi.ID = key; Map postValues = wi.toMap(); mDatabase.child(mUserId).child(key).setValue(postValues); 

    Для чтения данных используются слушатели ValueEventListener, их нужно устанавливать на интересующие нас ветки методом addValueEventListener . Событие будет происходить каждый раз при обновлении данных на сервере, при первом подключении к БД, и просто так про запас еще раза два-три может произойти. Так что будь готов к этому морально и практически. Если тебе нужно прочитать данные один раз и больше не мучиться, то используй метод addListenerForSingleValueEvent .

    Вот пример одноразового получения списка объектов для текущего пользователя из ветки history.

    private void syncMainList() < // Забираю данные FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("history"); myRef.child(mUserId).addListenerForSingleValueEvent(new ValueEventListener() < @Override public void onDataChange(DataSnapshot dataSnapshot) < for (DataSnapshot ds : dataSnapshot.getChildren()) < WifiInfo wi = ds.getValue(WifiInfo.class); addToList(wi); >// Устанавливаю слушатель на список setUpListener(); > @Override public void onCancelled(DatabaseError error) < // Failed to read value Log.w(TAG, "Failed to read value.", error.toException()); >>); > 

    А если нам нужно постоянно отслеживать изменяющийся список, то в этом поможет слушатель ChildEventListener, который позволяет слушать не единичный элемент, а всю дочернюю ветку:

    private void setUpListener() < FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("history"); myRef.child(mUserId) .addChildEventListener(new ChildEventListener() < @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) < WifiInfo wi = dataSnapshot.getValue(WifiInfo.class); addToList(wi); >@Override public void onChildChanged(DataSnapshot dataSnapshot, String s) < WifiInfo wi = dataSnapshot.getValue(WifiInfo.class); updateList(wi); // Пока только из активных в историю >@Override public void onChildRemoved(DataSnapshot dataSnapshot) < WifiInfo wi = dataSnapshot.getValue(WifiInfo.class); removeFromList(wi); >@Override public void onChildMoved(DataSnapshot dataSnapshot, String s) < >@Override public void onCancelled(DatabaseError databaseError) < >>); > 

    Здесь пять событий, сами собой объясняющие свою логику. Будь готов к срабатыванию их, причем многократному: на моем опыте при ручном добавлении элемента из приложения событие onChildAdded для этого элемента отрабатывало три раза.

    Узнай своего пользователя при помощи Analytics

    Старый инструмент Google Analytics создавался изначально как инструмент для работы с вебом. Позже его адаптировали под нужды мобайла, но ограничение его было существенным. В новой аналитике Firebase собирается данных намного больше. Например, данные об удалении приложения, обновлении ОС на устройстве, очистка кеша приложения. Множество событий отслеживается автоматически и не требует нашего вмешательства.

    Если мы хотим собрать события внутри приложения, то нам поможет класс FirebaseAnalytics. В своих проектах, чтобы иметь возможность вызывать методы аналитики в любом месте проекта, я размещаю ссылку на объект аналитики в классе Application. Инициализирую его один раз при создании приложения:

    public class App extends Application < private static FirebaseAnalytics mFirebaseAnalytics; public void onCreate() < super.onCreate(); mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); >public static void selectContent(String type, String id) < Bundle bundle = new Bundle(); bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id); bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, type); mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle); >> 

    Метод select_content можно вызвать одной строчкой. Например, соберем данные по использованию пунктов меню: App.selectContent(«меню»,»окно о-программе») или App.selectContent(«меню»,»окно настройки») .

    Установив отслеживание событий в приложении, мы будем знать, что пользователя интересует больше всего. Данные, отправленные методом logEvent , нужно искать в консоли проекта на вкладке «События».

    События нашего проекта

    Все события на рисунке собраны системой автоматически, кроме select_content (его реализация описана выше). Вот детали по этому методу (тут ясно видно, куда отправились параметры CONTENT_TYPE и ITEM_ID ):

    Карточка события select_content

    Полный список событий FirebaseAnalytics доступен тут.

    Про подключение и вместо заключения

    После настройки всех необходимых модулей Firebase в консоли необходимо получить файл конфигурации с настройками проекта google-services.json . Там же можешь добавить контрольные суммы сертификатов SHA (это можно сделать через ассистент прямо из Android Studio: Tools → Firebase). Я добавляю два сертификата: один от дебаг-ключа и один релизный. Файл google-services.json размести в папку app проекта. В gradle-файле проекта не забудь подключить нужные библиотеки, например:

    // Firebase Authentication compile 'com.google.firebase:firebase-auth:10.0.1' // Firebase Data Base compile 'com.google.firebase:firebase-database:10.0.1' // Google Sign In SDK (only required for Google Sign In) compile 'com.google.android.gms:play-services-auth:10.0.1' // Firebase-аналитика compile 'com.google.firebase:firebase-core:10.0.1' 

    И в конце допиши apply plugin: ‘com.google.gms.google-services’ , этот плагин обработает файл google-services.json .

    Эта статья — только первый подход к такому тяжелому снаряду, как Firebase. Недавно этот снаряд стал еще тяжелее, а значит, нам есть что изучать и использовать.

    Думаю, в будущем хакеры найдут достойное применение такой мощной и бесплатной технологии :).

    Firebase. как отключить проект от бд? android studio

    введите сюда описание изображения

    На создавал миллион БД в firebase. Потом вспомнил что бесплатно может работать только одна. Удалили все, а в проекте все равно висит «conected». Как подключиться к новой БД по новой?

    Отслеживать

    задан 9 мар 2022 в 20:21

    23 5 5 бронзовых знаков

    1 ответ 1

    Сортировка: Сброс на вариант по умолчанию

    введите сюда описание изображения

    все довольно просто. Заходите в проводник файлов, в папку, где хранятся другие папки с названиями файлов всех ваших проектов в Android Studio, открываете папку нужно проекта.

    введите сюда описание изображения

    введите сюда описание изображения

    Затем открываете папку «app» (она создается во всех проектах андроид студио, но может называться по другому, если вы ее переименовывали. p.s.это самая корневая папка проекта).

    И удаляете файл «google-services.json». Затем открываете свой проект с андроид студио, нажимаете кнопку «Sync Project with Gradle Files».

    введите сюда описание изображения

    введите сюда описание изображения

    На этом все, галочка в разделе «1) Connect your app to Firebase» исчезла.

    Firebase App Indexing for Personal Content— Getting Personal Content into Search

    Search is an essential aspect in mobile apps. Search is a better alternative to manually navigating into deep hierarchically structured apps. Some apps even have Global Search, to search all the data in all the possible modules in the app from a single search box. The next step is to let the user search all the data in all the apps installed in the device from a single search box — from the “One search box” that we always have at the top of our device home screen.

    App Indexing API for the public contentlike Medium, Quora, Youtube — has been available for more than a year. Previously, App indexing required the content to be uploaded to Google servers and obviously it was not suitable for the user personal content. In the recent version 10.0, Firebase App Indexing API adds support for Google on-device index without the need for Google servers, to make the personal content searchable in the device.

    In September, Google released this feature to only a few apps like Spotify, Facebook Messenger, Evernote, Todoist, Gmail, Google Keep, Asana. Few days before, Google made this API public that lets all the developers add content from their apps to Google’s on-device index.

    Searching your personal results happens entirely on your phone, so you can search even when you’re not connected to WiFi or cellular data.

    In future, we might get a dedicated shortcut on the home screen to search in apps.

    Advantages are obvious:

    • Better user experience. Consider Google Keep. The traditional way to open a to-do list would be like opening the app drawer > scroll and find the Google Keep > find the to-do list > open the list. Using the App Indexing, it is just a tap on the search on the home screen and type to find the to-do list.
    • Implementing the new features or APIs as soon it is released by Google makes it more likely for the apps to get featured in Play store, which improves the app visibility and user installs.

    Privacy Concerns (Quoting from Firebase Site):

    A note about privacy: The personal content index only exists on the user’s device. None of the user’s personal content is uploaded to Google servers and it only remains on the device while the app is installed.

    However, aggregated statistics about apps’ usage of App Indexing and other system health information may be uploaded to Google servers.

    How to implement:

    Check out this implementation guide and codelab for detailed steps and the necessary code. At a high level, it requires just the following 4 steps.

    1. Create a new project in the Firebase console and get the google-services.json file using the application package name. Add that file into the app/ directory in the project.
    2. Add necessary dependency and plugin details in build.gradle
    3. Add AppIndexingService class, which is a subclass of IntentService, and write code to add the personal content to Google index periodically
    4. Write few lines of code to add the content to Google index when the user adds or updates a record and code to remove the content from Google index when the user deletes a record.

    Looks so simple, isn’t it? It took me just less than 2 hours to set this up and running in our application. But it might take some more time to think and solve all the necessary application dependent use-cases.

    If you liked this, click the �� below, and don’t forget to share your thoughts in the comments.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *