Здравствуйте, сообщество Xamarin,
Это был полный день, когда я столкнулся с очень распространенной проблемой:
6.5.0 - [Firebase / Firestore] [I-FST000001] Не удалось связаться с бэкэндом Cloud Firestore. Сервер не ответил в течение 10 секунд.
Эта ошибка возникает в моем проекте Xamarin. iOS, где я добавил пакет NuGet Xamarin.Firebase. iOS .CloudFirestore (v1.4.2.1).
Вот мой код:
AppDelegate.cs
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());
Firebase.Core.App.Configure();
Database = Firestore.SharedInstance;
return base.FinishedLaunching(app, options);
}
CloudFirestore iOS .cs
public async Task < T > GetRandomItemAsync() {
if (IsConnected) {
try {
var db = AppDelegate.Database;
var myCollection = db.GetCollection("[COLLECTION_NAME]");
var snapshots = await myCollection.GetDocumentsAsync();
foreach(var snapshot in snapshots.Documents) {
var documentContent = snapshot.Data;
var fieldValue = documentContent["DOCUMENT_FIELD_NAME"] ? .ToString();
}
} catch (Exception ex) {
}
}
return null
}
" Не удалось связаться с бэкэндом Cloud Firestore " при GetDocumentsAsyn c () при вызове метода.
Эта ошибка говорит о том, что:
Обычно это указывает на то, что ваше устройство в настоящее время не имеет исправного соединения Inte rnet.
Но я сделал HTTP-запрос вместо использования iOS CloudFirestore NuGet, и он отлично работает:
try {
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync("https://firestore.googleapis.com/v1/projects/[MY_PROJECT_ID]/databases/(default)/documents/[COLLECTION_NAME]/[DOCUMENT_ID]").Result;
string content = await response.Content.ReadAsStringAsync();
var z = response.StatusCode;
} catch (Exception ex) {
}
Следовательно, это может быть проблема конфигурации CloudFirestore , и я не знаю, как чтобы проверить, правильно ли инициализирован объект Firestore.ShareInstance.
Не могли бы вы сначала сказать мне, как это сделать? * 10 46 *
Вещи, которые я уже пробовал
- Проверьте файл GoogleService-Info.plist (например, API_KEY, DATABASE_URL, PROJECT_ID)
- Развернуть решение на физическое устройство
- Стереть все содержимое и настройки симулятора
- Сделать HTTP-запрос вместо использования iOS CloudFirestore NuGet
- Понизить iOS CloudFirestore NuGet, но решение не было более готовым
- Посмотрите этот очень хороший пример из Github , но решение не удалось собрать даже после восстановления пакетов
Вещи, которые я должен попробовать
- Я должен повторить этот очень хороший пример от Github , чтобы лучше понять, где я не прав
- Я должен попытаться воспроизвести запрос Cloud Firestore из Xamarin. Android проект
Спасибо за помощь!