アプリを作っていると、特定のイベントの回数や実行時間に依存した処理を書くことが必要な場面が多々あります。
例えば以下の様な処理です。
- ある機能を利用する際、初回時のみガイダンスを表示
- ある機能を利用する際、最初の3回のみ使い方の説明を表示
- 広告POPUPを1時間に1回のみ表示
- 起動後にキャンペーンのお知らせを1日に1回だけ表示させたい
これらはイベントの回数や時刻を永続化するだけで簡単に書ける処理ではありますが、毎回同様の処理を書くのは手間でもあります。
そこで、このような用途のためにイベントの回数と時刻を永続化しておくだけのライブラリを書きました。
※Android版はこちらです。
SRGEventDateRecorder
導入してみる
Podfileに以下の行を追加してpod update
します。
pod 'SRGEventDateRecorder'
導入後は利用するクラスファイルでSRGEventDateRecorder.h
をimportすれば利用できます。
使い方
1イベントごとに1つのSRGEventDateRecorder
インスタンスを作ります。
インスタンス生成時にそのイベントに対してユニークなKeyを割り当てます
例えば、ある機能を使うというイベントのkey
がuse_my_awesome_feature
だった場合、以下のようになります。
イベントの記録
SRGEventDateRecorder *recorder = [SRGEventDateRecorder recorderWithKey:@"use_my_awesome_feature"];
[recorder record]; // 記録
記録したデータの利用
SRGEventDateRecorder *eventRecorder = [SRGEventDateRecorder recorderWithKey:@"use_my_awesome_feature"];
// BOOL:イベント1度でも実行(記録)されたかどうか?
eventRecorder.didRecorded;
// NSUInteger: イベントが記録された回数
eventRecorder.recordedCount;
// NSDate:イベントが記録された日付
eventRecorder.recordedDate;
// BOOL: イベントが記録されてから1日経過してるかどうか?
[eventRecorder didElapsedSinceLastRecordedDateWithSeconds:60*60*24];
データのクリア
SRGEventDateRecorder *eventRecorder = [SRGEventDateRecorder recorderWithKey:@"use_my_awesome_feature"];
[eventRecorder clear];
具体例
ある機能の利用をイベントとして扱う時、利用時にイベントを記録しておく
SRGEventDateRecorder *recorder = [SRGEventDateRecorder recorderWithKey:@"use_my_awesome_feature"];
[recorder record];
機能を使う時、初回だけ特別な動作をさせたいケース
SRGEventDateRecorder *recorder = [SRGEventDateRecorder recorderWithKey:@"use_my_awesome_feature"];
if( !recorder.didRecorded ){
// 機能が1度も利用されてない時のみ実行したい処理を書く
}
機能を使う時、3回目までだけ特別な動作をさせたいケース
SRGEventDateRecorder *recorder = [SRGEventDateRecorder recorderWithKey:@"use_my_awesome_feature"];
if( recorder.recordedCount <= 3){
// 3回目までだけ実行させたい処理
}
機能を使う時、前回利用から1日以上経過してる場合にだけ特別な動作をさせたいケース
SRGEventDateRecorder *recorder = [SRGEventDateRecorder recorderWithKey:@"use_my_awesome_feature"];
if( [recorder didElapsedSinceLastRecordedDateWithSeconds:60*60*24){
// 前回利用から1日以上経過してるときにだけ実行したい処理
}
以上、SRGEventDateRecorder
の紹介でした。
利用することで楽ができそうな画面があれば、使ってみてください。