移动应用程序需要后端服务器,以执行诸如验证用户身份和跨多个设备同步用户数据之类的任务。 但是,创建这样的服务器需要大多数独立应用程序开发人员所缺乏的技能。 幸运的是,今天可以使用几个后端即服务平台,通常称为BaaS。 谷歌的Firebase就是这样一种平台。
Firebase免费提供基本服务,例如分析,崩溃报告,用户身份验证和云消息传递。 它的免费增值服务包括实时NoSQL数据库,文件托管和静态网站托管。
在本教程中,我将向您展示如何使用Firebase将用户身份验证,分析和远程数据存储添加到您的Android应用程序。
先决条件
要继续进行,您需要:
- Android Studio 2.2 RC2或更高版本
1.使用Firebase Analytics
Firebase Analytics是当今最流行的移动应用程序分析解决方案之一。 通过使用它,您可以准确了解用户是谁以及他们如何使用您的应用程序。
第1步:设置Firebase Analytics
最新的Canary版本的Android Studio具有对Firebase Analytics的内置支持。 这意味着您无需离开Android Studio就可以将Firebase Analytics添加到您的项目中。
要开始将Firebase Analytics与您的项目集成,请点击工具> Firebase 。 将显示以下“ 助手”窗口:
单击分析 ,然后记录一个分析事件 。
现在,您必须将Android Studio项目与Firebase项目相关联。 因此,单击“ 连接到Firebase”按钮。
在弹出的对话框中,您将能够查看所有现有的Firebase项目。 您可以选择其中之一,也可以选择创建一个新项目。 现在,我建议您选择“ 创建新的Firebase项目”选项,并为项目指定一个唯一的名称。
按下对话框中的“ 连接到Firebase”按钮后,Android Studio将自动进行所有必需的配置更改,例如生成google-services.json文件并上传SHA1指纹。
现在,您可以按“ 将Analytics添加到您的应用程序”按钮,以将Firebase插件和Firebase Core依赖项添加到您的项目中。 Android Studio将向您显示将对build.gradle文件进行的确切更改。
按“ 接受更改”以完成配置。
步骤2:产生Analytics(分析)事件
在为您的应用程序配置Firebase Analytics之后,如果您对自动生成的分析事件感到满意(例如,用户首次打开您的应用程序并使用了不止一次),则无需编写任何其他代码。 10秒内完成应用内购买或卸载应用。 因此,您现在可以在模拟器或真实设备上运行应用程序,并且在接下来的24小时内,您将能够在Firebase控制台中查看分析日志。
如果您想更仔细地分析用户的行为,可以使用FirebaseAnalytics
类的logEvent()
方法手动生成自定义分析事件。 该方法需要两个参数:一个字符串,用于指定自定义事件的名称;一个Bundle
,以键值对的形式包含有关事件的详细信息。
例如,如果要在每次用户单击特定按钮时生成一个名为my_custom_event的事件,则必须将以下代码添加到按钮的单击处理程序中:
// Create an instance of FirebaseAnalytics
FirebaseAnalytics fa = FirebaseAnalytics.getInstance(this);
// Create a Bundle containing information about
// the analytics event
Bundle eventDetails = new Bundle();
eventDetails.putString("my_message", "Clicked that special button");
// Log the event
fa.logEvent("my_custom_event", eventDetails);
在大多数情况下,自定义事件与Firebase控制台中自动收集的事件是无法区分的。
请注意,事件名称区分大小写。 因此,最好将所有事件名称定义为常量字符串。 或者,您可以使用FirebaseAnalytics.Event
类中可用的预定义事件名称常量。
2.使用Firebase身份验证
用户身份验证是当今大多数Android应用程序的一项重要要求。 通过能够对用户进行安全身份验证,从而唯一地标识用户,您可以根据用户的兴趣和偏好为其提供定制的体验。 您还可以确保从多个设备使用您的应用程序时,他们在访问其私人数据时没有问题。
Firebase Auth允许您使用多种登录机制对用户进行身份验证。 在本教程中,我将向您展示如何允许用户使用其电子邮件地址和密码登录到您的应用程序。
步骤1:配置您的项目
为了能够在Android Studio项目中使用Firebase Auth,您必须将以下compile
依赖项添加到app
模块的build.gradle文件中。
compile 'com.google.firebase:firebase-auth:9.4.0'
步骤2:启用基于密码的身份验证
默认情况下,Firebase不允许用户身份验证。 因此,您必须在Firebase控制台中手动启用基于密码的用户身份验证。 为此,请导航至“身份验证”部分,然后按“ 设置登录方法”按钮。 现在,您将看到所有可用的登录提供程序的列表。
选择电子邮件/密码 ,启用它,然后按保存 。
步骤3:支持用户注册
使用基于密码的身份验证,新用户必须通过提供唯一的电子邮件地址和密码来注册自己。 要将此功能添加到您的应用程序,可以使用FirebaseAuth
类的createUserWithEmailAndPassword()
方法。 顾名思义,该方法以电子邮件地址和密码作为参数。
为了能够确定的结果createUserWithEmailAndPassword()
方法,您必须将添加OnCompleteListener
使用它addOnCompleteListener()
方法。 以下代码段显示了如何注册新用户,还告诉您注册过程是否成功完成:
FirebaseAuth.getInstance()
.createUserWithEmailAndPassword(emailAddress, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
// User registered successfully
}
}
});
请注意,您有责任验证电子邮件地址并确保用户使用强密码。
您可以在Firebase控制台的“身份验证”部分的“ 用户”标签中查看所有成功注册的用户的电子邮件地址。
步骤4:支持用户登录
成功注册后,该用户将自动登录。即使您的应用重新启动,该用户也将继续保持登录状态。 但是,您的应用程序必须包含允许用户使用注册过程中指定的电子邮件地址和密码手动登录的代码。
要手动登录用户,必须使用FirebaseAuth
类的signInWithEmailAndPassword()
方法。 该方法将电子邮件地址和密码作为唯一参数,并返回Task<AuthResult>
对象。 通过向其添加OnCompleteListener
,您可以检查登录是否成功完成。
为了避免登录已经登录的用户,仅当当前FirebaseUser
为null
才必须调用signInWithEmailAndPassword()
方法。
以下代码段显示了如何登录用户:
FirebaseAuth auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() != null) {
// Already signed in
// Do nothing
} else {
auth.signInWithEmailAndPassword(emailAddress, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// User signed in successfully
}
}
});
}
步骤5:支援使用者登出
要注销用户,您可以简单地调用FirebaseAuth
类的signOut()
方法。
FirebaseAuth.getInstance().signOut();
3.使用Firebase的实时数据库
Firebase平台最强大的功能之一就是它的实时数据库,它之所以被命名,是有充分理由的:在该数据库上执行的所有写操作都可立即供所有正在观察它的客户端使用。 使用这样的数据库,您可以创建应用程序,使用户可以从一台设备无缝切换到另一台设备,并立即与其他用户协作。
步骤1:配置您的项目
在使用实时数据库之前,必须将以下compile
依赖项添加到app
模块的build.gradle文件中:
compile 'com.google.firebase:firebase-database:9.4.0'
步骤2:写入资料
您可以将实时数据库视为JSON对象。 这意味着您可以向其中添加键-值对,其中键始终是字符串,并且值可以是基元,数组或其他JSON对象。
在写入实时数据库之前,必须使用FirebaseDatabase
类的getInstance()
方法获取对它的引用。 然后,您可以使用getReference()
方法获取对数据库内部任何路径的引用。 该路径可以包含单个键或按层次结构排列的多个键。
一旦拥有路径的DatabaseReference
,就可以使用setValue()
方法设置其值。
以下代码段显示了如何向数据库添加简单的键值对:
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("message"); // Key
ref.setValue("This is a test message"); // Value
通过转到Firebase控制台的“ 数据库”部分,您可以查看实时数据库内部的所有数据。
步骤3:读取资料
为了从实时数据库中读取值,必须将异步观察器附加到关联的键或路径。 更确切地说,您必须将ValueEventListener
到DatabaseReference
使用对象addValueEventListener()
方法。
该onDataChange()
的方法ValueEventListener
给你访问DataSnapshot
对象,其getValue()
方法可以用于检索键的最新值。
例如,以下是如何检索我们在上一步中设置的值的方法:
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("message"); // Key
// Attach listener
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Retrieve latest value
String message = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Error handling
}
});
请注意,一旦ValueEventListener
增加,其onDataChange()
方法被触发每次都被观察的值发生变化。
结论
Firebase平台消除了对后端服务器的需求,使您可以专注于构建更好的应用程序。 在本教程中,您学习了如何使用它向Android应用添加分析,用户身份验证和实时云数据存储。
翻译自: https://code.tutsplus.com/tutorials/get-started-with-firebase-for-android--cms-27248