2017-05-25 5 views
-2

ユーザーがn回目にアプリケーションを開いた後に関数を実行したい/ブール値を設定したい(nは任意の数値)。n回目の起動後、またはn日後に関数を実行するにはどうすればよいですか?

同様に、最初の起動からn日後に関数/ブール値を設定したいと思います。

私はこれのフレームワークを作ることを考えていましたが、どこから始めたらよいか分かりません。これを行う既存のフレームワーク/ココアポードはありますか?そうでない場合は、誰かが私にこれを達成する方法についていくつかのヒント/提案を教えてもらえますか?

+0

スクリプトを実行するたびに、ファイルに値を追加します。次に、値が十分に大きくなる場合は、関数を実行して値をリセットします。お役に立てれば! –

答えて

1

UserDefaultsを使用して、ユーザーがアプリを起動した回数を記録することをおすすめします。 iRateというフレームワークがあり、アプリをどれだけ起動したかを選択して、ユーザーにアプリの評価を促す日を指定できます。インストール後の日数を追跡&インクルードはあなたあなたの関数を呼び出す前に、その後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() 
} 

を呼び出すためにその

// FUNCTIONような何かを行うことができます開始された回数を維持するために 行うことができます。

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

この度はありがとうございました!私の最初の考えはそんなものでした。知ってうれしい私は正しい軌道にいる笑。 – LaurentShala

0

最も簡単にはUserDefaultsを利用するだろうでした。メインViewControllerviewDidLoadに設定してください。

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") 
} 

必要な場所で質問します。

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

必要に応じて結果を行います。

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

申し訳ありませんLastMove私はまだ入力していたし、あなたがすでに投稿したことを確認しました。 – Barns

+0

提案していただきありがとうございます!やってみます! – LaurentShala

関連する問題