当用户加载免费版本时,我想知道如何在应用程序中包含某些限制。 例如:我有一个包含大约100个条目的tableView。除非用户购买高级版本,否则用户可以收藏其中的10个,但不能更多!我想在FavoritetableViewController上的numberOfRowsInSection中添加“return 10”。或者有更好/更舒适的方法吗?
还有一个评论功能。因此,如果用户看到评论,他/她想要回复,他/她只需要点击“回答”。但对于免费用户,我想将这种互动限制为5。 所以他们每天可以写5条评论。我正在玩实现某种内部时钟的想法。每当用户点击“提交”时,计数器就会上升。当计数器达到5时,按钮被禁用。时钟过去24小时后,此计数将重置。但说实话,我还不知道该怎么做。 所以任何想法或意见都将不胜感激。
答案 0 :(得分:1)
我不知道这是否是最好的解决方案,如果能帮到你的话。对我来说,做到这一点的方法是有一个单例类。您应该在应用程序启动时使用Bool var premium初始化他。此时你应该用你需要的所有数据初始化类:最喜欢的行数,最后一天的评论,....
在每次“高级操作”之前,您应该访问以下方法:BOOL authorized = [[AuthorizeSingleton sharedmanager] operation]
。在这里,您需要进行所有测试,以了解他是否可以执行高级操作。
每次有人想要执行高级操作时,您应该从viewController访问此单例。如果返回为NO,则弹出错误消息,在另一种情况下,您执行操作。
如果用户是高级用户,则始终返回是。
快速编码
这里是.h
#import <Foundation/Foundation.h>
@interface AuthorizeSingleton : NSObject
@property (strong, nonatomic) NSNumber* premium;
@end
这里是.m #import AuthorizedSingleton.h
AuthorizeSingleton* _sharedInstance=nil;
@interface AuthorizeSingleton ()
@property (strong, nonatomic) NSDate* timestamp;
@property (strong, nonatomic) NSNumber* numberOfcomentary;
@end
@implementation AuthorizeSingleton
@synthesize timestamp=_timestamp, numberOfcomentary=_numberOfcomentary;
-(id)init{
if (self == [super init]) {
//Here you should take data from your persistence(NSUSerDefaults or something like that) Here I initialize at 0
_timestamp=[[NSDate alloc] init];
_numberOfcomentary= [NSNumber numberWithInt:0];
}
return self;
}
+(AuthorizeSingleton*)sharedInstance{
if (!_sharedInstance) {
_sharedInstance = [[AuthorizeSingleton alloc] init];
}
return _sharedInstance;
}
-(BOOL)shouldDoComentary{
NSDate* today= [[NSDate alloc] init];
NSTimeInterval interval = [_timestamp timeIntervalSinceDate: today];
if (interval>60*60*24) {
_timestamp=today;
_numberOfcomentary= [NSNumber numberWithInt:0];
}
if (_numberOfcomentary.integerValue>5 && !_premium.boolValue) {
return NO;
}
return YES;
}
@end
我不测试它,但这是个主意。您可以从您想要授权的地方拨打课程,如
BOOL auth = [[AuthorizedSingleton sharedInstance] shouldDoComentary]
if(!auth){
//show error
}
else{
//do action
}