当用户使用 Firebase 电子邮件身份验证注册时,是否可以在数据库中获取并保存用户设备详细信息?



我正在创建一个Firebase注册活动,其中包含电子邮件和密码以外的自定义字段,我将其存储在其受人尊敬的用户ID中。但是我想知道是否有任何方法还可以收集用户设备详细信息,例如用户用于注册的设备的设备型号、制造商、操作系统等,并将这些详细信息(仅在注册时第一次(保存在数据库中使用他们尊敬的用户 ID ?这样我以后就可以在用户使用什么设备注册时获取用户的信息。

像下面这样?

public class SignUpActivity extends AppCompatActivity implements View.OnClickListener {
private EditText editTextName, editTextEmail, editTextPassword, editTextAddress, editTextDeviceModel, editTextOS;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
editTextName = findViewById(R.id.edit_text_name);
editTextEmail = findViewById(R.id.edit_text_email);
editTextPassword = findViewById(R.id.edit_text_password);
editTextAddress = findViewById(R.id.edit_text_address);
//Here are the hidden fields that might hold the device info
editTextDeviceModel = findViewById(R.id.device_model);
editTextOS = findViewById(R.id.device_os);
editTextDeviceModel.setVisibility(View.GONE);
editTextOS.setVisibility(View.GONE);
mAuth = FirebaseAuth.getInstance();
}
private void registerUser() {
final String name = editTextName.getText().toString().trim();
final String email = editTextEmail.getText().toString().trim();
final String password = editTextPassword.getText().toString().trim();
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener < AuthResult > () {
@Override
public void onComplete(@NonNull Task < AuthResult > task) {
if (task.isSuccessful()) {
User user = new User(
name,
email,
address,
deviceModel,
os
);
FirebaseDatabase.getInstance().getReference("Users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener < Void > () {
@Override
public void onComplete(@NonNull Task < Void > task) {
progressBar.setVisibility(View.GONE);
if (task.isSuccessful()) {
Toast.makeText(SignUpActivity.this, "Registration Successful", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(SignUpActivity.this, "Not successful", Toast.LENGTH_LONG).show();
}
}
});
} else {
Toast.makeText(SignUpActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}
}

这是User

public class User {
public String name, email, address, deviceModel, os;
public User() {
}
public User(String name, String email, String address, String deviceModel, String os) {
this.name = name;
this.email = email;
this.address = address;
//this.deviceModel = ???????;
//this.os = ????;
}
}

要解决此问题,您需要更改以下代码行:

//this.deviceModel = ???????;
//this.os = ????;

this.deviceModel = deviceModel;
this.os = os;

若要获取设备型号和操作系统,请使用以下代码行:

String deviceModel = Build.MANUFACTURER + " " + Build.MODEL;
String os = "Android";

由于您的应用在 Android 设备上运行,因此os始终是 Android。当您创建类的对象时User请遵循以下代码行:

User user = new User(name, email, address, deviceModel, os);

最后,在您的数据库中,用户对象还将包含设备型号和操作系统。

最新更新