0
votes

Comment appeler API une seule fois à 30 minutes à Swift5?

J'appelle une API, mais que ces données ne changent pas fréquemment et que je stocke des données dans les données de base. Je veux que l'API n'appellerait qu'une seule fois en 30 min. Existe-t-il une meilleure approche d'appeler API uniquement s'il dépasse 30 min de l'appel de la dernière API. Je peux penser à la minuterie basée, mais aime savoir s'il y a une autre meilleure façon de faire la même chose?


3 commentaires

Comment appelez-vous l'API, souhaitez-vous limiter l'appel du service ou créer une méthode qui appelle une fois sur 30?


Voulez-vous juste limiter les appels de services


Vous pouvez donc stocker le service de dernière date appelé dans un stockage ou une mémoire persistante et une utilisation pour ignorer l'appel fréquent.


5 Réponses :


0
votes

Il n'y a pas moyen que la minuterie

1- Créez une minuterie avec une planification de 1 minute

2- Fonction de minuterie vérifie l'horodatage courant sur une distion stockée 1 par défaut

3- Si la valeur stockée est nul ou dépassée 30 Minutes écart entre l'appel en cours L'API

4- Lorsque vous appelez la mise à jour de l'API, la valeur stockée avec le courant 1

La raison de la création d'une valeur stockée non globale ne s'ouvre et la fermeture de l'application ne provoque pas d'appels d'API non nouveaux


xxx

1 commentaires

Pouvez-vous s'il vous plaît aidez-moi comment stocker la première fois en quelques minutes?



0
votes

Vous n'avez pas mentionné si cela devrait arriver en arrière-plan ou au premier plan? Parce que sur la base de cela seulement, nous devons aller pour la solution. Si vous vous demandez de mettre à jour les données en arrière-plan, vous devriez vérifier les pommes BGTASKBackground. Mais le problème avec ceci est, vous ne pouvez pas décider du moment de déclencher. Vous ne pouvez donner que minimement étendueInterval, qui n'est pas garanti, mais sera décidé par le système / est.

Incase Si vous cherchez à mettre à jour au premier plan, allez simplement avec l'approche de la minuterie dont vous parlez. Utilisez toutes les files d'attente de fond pour faire ce travail. Les files d'attente vous aideront à effectuer une tâche spécifique à une heure précise avec la méthode de retard.


0 commentaires

1
votes

Si vous appelez l'API au hasard, enfoncez une variable en mémoire pour le dernier appel réussi pourrait être suffisamment bonne. Si vous voulez que l'API soit appelée automatiquement, votre meilleure approche serait de configurer une minuterie.

Si vous souhaitez que votre application interdit de faire un nouvel appel dans 30 min, ce serait un exemple rapide: < / p>

(écrit ceci pour un terrain de jeu) xxx

Je n'ai pas testé le code ci-dessus, mais cela devrait fonctionner.


0 commentaires

0
votes

Ma suggestion est d'utiliser DispatchSourcetimer car il peut être redémarré à tout moment.

appel startticer () Dans ViewDidLoad ApplicationWillbecomeActive Pour obtenir les données les plus récentes lorsque l'application devient active xxx


0 commentaires

1
votes

Pour simplement limiter l'appel à une date limite d'une heure spécifique (ex 30 minutes), vous pouvez stocker dernier service appelé date et l'utiliser pour décider de faire un appel ou non . Vous pouvez stocker la date en mémoire ou le stockage persistant dépendez-vous de votre besoin.

userdeFault peut être une option de stocker la date de la persistance. Il existe un exemple de mise en œuvre ci-dessous; xxx


0 commentaires