Apl yang dibangunkan di Firebase memerlukan mengubah hala tiga jenis pengguna ke aktiviti masing-masing selepas log masuk. Apl itu telah berjaya mengubah hala dua jenis pengguna, iaitu pelajar dan guru, dengan kod berikut:
mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(FirebaseAuth firebaseAuth) { FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); if (mAuth.getCurrentUser() != null) { String uid = mAuth.getInstance().getCurrentUser().getUid(); DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); uidRef = rootRef.child("STUDENTS").child(uid); ValueEventListener valueEventListener = new ValueEventListener() { @Override public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) { if (dataSnapshot.exists()) { startActivity(new Intent(MainActivity.this, student.class)); } else { startActivity(new Intent(MainActivity.this, teacher.class)); } } @Override public void onCancelled(DatabaseError databaseError) { } }; uidRef.addListenerForSingleValueEvent(valueEventListener); } else { Log.d("TAG", "firebaseUser is null"); } } };
Namun, kekeliruan timbul apabila tiba masanya untuk menambah jenis pengguna ketiga, pentadbir (pentadbir), dan ubah hala mereka ke aktiviti khusus mereka.
Penyelesaian kepada isu ini melibatkan pengubahsuaian struktur pangkalan data untuk memasukkan jenis pengguna ketiga dan menambah pendengar untuk menyemak "Jenis" atribut nod pengguna.
Skema pangkalan data baharu kelihatan seperti ini:
Firebase-root | --- users | --- uidOne | | | --- name: "Ed" | | | --- type: 1 | --- uidTwo | | | --- name: "Tyff" | | | --- type: 2 | --- uidOne | | | --- name: "Admin" | | | --- type: 3
ValueEventListener telah diubah suai kepada semak atribut "Jenis" dan ubah hala pengguna berdasarkannya value:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid(); DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); DatabaseReference uidRef = rootRef.child("users").child(uid); ValueEventListener valueEventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if (dataSnapshot.child("Type").getValue(Long.class) == 1) { startActivity(new Intent(MainActivity.this, student.class)); } else if (dataSnapshot.child("TYPE").getValue(Long.class) == 2) { startActivity(new Intent(MainActivity.this, teacher.class)); } else if (dataSnapshot.child("TYPE").getValue(Long.class) == 3) { startActivity(new Intent(MainActivity.this, admin.class)); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { Log.d(TAG, databaseError.getMessage()); } }; uidRef.addListenerForSingleValueEvent(valueEventListener);
Dengan perubahan ini, apl berjaya mengubah hala ketiga-tiga jenis pengguna ke aktiviti masing-masing selepas log masuk.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Hala Berbilang Jenis Pengguna (Pelajar, Guru dan Pentadbir) kepada Aktiviti Tertentu Selepas Log Masuk Firebase?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!