- Зміст статті Новий сервіс Firebase від Google здатний покрити більшість потреб мобільного розробника...
- Детальніше, що там є цікавого
- А за що попросять гроші?
- Аутентифікація в додатку
- Продовження доступно тільки учасникам
- Варіант 2. Відкрий один матеріал
Зміст статті
Новий сервіс Firebase від Google здатний покрити більшість потреб мобільного розробника і вирішити проблеми, яких у тебе ще немає. Сервіс безкоштовний при дотриманні лімітів, а щоб за них вийти, потрібно дуже постаратися. У цій статті я почну перераховувати можливості сервісу і поділюся своїм досвідом роботи з ним.
Сказати, що по нашій вулиці пройшов інкасатор, - це нічого не сказати. Займемося вивченням інструменту впритул!
Farewell VK, hello Firebase
У своїх попередніх статтях я розглядав VK API як безкоштовний бекенд мобільних додатків . У нього є ряд переваг. Хостинг безлімітний, типів контенту багато, керувати ним може навіть школяр, досить пояснити йому структуру наповнення програми ...
Але один недолік фатальний - негнучкість сервера. Запис на стіні можна редагувати через якийсь час, і не вийде відправити у додаток повідомлення про її оновлення. Потрібно кожен раз викачувати всі об'єкти зі стіни і відстежувати всі зміни, строго перебираючи записи. Серйозні проекти так не працюють, і «вистачить це терпіти!» ©.
На наше щастя, Google викупила компанію Firebase і відкрила її для використання всім бажаючим.
Детальніше, що там є цікавого
Твори, рости, заробляй!
У нашому розпорядженні є:
- 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 Гбайт в місяць трафіку
- Storage:
- 5 Гбайт сховища
- 1 Гбайт в день трафіку
- 20 000 операцій завантажень в день
- 50 000 операцій скачування в день
- Hosting:
- 1 Гбайт сховища
- 10 Гбайт в місяць трафіку
- Custom domain hosting & SSL
- Test Lab:
- запуск не більше п'ятнадцяти тестів в день (десять на віртуальних і п'ять на фізичних пристроях)
Більш докладно читай тут .
Наш безкоштовний 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 () {Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent (mGoogleApiClient); startActivityForResult (signInIntent, RC_SIGN_IN); }
Запущена активують запропонує нам вибрати обліковий запис 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 <AuthResult> () {@Override public void onComplete (@NonNull Task <AuthResult> task) {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 <Status> () {@Override public void onResult (@NonNull Status status) {updateUI (null);} }); }
Продовження доступно тільки учасникам
Варіант 1. Приєднайся до товариства «Xakep.ru», щоб читати всі матеріали на сайті
Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score! Детальніше
Варіант 2. Відкрий один матеріал
Зацікавила стаття, але немає можливості стати членом клубу «Xakep.ru»? Тоді цей варіант для тебе! Зверни увагу: цей спосіб підходить тільки для статей, опублікованих більше двох місяців тому.
А за що попросять гроші?
Ru»?