2017-05-25 1 views
-2

Je veux exécuter une fonction/définir un booléen après que l'utilisateur a ouvert l'application pour la énième fois (n étant n'importe quel nombre que je veux).Comment exécuter une fonction après la énième fois que j'ouvre l'application ou après n jours?

De même, je veux lancer une fonction/définir un booléen après n jours depuis le premier lancement. Je pensais à créer un cadre pour cela, mais je ne sais pas par où commencer. Existe-t-il des frameworks/Cocoapods existants? Si non, quelqu'un peut-il me donner quelques conseils/suggestions sur la façon dont je pourrais accomplir cela?

+0

Chaque fois que votre script est exécuté, ajoutez une valeur à un fichier. Ensuite, si la valeur devient suffisamment grande, exécutez la fonction et réinitialisez la valeur. J'espère que cela t'aides! –

Répondre

1

Je vous recommande d'utiliser UserDefaults pour savoir combien de fois l'utilisateur a lancé votre application. Il existe un cadre iRate qui vous permet de choisir après combien de temps de lancement de l'application et/ou de jours pour inviter l'utilisateur à évaluer votre application. Pour assurer le suivi du nombre de jours écoulés depuis l'installation & nombre de fois a été lancé, vous pouvez faire quelque chose comme ça

// fonction à appeler de méthode appDelegate didFinishLaunching

func trackUsage() { 
let defaults = UserDefaults.standard 
let installationDate = defaults.object(forKey: "installationDate") as? Date 
if installationDate == nil { // this is the first launch of the app 
    defaults.set(Date(), forKey: "installationDate") 
} 
let usageCount = defaults.integer(forKey: "usageCount") ?? 0 
defaults.set(usageCount + 1, forKey: "usageCount") 
defaults.synchronize() 
} 

avant d'appeler votre fonction peut faire:

if defaults.integer(forKey: "usageCount") ?? 0 > 10 { 
    // the app has been launched at least 10 times 
} 
+0

Merci pour cette suggestion! Ma première pensée était quelque chose comme ça. Content de savoir que je suis sur la bonne voie haha. – LaurentShala

0

Le moyen le plus est serait d'utiliser UserDefaults. Réglez-le dans le viewDidLoad de vous principal ViewController.

func setNumberOfStarts(){ 
let defaults = UserDefaults.standard 
//will return 0 if not set previously 
var numberOfStarts: Int = defaults.integer(forKey: "starts") 
numberOfStarts = numberOfStarts + 1 

defaults.set(numberOfStarts, forKey: "starts") 
} 

Vous pouvez l'interroger où vous le souhaitez.

func getNumberOfStarts() -> Int{ 
let defaults = UserDefaults.standard 
//will return 0 if not set previously 
let numberOfStarts: Int = defaults.integer(forKey: "starts") 
return numberOfStarts 
} 

Faites les résultats que vous avez besoin.

let MAXIMUM_STARTS: Int = 10 
func startedEnough() -> Bool{ 
    var enough = false 
    let defaults = UserDefaults.standard 
    let numberOfStarts: Int = defaults.integer(forKey: "starts") 
    if numberOfStarts > MAXIMUM_STARTS { 
     enough = true 
    } 
    return enough 
} 
+0

Désolé LastMove J'étais encore en train de taper et j'ai vu que vous aviez déjà posté. – Barns

+0

Merci pour la suggestion! Je vais essayer! – LaurentShala