Similar presentations:
Платформа Google Firebase
1.
Firebase2.
FirebaseFirebase – это платформа Google, помогающая быстро
разрабатывать качественные мобильные и веб-приложения,
привлекать новых пользователей и повышать доходы. Ее
интегрированные инструменты, такие как сервер для мобильных
приложений, средства аналитики, инструменты для продвижения
приложений и монетизации, можно использовать по отдельности
или в любых сочетаниях.
3.
4.
5.
6.
7.
8.
Для каких приложений подходит Firebase?iOS и Android являются основными целевыми
пакетами Firebase SDK, и расширяется поддержка
web, Flutter, Unity и C++. Вы также должны знать, что
существует Admin SDK, доступный для различных
языков, который можно использовать с любыми
серверными компонентами, которые вам могут
потребоваться.
9.
Группа продуктов “build”• Authentication - авторизация и идентификация пользователей
• Realtime Database - база данных NoSQL в режиме реального
времени, размещаемая в облаке
• Cloud Firestore - база данных NoSQL в реальном времени,
размещаемая в облаке
• Cloud Storage - массивно масштабируемое файловое хранилище
• Cloud Functions - «бессерверный», управляемый событиями бэкэнд
• Firebase Hosting - глобальный веб-хостинг
• ML Kit - SDK для решения распространенных задач ML
10.
Firebase AuthenticationFirebase Authentication предоставляет бэкэндсервисы, простые в использовании SDK и готовые
библиотеки пользовательского интерфейса для
аутентификации пользователей в вашем
приложении.
11.
Cloud FirestoreCloud Firestore - это гибкая, масштабируемая база
данных для мобильной, веб- и серверной разработки от
Firebase и Google Cloud. Как и Firebase Realtime Database,
она обеспечивает синхронизацию данных в клиентских
приложениях с помощью слушателей реального
времени и предлагает поддержку офлайн для
мобильных и веб-приложений, что позволяет создавать
отзывчивые приложения, работающие независимо от
задержек в сети или подключения к Интернету.
12.
13.
Firebase Realtime DatabaseБаза данных Firebase Realtime Database это база данных, размещенная в облаке.
Данные хранятся в формате JSON и
синхронизируются в реальном времени с
каждым подключенным клиентом.
14.
Cloud Storage for FirebaseCloud Storage для Firebase - это мощный,
простой и экономичный сервис хранения
объектов, созданный для масштабирования
Google. SDK Firebase для Cloud Storage
обеспечивают безопасность Google при
загрузке и скачивании файлов для ваших
приложений Firebase независимо от качества
сети.
15.
Firestore, Realtime db, Storage and AuthГарантируется, что клиенты смогут получить
доступ к этим данным только теми способами,
которые вы разрешите. Пользователи, вошедшие в
приложение с аутентификацией, автоматически
предоставляют идентификационный токен, который
вы можете использовать в своих правилах для
защиты того, кто может читать и записывать те или
иные элементы данных.
16.
Cloud FunctionsCloud Functions для Firebase - это бессерверный
фреймворк, позволяющий автоматически запускать
код бэкенда в ответ на события, вызванные фоновыми
событиями, HTTPS-запросами, Admin SDK или
заданиями Cloud Scheduler. Ваш код на JavaScript,
TypeScript или Python хранится в инфраструктуре
Google Cloud и выполняется в управляемой среде. Нет
необходимости управлять и масштабировать
собственные серверы.
17.
Firebase HostingFirebase Hosting - это хостинг веб-контента производственного
уровня для разработчиков. С помощью одной команды вы
можете быстро развернуть веб-приложения в глобальной сети
CDN (сети доставки контента). Хотя Firebase Hosting
оптимизирован для статических и одностраничных вебприложений, вы также можете использовать Firebase Hosting в
паре с Cloud Functions или Cloud Run для создания и
размещения динамического контента и микросервисов на
Firebase.
18.
Firebase Machine LearningFirebase Machine Learning - это мобильный SDK,
который предоставляет опыт Google в области машинного
обучения для приложений Android и Apple в мощном и
простом в использовании пакете. Независимо от того,
являетесь ли вы новичком или опытным специалистом в
области машинного обучения, вы сможете реализовать
необходимую вам функциональность всего в нескольких
строках кода.
19.
Analytics - понимание пользователей и того, как они используют вашеприложение.
Cloud Messaging - отправка сообщений и уведомлений пользователям
Remote Config - настройка приложения без развертывания новой версии;
мониторинг изменений
A/B-тестирование - проводите маркетинговые и юзабилити-эксперименты,
чтобы понять, что работает лучше.
Dynamic Links - конверсия в нативные приложения, совместное использование
пользователями и маркетинговые кампании.
In-App Messaging - привлечение активных пользователей с помощью целевых
сообщений
Crashlytics - Получите четкое и действенное представление о проблемах
приложений
Google AdMob - это простой способ монетизации мобильных приложений с
помощью таргетированной рекламы в приложении.
20.
Google AnalyticsGoogle Analytics - это бесплатное решение для измерения
приложений, которое позволяет получить информацию об
использовании приложений и вовлеченности пользователей.
В основе Firebase лежит Google Analytics - неограниченное решение для
аналитики, доступное бесплатно. Analytics интегрируется с функциями
Firebase и предоставляет вам неограниченную отчетность по 500
отдельным событиям, которые вы можете определить с помощью
Firebase SDK. Отчеты Analytics помогут вам понять, как ведут себя ваши
пользователи, что позволит вам принимать обоснованные решения
относительно маркетинга приложений и оптимизации
производительности.
21.
Firebase Cloud MessagingFirebase Cloud Messaging (FCM) - это кроссплатформенное решение
для обмена сообщениями, позволяющее надежно отправлять
сообщения без каких-либо затрат.
Используя FCM, вы можете уведомить клиентское приложение о
том, что новая электронная почта или другие данные доступны для
синхронизации. Вы можете отправлять уведомления, чтобы
стимулировать повторное привлечение и удержание
пользователей. В таких случаях, как обмен мгновенными
сообщениями, сообщение может передавать клиентскому
приложению полезную нагрузку размером до 4096 байт.
22.
Firebase Remote ConfigFirebase Remote Config - это облачный сервис, позволяющий изменять
поведение и внешний вид вашего клиентского приложения или сервера,
не требуя от пользователей загрузки обновления приложения. При
использовании Remote Config вы создаете в приложении значения по
умолчанию, которые управляют поведением и внешним видом вашего
приложения. Затем вы можете использовать консоль Firebase или APIинтерфейсы бэкенда Remote Config, чтобы отменить значения по
умолчанию для всех потребителей API Remote Config или для сегментов
вашей пользовательской базы. Ваше приложение или серверная
реализация контролирует время применения обновлений и может часто
проверять наличие обновлений и применять их с незначительным
влиянием на производительность.
23.
Firebase A/B TestingFirebase A/B Testing помогает оптимизировать работу приложения,
упрощая проведение, анализ и масштабирование продуктовых и
маркетинговых экспериментов. С его помощью вы можете
протестировать изменения пользовательского интерфейса,
функций или кампаний по привлечению пользователей, чтобы
увидеть, как они влияют на ключевые показатели (например, доход
и удержание), прежде чем широко внедрять их.
A/B Testing работает с FCM, позволяя тестировать различные
маркетинговые сообщения, и с Remote Config, позволяя
тестировать изменения внутри приложения.
24.
How does it work A/B testing25.
Firebase Dynamic LinksДинамические ссылки Firebase - это ссылки, которые работают так,
как вы хотите, на разных платформах и независимо от того,
установлено ли уже ваше приложение.
Благодаря динамическим ссылкам ваши пользователи получают
наилучший опыт для платформы, на которой они открывают
ссылку. Если пользователь открывает динамическую ссылку на iOS
или Android, он может перейти непосредственно к содержимому
ссылки в вашем родном приложении. Если пользователь открывает
ту же динамическую ссылку в настольном браузере, он может
перейти к аналогичному контенту на вашем сайте.
26.
Firebase In-App MessagingFirebase In-App Messaging поможет вам привлечь активных
пользователей вашего приложения, отправляя им целевые,
контекстные сообщения, побуждающие их использовать ключевые
функции приложения.
27.
Firebase CrashlyticsFirebase Crashlytics - это легкий отчет о сбоях в реальном
времени, который поможет вам отслеживать, определять
приоритеты и устранять проблемы со стабильностью,
снижающие качество приложения. Crashlytics экономит
время на устранение неполадок, грамотно группируя сбои
и выделяя обстоятельства, которые привели к их
возникновению.
28.
Google AdMobGoogle AdMob - это мобильная рекламная
платформа, которую вы можете использовать для
получения прибыли от своего приложения.
Использование Firebase с AdMob дает вам
дополнительные данные об использовании
приложения и возможности аналитики.
29.
How does it work? Google AdMobGoogle AdMob помогает монетизировать мобильное приложение с
помощью рекламы в приложении. Объявления могут отображаться
в различных форматах, которые легко добавляются в нативные
компоненты пользовательского интерфейса платформы. На Android
вы можете дополнительно отображать объявления о покупках в
приложении, позволяя пользователям приобретать
рекламируемые товары прямо в приложении.
30.
Firebase Test LabFirebase Test Lab - это облачная
инфраструктура тестирования
приложений, которая позволяет
протестировать ваше
приложение на различных
устройствах и конфигурациях,
чтобы вы могли получить более
полное представление о том, как
оно будет работать в руках
живых пользователей.
31.
Firebase Connect32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Запись данных аутентификацииauth.createUserWithEmailAndPassword(user, pass).addOnCompleteListener(new
OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(SignUp.this, "SignUp Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(SignUp.this, SignIn.class));
} else {
Toast.makeText(SignUp.this, "SignUp Failed" + task.getException().getMessage(),
Toast.LENGTH_SHORT).show();
}
}
});
55.
Вход с даннымиmAuth.signInWithEmailAndPassword(email, pass)
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
Toast.makeText(SignIn.this, "Login Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(SignIn.this, MainActivity.class));
finish();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(SignIn.this, "Login Failed", Toast.LENGTH_SHORT).show();
}
});
56.
Использование Google аутентификацииGoogleSignInOptions options = new
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id)) //add in
strings xml
.requestEmail()
.build();
googleSignInClient = GoogleSignIn.getClient(SignIn.this, options);
57.
Использование Google аутентификацииpublic void onGoogleSignIn(View view) {
Intent intent = googleSignInClient.getSignInIntent();
activityResultLauncher.launch(intent);
}
58.
Использование Google аутентификацииprivate final ActivityResultLauncher<Intent> activityResultLauncher =
registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new
ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
Log.i("logs", "onActivityResult: 1");
if (result.getResultCode() == RESULT_OK) {
Log.i("logs", "onActivityResult: 2");
Task<GoogleSignInAccount> accountTask =
GoogleSignIn.getSignedInAccountFromIntent(result.getData());
try {
GoogleSignInAccount signInAccount =
accountTask.getResult(ApiException.class);
AuthCredential authCredential =
GoogleAuthProvider.getCredential(signInAccount.getIdToken(), null);
mAuth.signInWithCredential(authCredential).addOnCompleteListener(new
OnCompleteListener<AuthResult>() {
59.
Использование Google аутентификации@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.i("logs", "onActivityResult: oncomplete");
if (task.isSuccessful()) {
Log.i("logs", "onActivityResult: succes");
startActivity(new Intent(SignIn.this, MainActivity.class));
mAuth = FirebaseAuth.getInstance();
Toast.makeText(SignIn.this, "Signed in successfully!" + mAuth.getCurrentUser().getEmail(), Toast.LENGTH_SHORT).show();
} else {
Log.i("logs", "onActivityResult: unsucces");
Toast.makeText(SignIn.this, "Failed to sign in: " + task.getException(), Toast.LENGTH_SHORT).show();
}
}
});
} catch (ApiException e) {
Log.i("logs", "onActivityResult: error");
e.printStackTrace();
}
});
//endregion
}
}
}
60.
MainActivitymainText = (TextView)findViewById(R.id.mainText);
mAuth = FirebaseAuth.getInstance();
mainText.setText(mAuth.getCurrentUser().getEmail());
61.
private void displayUserData() {FirebaseUser user = mAuth.getCurrentUser();
if (user != null) {
String email = user.getEmail();
String displayName = user.getDisplayName();
String photoUrl = user.getPhotoUrl() != null ? user.getPhotoUrl().toString() : "No Photo URL";
String phoneNumber = user.getPhoneNumber();
String uid = user.getUid();
String providerId = user.getProviderId();
// Display data
mainText.setText("Email: " + email + "\n");
mainText.append("Display Name: " + displayName + "\n");
mainText.append("Photo URL: " + photoUrl + "\n");
mainText.append("Phone Number: " + phoneNumber + "\n");
mainText.append("User ID: " + uid + "\n");
mainText.append("Provider ID: " + providerId + "\n");
} else {
mainText.setText("No user is currently signed in.");
}
}
62.
RealTime Database• Необходимо добавить зависимости
• Создать базу данных и выдать разрешения на запись
63.
Маленький прикольчикpc_0 - Firebase Database connection was forcefully killed by the server.
Will not attempt reconnect. Reason: Database lives in a different
region. Please change your database URL to https://fir-lec-8a10edefault-rtdb.europe-west1.firebasedatabase.app
mDatabase = FirebaseDatabase.getInstance().getReference("users");
mDatabase = FirebaseDatabase.getInstance("https://fir-lec-8a10edefault-rtdb.europewest1.firebasedatabase.app").getReference("users");
64.
Crud операцииmDatabase.push().setValue(user);
mDatabase.child(userId).setValue(user);
mDatabase.child(userId).removeValue();
65.
Чтение всех элементовValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> dataList = new ArrayList<>();
uids = new ArrayList<>();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String email = ds.child("email").getValue(String.class);
String name = ds.child("username").getValue(String.class); // Assuming you have a "name"
field
uids.add(ds.getKey());
dataList.add(email+" "+name);
}
66.
Простое отображениеArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this,
android.R.layout.simple_list_item_1, dataList);
userList.setAdapter(adapter);
67.
Чтение одного элементаmDatabase.child(userId).get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (!task.isSuccessful()) {
Log.e("firebase", "Error getting data", task.getException());
}
else {
DataSnapshot ds=task.getResult();
String email = ds.child("email").getValue(String.class);
String name = ds.child("username").getValue(String.class);
nameBox.setText(email);
yearBox.setText(name);
// Log.d("firebase", String.valueOf(task.getResult().getValue()));
}
}
});
68.
69.
Initialize Cloud Firestoreimport com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.firestore.Firestore;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
// Use the application default credentials
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(credentials)
.setProjectId(projectId)
.build();
FirebaseApp.initializeApp(options);
Firestore db = FirestoreClient.getFirestore();
70.
Cloud FirestoreDocumentReference docRef = db.collection("users").document("aturing");
Map<String, Object> data = new HashMap<>();
data.put("first", "Alan");
data.put("middle", "Mathison");
data.put("last", "Turing");
data.put("born", 1912);
ApiFuture<WriteResult> result = docRef.set(data);
System.out.println("Update time : " + result.get().getUpdateTime());
71.
Cloud FirestoreApiFuture<QuerySnapshot> query = db.collection("users").get();
QuerySnapshot querySnapshot = query.get();
List<QueryDocumentSnapshot> documents = querySnapshot.getDocuments();
for (QueryDocumentSnapshot document : documents) {
System.out.println("User: " + document.getId());
System.out.println("First: " + document.getString("first"));
if (document.contains("middle")) {
System.out.println("Middle: " + document.getString("middle"));
}
System.out.println("Last: " + document.getString("last"));
System.out.println("Born: " + document.getLong("born"));
}
72.
Delete documentsimport { doc, deleteDoc } from "firebase/firestore";
await deleteDoc(doc(db, "cities", "DC"));
73.
Delete fieldsDocumentReference docRef = db.collection("cities").document("BJ");
Map<String, Object> updates = new HashMap<>();
updates.put("capital", FieldValue.delete());
// Update and delete the "capital" field in the document
ApiFuture<WriteResult> writeResult = docRef.update(updates);
System.out.println("Update time : " + writeResult.get());
74.
Delete collectionsvoid deleteCollection(CollectionReference collection, int batchSize) {
try {
ApiFuture<QuerySnapshot> future = collection.limit(batchSize).get();
int deleted = 0;
List<QueryDocumentSnapshot> documents = future.get().getDocuments();
for (QueryDocumentSnapshot document : documents) {
document.getReference().delete();
++deleted;
}
if (deleted >= batchSize) {
// retrieve and delete another batch
deleteCollection(collection, batchSize);
}
} catch (Exception e) {
System.err.println("Error deleting collection : " + e.getMessage());
}
}
programming