Android

Firebase, Bài mở đầu: Giới thiệu về Firebase.

Có thể các bạn đã từng nghe qua cái tên Firebase, có thể các bạn đã thao tác với Firebase ở mức ví dụ, cũng có thể các bạn đã tích hợp Firebase vào ứng dụng của mình rồi. Để giới thiệu, cũng như giúp các bạn nâng cao các kiến thức cơ bản về nền tảng (platform) này, hôm nay EITGUIDE chính thức giới thiệu loạt bài về Firebase.

Firebase_logo

1. Firebase là gì?

Theo Wikipedia, thì “Firebase is a mobile and web application platform with tools and infrastructure designed to help developers build high-quality apps“. Tôi dịch là “Firebase là một nền tảng ứng dụng di động và web với các công cụ và hạ tầng được thiết kế để giúp các lập trình viên xây dựng các ứng dụng chất lượng cao“. Nói ngắn gọn, thay vì trực tiếp cung cấp các ứng dụng, họ cung cấp các dịch vụ nền tảng cho các lập trình viên, chính là các bạn, sử dụng để xây dựng ứng dụng cũng như hỗ trợ các bạn tối ưu hóa, tối đa hóa ứng dụng của mình. Với nhiều dịch vụ chất lượng cao đi kèm mức giá phải chăng, Firebase đã và đang, không chỉ là sự lựa chọn hàng đầu cho các lập trình viên đơn thân (single dev) hay các công ty khởi nghiệp (start ups), mà các công ty, tổ chức lớn có tên tuổi cũng sử dụng “Ngọn lửa” để xây dựng các tính năng, các chương trình mới, cũng như chuyển đổi các dịch vụ trước đây sang hệ thống của Firebase. Chẳng hạn như Shazam, Fabulous và cả chính Google nữa, khi nền tảng nhắn tin Allo được xây dựng trên nền tảng Firebase Realtime Database.

Về mặt lịch sử, Firebase (tiền thân là Evolve) trước đây là một start up được thành lập vào năm 2011 bởi Andrew Lee và James Tamplin. Ban đầu, Evolve chỉ cung cấp cơ sở dữ liệu để các lập trình viên thiết kế các ứng dụng chat (và hiện tại thì để làm quen với realtime db thì bạn cũng làm ứng dụng chat đó thôi). Tuy nhiên, họ nhanh chóng nhận ra tiềm năng sản phẩm của mình khi nhận thấy các khách hàng không sử dụng CSDL để làm ứng dụng chat, mà thay vào đó, để lưu các thông tin như game progress. Bộ đôi Lee và Tamplin quyết định tách mảng realtime ra để thành lập một công ty độc lập – chính là Firebase – vào tháng 4 năm 2012. Sau nhiều lần huy động vốn và gặt hái được những thành công nổi bật, Firebase đã được Google để ý. Vào tháng 10 năm 2014, Firebase gia nhập gia đình Google.

Cả Google và Firebase đều như hổ mọc thêm cánh. Firebase có điều kiện để phát triển thần tốc, mở rộng số lượng các dịch vụ con, còn Google có được một đội ngũ nhân lực chất lượng cao, năng động, cũng như cơ sở hạ tầng và sự hiệu quả mà các dịch vụ của Firebase mang lại, mà không phải xây dựng lại từ đầu. Hiện tại, Google đã chuyển các dịch vụ nền tảng hỗ trợ các lập trình viên bên ngoài về cho Firebase quản lí, chẳng hạn như Cloud Messaging, AdMob và Analytics.

Firebase, theo hướng đi của Google, chính thức hỗ trợ Android, iOS và Web. Thực tế, macOS cũng được hỗ trợ vì macOS chia sẻ nhiều dòng code với iOS, song vì Google và Firebase muốn sử dụng web cho ứng dụng desktop thay vì native, nên có khá ít tài liệu chính thức nói về Firebase cho macOS, cũng như các thư viện cho macOS có thể kém chức năng và không ổn định lắm. Còn về Windows, hiện tại tôi chưa thấy họ lên tiếng nào về việc sẽ chính thức phát hành thư viện cho đứa con của Microsoft, nên nếu các bạn muốn làm ứng dụng cho Windows (UWP) thì chỉ nên (và cũng chỉ có mỗi con đường) làm web-based native apps mà thôi.

2. Firebase “ngon lành” ra sao.

Firebase_services

Như bạn có thể thấy, Firebase cung cấp rất nhiều dịch vụ hỗ trợ giúp các lập trình viên xây dựng ứng dụng của mình. Việc tích hợp Firebase vào ứng dụng có thể hạ nỗi lo lắng của các dev xuống ở mức coding, đặc biệt là cho các dev viết các ứng dụng có liên quan tới web. Bước đầu tiên, bạn cần có host để chứa cơ sở dữ liệu -> đã có Firebase Hosting và Storage. Bạn cần viết code PHP để giao tiếp? Có thể không cần cho lắm, vì Firebase Authentication và Realtime Database đã sẵn sàng cho bạn tích hợp và sử dụng “ngay và luôn”. Bạn muốn gửi thông báo tới các thiết bị? Firebase Cloud Messaging là cái bạn cần. Hơn thế nữa, với Test Lab, Crash Reporting, App Indexing thì Firebase sẽ báo cáo cho bạn các vấn đề có thể xảy ra khi ứng dụng của bạn chạy nhiều trên máy thật. Cũng như Remote Config giúp bạn thay đổi các thiết lập trên ứng dụng của người dùng mà không cần thiết phải publish 1 phiên bản mới…

