我是Android和Firebase的新手,我正嘗試在其中創建一個包含登錄界面的應用程序。一旦用戶登錄,應用程序會根據用戶的用戶類型將他/她引導至特定的屏幕。我將有3種用戶類型:Admin
,Driver
和Bus dispatcher
。Firebase身份驗證取決於自定義用戶類型
你有什麼想法如何得到這個工作? 我正在創建一個頂點項目,我真的需要一些幫助。
直到現在我還沒有編寫任何代碼。
期待您的想法和建議,謝謝。
我是Android和Firebase的新手,我正嘗試在其中創建一個包含登錄界面的應用程序。一旦用戶登錄,應用程序會根據用戶的用戶類型將他/她引導至特定的屏幕。我將有3種用戶類型:Admin
,Driver
和Bus dispatcher
。Firebase身份驗證取決於自定義用戶類型
你有什麼想法如何得到這個工作? 我正在創建一個頂點項目,我真的需要一些幫助。
直到現在我還沒有編寫任何代碼。
期待您的想法和建議,謝謝。
讓您的用戶在註冊時選擇他們想要的用戶類型。將該值寫入Firebase數據庫中該用戶的對象。例如:
$UniqueUID:
name: "John Doe"
userType: "Driver"
當用戶登錄時,在你的MainActivity,檢查其中的用戶類型已經登錄,例如:
if(userType.equals("Driver")){
//Load the Driver screen
}
現在很明顯,上面的例子是相當粗糙。您需要爲具有特定用戶數據的子級設置偵聽器,並從中檢索DataSnapshot。然後你可以比較它並執行必要的代碼。
假設你有一個類似的火力結構:
根
這意味着你將有一個合適的用戶.java模型反映了來自firebase的這些屬性。
然後,您需要在Firebase中創建用戶,這非常簡單。
一旦你的用戶是在火力,你可以使用像這樣推出相應的活動(大部分是直接從火力文檔)(https://firebase.google.com/docs/auth/android/google-signin)
public static final int ADMIN = 101;
public static final int DRIVER = 102;
public static final int BUS_DISPATCHER= 103;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (user != null) { // User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + firebaseUser.getUid());
FirebaseDatabase.getInstance().getReference().child("users").child(firebaseUser.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
User user = dataSnapshot.getValue(User.class);
int type = user.getType();
switch (type) {
case DRIVER:
launchDriverScreen();
break;
case ADMIN:
launchAdminScreen();
break;
case BUS_DISPATCHER():
launchBusDispatcherScreen();
break;
default:
Log.e(TAG, "unknown user type: " + type);
break;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
} else { // User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
}
};
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
我想知道我的用戶.class看起來像?即時通訊仍然卡住需要幫助 –
Bro它的這一個 –