J'essaie de faire ma première application, ça va vraiment bien. Je connais pas mal de langages de programmation, mais j'ai rencontré un problème.
J'essaye de limiter l'user à faire, au plus, une action toutes les heures. J'ai essayé de faire une timer. J'ai également essayé un code côté server pour m'aider, mais je n'arrive pas à le faire fonctionner. Je me demandais si quelqu'un avait des réponses qui pourraient m'aider?
Vous ne pouvez pas le faire via iPhone localement.
Pour y parvenir, vous devrez écrire des affaires côté server. Avant d'effectuer une opération, vérifiez à partir du server si une heure a été dépassée ou non. Chaque fois qu'il y aura une request au server, le server mettra à jour la dernière heure d'opération (si l'heure a été passée) pour cet user particulier. Cette heure sera définie par le server et ne dépendra pas de l'heure locale du client.
Probablement la meilleure approche serait la suivante: 1. Gardez la dernière action de l'user est un file ou une database (ou dans NSUserDefaults) 2. En laissant l'user effectuer une action vérifier l'horodateur stocké pour voir si 1 heure est passée depuis dernière invocation.
En outre, il peut être nécessaire de vérifier cela par rapport à un server (pour éviter de supprimer et de réinstaller l'application, réinitialisez l'horodatage enregistré).
Utilisez NSTimer pour désactiver l'action une heure.
scheduledTimerWithTimeInterval
vous aidera à atteindre cet objective.
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:yourTimeinterval target:self selector:@selector(sortinggger) userInfo:nil repeats:YES];
Essayez quelque chose comme ceci:
@interface YourClass @property (assign, nonatomic) double lastActionTime; @end @implementation YourClass - (BOOL)isActionAllowed { double currentTime = [[NSDate date] timeIntervalSince1970]; if (currentTime - 3600 > lastActionTime) { lastActionTime = currentTime; return YES; } return NO; } @end
Vous pouvez save lastActionTime
dans NSUserDefaults
pour que même l'application soit fermée.
Cette solution suppose que l'user ne change pas de date ou ne réinstalle pas l'application.