Cá nhân tôi, sau khi sử dụng Firebase, mặc dù chỉ ở mức độ “cho biết”, nhưng đã có thể kết luận là sẽ sử dụng Firebase cho các ứng dụng có liên quan tới web sau này, bởi tôi chỉ xếp nó sau việc tự thiết kế toàn bộ hạ tầng từ A-Z, còn nếu đem so với các nhà cung cấp khác thì không ai có thể vượt qua được “Ngọn lửa” cả. Các nhà cung cấp khác có thể có một vài dịch vụ chất lượng hơn, nhưng nhìn chung, họ không cung cấp số lượng dịch vụ nhiều như vậy.

3. Vậy Firebase có điểm yếu nào không?

Không có gì là hoàn hảo, và Firebase cũng không là ngoại lệ. Điểm yếu duy nhất của “Ngọn lửa” chính là phần Realtime Database, mà đúng hơn chỉ là phần Database. Cơ sở dữ liệu của họ được tổ chức theo kiểu trees, parent-children, không phải là kiểu Table nên những ai đang quen với SQL có thể sẽ gặp khó khăn từ mức đôi chút tới khá nhiều. Sắp tới, sau khi giới thiệu xong các dịch vụ làm nên chiếc bánh (pie) phía trên, tôi sẽ Việt hóa các hướng dẫn của anh David East, một kĩ sư cao cấp trụ cột của Firebase, về việc chuyển đổi từ SQLDatabase sang Firebase Database.

4. Làm sao để tích hợp Firebase vào trong Project ứng dụng?

Ở đoạn này, tôi sẽ hướng dẫn các bạn tích hợp Firebase vào trong Project Android, iOS và Web. Để tạo một Firebase project mới, các bạn truy cập vào Firebase Console, đăng nhập với tài khoản Google của mình, và nhấn CREATE NEW PROJECT và tạo project.

FirebaseConsole01

Sau khi tạo xong, bạn sẽ thấy giao diện trang tương tự như sau:

FirebaseConsole02

4.1. Đối với Android, tôi sẽ làm theo hướng dẫn của anh Doug Stevenson, senior engineer tại Firebase team.

Lưu ý: Kể từ Android Studio 2.2, bạn có thể tích hợp Firebase vào Android project ngay trong Android Studio. Nhấn Tools/Firebase và làm theo hướng dẫn. Dưới đây là cách không sử dụng công cụ được tích hợp sẵn đó.

Đầu tiên, các bạn hãy chắc rằng project của mình có minSdk là 9, tức Android 2.3 Gingerbread, trở lên. Thông thường, tôi để minSdk là 16, tức Android 4.1 Jelly Bean. Bạn nên đảm bào là đã có tất cả các gói thư viện Google trong Android Studio. Để tải, bạn hãy vào Tools/Android/SDK Manager, trong cửa sổ vừa hiện ra, hãy chuyển sang tab SDK Tools và tải đầy đủ các thư viện Google cần thiết.

AS_SDK_Man

Quay lại trình duyệt web, bạn nhấn vào Add Firebase to your Android app. Bạn sẽ thấy giao diện như sau:

FirebaseConsole03

Ở phần Package name, đó chính là tên gói ứng dụng mà bạn đã chọn khi tạo Android project. Phần App nickname, đó là tên mà bạn dùng để quản lí ứng dụng. Thông thường, nó nên là tên gọi chính thức cho ứng dụng của bạn. Và nếu bạn có làm phiên bản cho iOS, bạn nên kèm chữ “Android” cho dễ phân biệt. Ở phần Debug signing cert, mặc dù nó mang tính optional, tức là có cũng được, không có cũng không sao, nhưng tốt hơn hết nên là có. Sau này, nếu bạn sử dụng các dịch vụ khác của Firebase, bạn không cần bổ sung. Để lấy mã SHA-1 cho project của bạn, bạn cần dùng dòng lệnh, với lệnh sau, giả sử bạn cài đặt Android Studio và Sdk vào các thư mục mặc định:

Mac/Linux

Windows

Bạn sẽ copy phần SHA-1 trong output, và dán nó vào khung tương ứng. Tiếp theo, nút ADD APP chính nơi tiếp theo để bạn nhấn. Trình duyệt sẽ tự động download tập tin google-services.json. Bạn chuyển góc nhìn từ Android sang Project trong Studio, và paste tập tin kia vào thư mục app. Tức là google-services.json sẽ ngang hàng với tập tin build.gradle module app có sẵn.

Trong tập tin build.gradle module app, bạn thêm các dòng để tập tin tương tự như sau:

