본문 바로가기

프로그래밍/iOS

[ios] 시간 제한, 패키지 제한 걸기(타임락, 패키지 락)

해당 객체 사용을 시간이나 패키지 명등을 통해 제약을 걸고 싶을 때 사용하는 방법이다.

 

1. 타임락

 

- (id) init

{

    

    NSLog(@"IDCardRecognize init");

    self = [super init];

    if (self) {

        if (![self checkTime]) //시간을 체크하여 지난 경우는 init결과를 nil로 반환

            return nil;

    }

    

    return self;

 

}

 

- (BOOL)checkTime

{

    NSDate *expiredDate = [self dateFromString:@"20140421" withFormat:@"yyyyMMdd"]; //해당날짜 설정

    

    if ([[NSDate date] compare:expiredDate] != NSOrderedAscending) //해당날짜보다 이르지 않을경우

{

        NSLog(@"Library licese is expired!!"); 

      

        return NO;  //NO반환

    }

    return YES; //해당날짜보다 이르면 YES반환

 

}


- (NSDate *)dateFromString:(NSString *)str withFormat:(NSString *)format

{

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

    [formatter setDateFormat:format];

    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ko_KR"];

    [formatter setLocale:locale];

    

    return [formatter dateFromString:str];

} 

2. 패키지 락

 

- (id) init

{

    NSLog(@"IDCardRecognize init");

    self = [super init];

    if (self

   {

        if (![self checkPackage]) //패키지 명을 체크하여 다른 경우는 init결과를 nil로 반환

            return nil;

    }

    return self; 

} 

- (BOOL) checkPackage

{

    NSString* bundleName =[[NSBundle mainBundle] bundleIdentifier]; // 패키지 명 가져오기

    NSLog(@"bundleName = %@",bundleName); // 패키지 명 출력 테스트

    NSString* packageName = @"com.test.test"; //package 

    if (![bundleName isEqualToString:packageName]) // 패키지 명과 다르다면

    {

        NSLog(@"package name is not matching!!");

        return NO;

    }

    return YES;

}