[英]Is there any way to trace or listen that user clicks on any link from a browser, or any chat messenger app or even SMS?
[英]Download user from Firebase, Messenger app
我正在嘗試使用Firebase編寫Messenger應用。
在數據庫中,我有一些條目,它們是User.class對象。 我正在嘗試編寫可以從數據庫下載User對象的函數。 我雖然最好為此任務建立單獨的類(UserManager),因為我不喜歡使代碼混亂。 但是有一個問題,因為在onCreate方法中,我需要使用User對象從數據庫下載一些其他信息以創建對話列表,因此應該在此之前從服務器下載用戶。 另外,如果用戶不在數據庫中,它應該使用FirebaseAuth創建用戶並將其推送到數據庫(我已經完成了工作)。
我應該建立擴展AsynchTask的類,然后放置下載用戶,然后用用戶之后下載的數據更新UI嗎? 我如何知道用戶是否已經下載。 也許我應該建立一些監聽器,但是我不知道該怎么做。
附加問題:
如果我將此引用與值偵聽器一起使用,是否從對象內部獲取用戶對象或某個值?
DatabaseReference userReference = FirebaseDatabase.getInstance().getReference().child("users/" + mUserID);
這是我的數據庫:
每個條目密鑰都是FirebaseAuth中的userID,以便於實現。
我已經為此努力了幾天,並嘗試了不同的方法。 我會盡力的。 我認為,某些代碼或方案會很有幫助。
也許我的代碼的這一部分將幫助您找出:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users")
.child(mUserID);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "DatabaseError: " + databaseError.getMessage());
}
});
我如何知道用戶是否已經下載?
您可以為每個用戶添加一個值為false
的標志,並在下載用戶對象后將其值設置為true
但這不是Firebase的工作方式。 如果Firebase is a realtime database
並且您可能永遠都無法完成獲取數據,則無法確定何時從數據庫中下載用戶。 這就是為什么將其命名為實時數據庫的原因,因為在任何菜單項中都可以更改該User
對象下的數據,可以添加或刪除屬性。
您只能在寫入或更新數據時使用CompletionListener
,並且在數據庫服務器確認該操作后,您會收到通知,但在讀取數據時不能使用此接口。
如果我將此引用與值偵聽器一起使用,是否從對象內部獲取用戶對象或某個值?
如果您正在偵聽的值是一個User
對象,那么您將獲得一個User
對象。 如果該值是另一種對象,也可以是String
(也是對象),那么您將獲得該類型的對象,也可以是String
對象。 請記住,只有Firebase數據庫中的鍵始終是字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.