J'ai donc le code suivant qui récupère les documents de firestore, cette fonction est appelée dans mon viewDidLoad() :
func loadAnnotations() {
db.collection("jumpSpotAnnotations").getDocuments { (querySnapshot, error) in
if let error = error {
print("There was an issue retrieving data from Firestore: \(error)")
let alertController = UIAlertController(title: "Oops!", message: "We are having trouble loading the cliff jumping locations. Be sure to check your internet connection.", preferredStyle: .alert)
let okayAction = UIAlertAction(title: "Okay", style: .cancel, handler: nil)
alertController.addAction(okayAction)
self.present(alertController, animated: true, completion: nil)
} else {
if let snapshotDocuments = querySnapshot?.documents {
//print(snapshotDocuments)
for doc in snapshotDocuments {
Le reste de la fonction n'est pas important. J'obtiens une erreur lors de la récupération des données : Error Domain=FIRFirestoreErrorDomain Code=7 "Permissions manquantes ou insuffisantes." Lorsque j'ai obtenu cela, j'ai réalisé que cela était dû au fait que je n'avais pas mis à jour mes règles de sécurité depuis le premier jour où le projet Firebase pour l'application a été créé, et 30 jours se sont écoulés, de sorte que Google ne pourrait plus accéder jusqu'à ce que je mette à jour les règles. Ce sont les règles ORIGINALES :
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
Pour les besoins de cette application, je suis d'accord pour que l'utilisateur crée et lise n'importe quelle donnée. En revanche, je ne veux pas qu'il puisse modifier ou supprimer des données. J'ai donc posé une question ici sur Stack sur la façon de le faire, et j'ai reçu une réponse ici : Comment empêcher la suppression/modification des documents Firestore, mais autoriser toutes les lectures et écritures ? Donc mes règles de sécurité mises à jour sont maintenant :
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /collection1/{jumpSpotAnnotations} {
allow read, create;
}
}
}
Cependant, je reçois toujours la même erreur lorsque j'essaie de récupérer les données. Les nouvelles règles de sécurité ONT été publiées. Ma question est donc la suivante : dois-je faire quelque chose après avoir appuyé sur le bouton "Publier" pour le mettre à jour officiellement et faire en sorte que mon simulateur puisse récupérer les données, OU est-ce que le problème est que mon code dans mes règles de sécurité ou ma fonction dans Xcode est incorrect pour ce que je veux faire. Gardez à l'esprit que la fonction dans Xcode a fonctionné parfaitement avec les règles originales (j'ai fait les règles complètement ouvertes comme ça quand j'ai créé le projet Firestore pour que je puisse tester dans le simulateur facilement). Toute aide est la bienvenue !