【Android 进阶:翻译】Get Started With Firebase for Android

这篇翻译断断续续花了好几天,主要是太长了。翻译得对得起读者也得对得起自己,我可不能直接粘贴复制用软件直接翻译吧。
建议英文阅读能力不错的直接看原文英文版的,不用看我翻译的“三不像”了。
【翻译的目的】:通过翻译锻炼英文阅读能力+语言表达能力+方便不喜欢读原文的人

原文链接

移动应用程序为了实现一些业务是需要一个后端服务器的,比如用户身份验证和同步用户数据跨多个设备。然而,创建这样一个服务器需要有这样的技能,并且大多数独立应用程序开发者欠缺这样的技能。幸运的是,现今有几个后端服务平台,通常被称为BaaS可以供我们使用。谷歌的Firebase就是这样的一个平台。

Firebase 提供了必要的服务例如数据分析,崩溃以及异常报告,用户身份验证和云短信,这都是免费的服务。它的免费增值服务还包括一个实时NoSQL数据库,文件托管和静态网站。

在本教程中,我将向您展示如何使用Firebase为你的Android应用程序添加用户身份验证、分析和远程数据存储。

Prerequisites

接下来的步骤,你将需要:

  • Android Studio 2.2 RC2 or higher

1.Using Firebase Analytics(使用Firebase 分析)

Firebase 提供的分析方案是一种最受欢迎的手机应用程序分析解决方案。通过使用它,您可以得到一个准确的了解:你的用户是谁,他们是如何使用你的应用的。

Step 1: Set Up Firebase Analytics

最新的Android studio内置了支持Firebase 分析。这意味着您可以添加Firebase 分析,而不用脱离Android studio.

开始集成 Firebase analytics 于你的项目中,点击Tools>Firebase.你将会看到如下提示窗:
这里写图片描述

点击Analytics 然后记录一个Analytics 时间

你现在必须把Android Studio项目和Firebase项目结合起来。所以,点击
Connect to Firebase 按钮。

在弹出的对话框中,你可以看到现有的所有的Firebase projects.你可以选择其中一个或者选择新建一个项目。现在,我建议你选择 Create new Firebase project 选项,并且为这个项目取一个独一无二的名字。
这里写图片描述

一旦你在里面的对话框中按下这个 Add Analytics to your app 按钮,Android Studio 将自动的更改所有必要的配置,比如生成一个google-services.java 文件并且上传一个SHA1签名(指纹)。

现在你可以点击 Add Analytics to your app 按钮,把
Firebase插件和Firebase核心依赖组件整合到你的项目中去。Android Studio 将会告诉你确切的改变,以及写入build.gradle文件中去。
这里写图片描述

点击Accept Changes 完成配置。

Step 2: Generate Analytics Events(生成分析事件)

在你app上配置了Firebase Analytics后,如果你对自动生成分析事件满意,你不需要写任何额外的代码,譬如用户第一次打开你的app、使用它超过十秒、正在app内消费或者卸载你的app。因此,你可以在未来24小时内运行你的app程序在模拟器上或者真机上,你将能够看到分析日志在Firebase的控制台上。
这里写图片描述

如果你想更加深入的分析你的用户行为,你可以生成自定义分析事件,手动的使用FirebaseAnalytics类中的logEvent()方法。这个方法有两个参数:String 型的自定义事件的确切的名字,一个包含事件详情的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 console中的那些自动被收集的事件中是无法区分的。
这里写图片描述

需要注意的是,事件名称是区分大小写的。因此,这是一个好主意,你所有的事件名称定义为常量字符串。或者,您可以使用预定义的事件名称常量,在FirebaseAnalytics.Event类中也是可用的。

2. Using Firebase Auth(使用认证)

如今,对于大多数app来说,用户认证是一个很重要的需求。通过用户保密的认证(唯一的标示),你可以根据她们的兴趣和喜好提供定制化的体验。你也可以确保他们可以在不同设备上获取到他们的隐私数据。
Firebase Auth 允许通过不同的登录认证机制去认证你的用户。在本教程,我将演示如何让你的用户可以用他们的邮箱地址以及登录密码在你的app上注册。

Step 1: Configure Your Project(配置你的项目)

为了让你Android Studio项目能使用Firebase Auth,你必须在你module’s build.gradle文件下添加如下依赖:

1   compile 'com.google.firebase:firebase-auth:9.4.0'

Step 2: Enable Password-Based Authentication

默认下,Firebase不允许用户认证。因此,你必须手动启动 password-based user authentication 在Firebase 控制台。to do so,切换到Auth 选项,点击Set up sign-in method 按钮。你将可以看到一系列可以使用的Sign-in providers
这里写图片描述

选择Email/Password,启动它,点击保存。

Step 3: Support User Registration(支持用户注册)

使用基于密码的身份认证,现在用户必须通过提供一个独一无二的邮箱地址和密码来注册。为了添加这个功能到你的app,你可以使用FirebaseAuth类中的createUserWithEmailAndPassword( )方法。正如方法名所写的,方法需要两个参数:邮箱地址、密码。

为了能够得到createUserEmailAndPassword( )方法的结果,在使用addOnCompleteLister()方法时你必须添加一个监听器OnCompleteListener。下面的代码片段将向你展示如何注册新用户以及回调这个注册进程是否成功。

