2017-04-10 61 views
1

Firebase 我們的iOS應用中的數據觀察員自從幾天後停止響應。在模擬器上正常工作,但掛在真實的設備上。Firebase iOS數據觀察員未在iPhone上定期回覆

自從我們的應用程序中沒有發生任何變化,我們無法確定Firebase的行爲方式。

我們的使用情況很好,在當前的計劃配額內。我們在上個月的整個上週看到了這個問題。神祕地說,從4月1日起,所有人開始正常工作,直到昨天才正常工作一週

任何人都可以指導我們解決?我們嘗試了一些關於同一問題的社區解決方法,例如禁用位碼,但他們沒有工作。

+0

檢查您是否正在使用持久性緩存。 Firebase.defaultConfig()。persistenceEnabled = true。如果啓用,它將從緩存中獲取數據。數據不會刷新 –

+0

是的,我們啓用了持久性。問題是在模擬器上一切工作正常,或者如果我們直接將設備連接到XCode,而不是通過Testflight或類似的定期部署生成。 – Ravi

+0

是的,主要是這個問題。嘗試設置並測試。如果你真的想一次使用持久性緩存,請使用keepSyncing屬性 –

回答

1

這是否發生在您更新後的應用程序? - 我也有這樣的問題...在我的情況下,完成塊沒有被調用。 我正在寫答案,因爲我沒有聲望發佈評論。

+0

不能肯定地說。它偶爾發生;剛剛停止工作一週。 – Ravi

+0

「問題是,在模擬器上一切工作正常,或者如果我們將設備直接連接到XCode,而不是通過Testflight或類似的定期部署構建。「當我通過TestFlight交付時,我遇到了同樣的問題 – Andrew

+0

@Ravi你可以在這裏展示一個自動登錄系統的代碼片段嗎?我認爲在那裏有一個令牌失效問題 – Andrew

0

最後我們解決了問題。它與auth令牌問題有關。

在火力地堡啓用日誌記錄看到了有關實際問題的詳細信息,通過

FIRDatabase.setLoggingEnabled(true) 

在我們看到的消息日誌:

錯誤獲取令牌:錯誤域= FIRAuthErrorDomain代碼= 17011「有沒有對應此標識符的用戶記錄,用戶可能已被刪除。「 UserInfo = {NSLocalizedDescription =沒有與此標識符對應的用戶記錄。用戶可能已被刪除,error_name = ERROR_USER_NOT_FOUND}

在用戶登錄(本質上auth爲空)之前,我們從Realtime Database獲取了一些有用的信息(「/ metadata/*」)。我們的數據庫規則允許的:「!AUTH = NULL」

{ 
    "rules": { 

    "metadata": { 
     ".read": true, 
     ".write": false 
    } 

    ".read": "auth != null", 
    ".write": "auth != null" 
} 

雖然我們的數據庫規則允許訪問,火力地堡一心的authToken,可能是由於默認規則保護所有的人。

我們現在通過獲取signIn之後的元數據來解決問題,並且一切都很好。

希望有人認爲這有用。