Trong tập tin build.gradle ở ngoài, bạn thêm dòng classpath ‘com.google.gms:google-services:3.0.0’ trong dependencies. Dòng này ngang hàng với dòng classpath có sẵn.

Cuối cùng, cho sync Gradle lại. Như vậy là bạn đã tích hợp và liên kết ứng dụng của bạn tới Firebase project rồi đó. Việc tiếp theo là… viết code!

4.2. Đối với iOS, tôi sẽ làm theo hướng dẫn của anh Todd Kerpelman, senior engineer tại Firebase team.

Tại Firebase Console, bạn nhấn vào nút Add Firebase to your iOS app. Bạn sẽ thấy giao diện như sau:

FirebaseConsole05

Bạn sẽ điền Bundle ID vào ô tương ứng. Phần App nickname, đó là tên mà bạn dùng để quản lí ứng dụng. Thông thường, nó nên là tên gọi chính thức cho ứng dụng của bạn. Và nếu bạn có làm phiên bản cho Android, bạn nên kèm chữ “iOS” cho dễ phân biệt. Nếu bạn đã đưa ứng dụng lên App Store thì nên dán App Store ID vào để Firebase tự động tìm tới ứng dụng của bạn. Sau khi đã điền đầy đủ các thông tin, nút ADD APP chính nơi tiếp theo để bạn nhấn. Trình duyệt sẽ tự động download tập tinGoogleService-Info.plist. Bạn sẽ add file này vào ngay trong thư mục project của bạn.

Để tích hợp Firebase vào Xcode project, bạn cần có CocoaPods để tải các thư viện ngoài. Bạn có thể tìm hiểu Pods tại https://cocoapods.org/. Để add thư viện, bạn chỉ cần tạo một Podfile trong thư mục project với nội dung như sau, rồi cho chạy init và install:

Kể từ bây giờ, bạn sẽ thao tác với tập tin .xcworkspace chứ không còn là tập tin .xcodeproj nữa. Hãy mở nó trong Xcode. Trong ViewController, bạn chỉ cần cho import Firebase

và cho khởi tạo FIRApp.configure() trong application:didFinishLaunchingWithOptions: là bạn đã sẵn sàng với Firebase rồi. Hãy bắt đầu code thôi!

4.3. Đối với web, mọi thứ sẽ dễ hơn khá nhiều.

Tại Firebase Console, bạn nhấn vào nút Add Firebase to your web app. Bạn sẽ thấy giao diện như sau:

FirebaseConsole06

Bạn chỉ cần thêm các dòng đó vào cuối phần <body> trong tập tin HTML của bạn là được. Ví dụ:

Vậy là xong, bạn đã sẵn sàng để viết một web app có tích hợp Firebase.

Không quá khó phải không?

7 thoughts on “Firebase, Bài mở đầu: Giới thiệu về Firebase.”

  1. Giúp tối. Tôi có 1 apps game đơn giản code = eclipse nhưng chưa bao giờ dùng công cụ phân tích. Nghiên cứu thấy, có Firebase Analytics hay quá. Vậy để sử dụng cái này ntn mong ad có bài hướng dẫn chi tiết về Firebase Analytics + admod + eclipse

    1. Cảm ơn bạn đã quan tâm và để lại bình luận.

      Thứ nhất, về Eclipse: Đội ngũ Android tại Google đã chính thức dừng hỗ trợ việc phát triển Android thông qua Eclipse. Họ chỉ còn hỗ trợ Android Studio mà thôi. Do đó, chúng tôi khuyên bạn nên nâng cấp lên Android Studio càng sớm càng tốt. Android Studio hoàn toàn không nặng một chút nào cả. Tuy nhiên, nếu bạn vẫn muốn gắn bó với Eclipse thì vẫn có thể áp dụng các bài viết của chúng tôi, vì AS hay Eclipse đều là Java. Các thư viện Firebase đều nằm trên Maven Central nên bạn có thể thoải mái tích hợp vào Eclipse project của bạn như bình thường.

      Thứ hai, về Firebase Analytics, chúng tôi sẽ có bài hướng dẫn cơ bản trong thời gian tới.

      AdMob: Chúng tôi đã có hẵn 2 bài viết về AdMob cho cả Android và iOS. Bạn vui lòng tìm kiếm trong các bài trước.

  2. khi nào mới có bài về việc chuyển đổi từ SQLDatabase sang Firebase Database ạ? bài viết rất dễ hiểu. thanks!

    1. Theo kế hoạch ban đầu thì mình sẽ viết bài đó sau khi giới thiệu các sản phẩm của Firebase nhưng vì bạn đã hỏi nên mình sẽ đưa lên sau khi mình viết xong về RDB. Cảm ơn bạn nhé.

  3. làm thế nào để chỉnh lại ngôn ngữ trong console.firebase vậy bạn . firebase của mình toàn tiếng pháp

    1. Trong trình duyệt, bạn chọn ngôn ngữ ưu tiên hiển thị là tiếng Anh là được. Vd trong Chrome hoặc Chromium, bạn vào Cài đặt, gõ “ngôn ngữ” vào khung tìm kiếm là sẽ tự biết làm gì tiếp.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.