FirebaseAuth.getInstance()
    .createUserWithEmailAndPassword(emailAddress, password)
    .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if(task.isSuccessful()) {
                // User registered successfully
            }
        }
    });

该注意的是,你的职责还有验证Email的正确性以及确保用户使用了比较牢固不易破解的密码。
你可以在Firebase控制台的Auth选项中的User选项卡中查看那些成功注册了的用户的账户信息:邮箱地址。
这里写图片描述

Step 4: Support User Sign-In(支持用户登录)

成功注册后,用户将自动登录。即使你的app重新启动,用户也将还继续保持着登录的状态。不过,你的app也必须部署可以手动登录的功能。

用户手动的登录,你必须使用FirebaseAuth类的signInWithEmailAndPassword( )方法,这个方法有两个参数:邮箱地址、密码。这个方法还返回一个Task<AuthResult>类型的对象。通过添加一个onCompleteListener,你可以检查到是否成功登录你的app。

为了避免已经登录的用户再次“登录”,只用当 当前的FirebaseUser对象为的时候,你才必须调用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
                }
            }
        });
}

Step 5: Support User Sign-Out(支持用户退出)

用户退出,可以简单的调用FirebaseAuth类中的signOut()方法

FirebaseAuth.getInstance().signOut();

3. Using Firebase’s Real-Time Database(使用Firebase的实时数据库)

Firebase平台其中一个最强大的特点就是它的实时数据库,之所以这样说是有一个好原因:所以的写操作在所有的客户端上都可以同步看的到。在这样的数据库下,你可以创建一个允许用户无缝地在设备间转移的应用,并且立即可以协作。(这个感觉和 有道云协作 差不多)

Step 1: Configure Your Project(配置工程)

使用real-time database 实时数据库之前,你需要在你module’sbuild.gradle文件里面添加compile依赖:

compile 'com.google.firebase:firebase-database:9.4.0'

Step 2: Write Data(写入数据)

你可以认为实时数据库存储的是JSON对象,这就表明你可以添加key-value键值对进数据库。keyString类型,但是value可以是:primitives, arrays, 或其他 JSON objects

数据写入实时数据库前,你必须通过FirebaseDatabase类中的getInstance()方法获得数据库的一个引用(对象)。然后通过使用getReference()方法你可以得到一个在数据库(任何路径)中的引用(key),路径中可以包含一个键或按层次结构排列的几个键。

当你得到一个路径的一个DatabaseReference(key的引用),你可以使用setValue()方法设置value的值。

下面的 代码片段表示如何添加一个简单的key-value键值对到数据库中:

FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("message"); // Key
ref.setValue("This is a test message"); // Value

去到Firebase consoleDatabase选项卡,你可以查看实时数据库中的所有数据。
这里写图片描述

Step 3: Read Data(读取数据)

为了从实时数据库中读取数据,你必须附加一个异步观察者到关联的key或路径。更准确地说,你必须使用addValueEventListener()方法DatabaseReference对象关联一个ValueEventListener

ValueEventListeneronDataChange()方法允许您访问DataSnapshot对象,其可以使用getValue()方法来检索key对应的最新Value。

如下代码演示如何获取最新的value:

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被使用,任何时候当value被监听到有改变,它的onDataChange( )方法都会被触发。

Conclusion

谷歌Firebase platform让开发者专注于开发一个更好的app而不是纠结于后台服务。在本教程,你学习了如何使用这个平台来添加anaytics、用户认证、实时云存储数据仓库到你的app中。

要想学习更多有关Firebase的使用,你可以参考官方教程在使用Firebase Crash Reporting时候,你也可以查阅另一篇文章Android From Scratch: Firebase Crash Reporting

### 大模型对齐微调DPO方法详解 #### DPO简介 直接偏好优化(Direct Preference Optimization, DPO)是一种用于改进大型语言模型行为的技术,该技术通过结合奖励模型训练和强化学习来提升训练效率与稳定性[^1]。 #### 实现机制 DPO的核心在于它能够依据人类反馈调整模型输出的概率分布。具体来说,当给定一对候选响应时,DPO试图使更受偏好的那个选项具有更高的生成概率。这种方法不仅简化了传统强化学习所需的复杂环境设置,而且显著增强了模型对于多样化指令的理解能力和执行精度[^2]。 #### PAI平台上的实践指南 为了便于开发者实施这一先进理念,在PAI-QuickStart框架下提供了详尽的操作手册。这份文档覆盖了从环境配置直至完成整个微调流程所需的一切细节,包括但不限于数据准备、参数设定以及性能评估等方面的内容。尤其值得注意的是,针对阿里云最新发布的开源LLM——Qwen2系列,文中给出了具体的实例说明,使得即使是初次接触此类工作的用户也能顺利上手。 ```python from transformers import AutoModelForCausalLM, Trainer, TrainingArguments model_name_or_path = "qwen-model-name" tokenizer_name = model_name_or_path training_args = TrainingArguments( output_dir="./results", per_device_train_batch_size=8, num_train_epochs=3, ) trainer = Trainer( model_init=lambda: AutoModelForCausalLM.from_pretrained(model_name_or_path), args=training_args, train_dataset=train_dataset, ) # 假设已经定义好了train_dataset trainer.train() ``` 这段代码片段展示了如何使用Hugging Face库加载预训练模型并对其进行微调的过程。虽然这里展示的例子并不完全对应于DPO的具体实现方式,但它提供了一个基础模板供进一步定制化开发之用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值