본문 바로가기
Developer/IOS

IOS Log 데이터 다루기, 사용자 피드백 창구 , User feedback root , 경과날짜 비교

by MindOpener 2014. 2. 21.
반응형

인앱 결재후 

서버에 결재 데이터를 insert해줘야 하는 부분이 있는데 

이부분에서 자꾸 에러가 나서 문제가 되었다. 


그래서 사용자 구매 이력을 log에 남기고 

결재는 정상이나 사용기간이 업데이트 되지 않을때 

사용자에게 메일로 클레임을 발송할수 있게 처리 하려고 한다. 


결재  프로세스 


결재 --> 결재 성공시 log 파일 에 결재 data 저장 --> 

사용자 클레임 발생시 sendmail에 log파일 첨부 --> 관리자 log파일 확인후 수동업데이트 


재결재시 --> 기존  log파일의 수정 날짜 확인  2달 이전 이면  내용 제거후  새로 로그 기록 


필요한 기능 

1. 파일 쓰기  로그 기록 

2. 파일 수정일 체크 및 현재 날짜와의 비교

 - 유효기간 이전이면 업데이트 

-  이후면 내용 소거 후 업데이트 

3. 메일 발송시 첨부 처리 


1. 


    //Get the file path

    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"gume.log"];

    

    //create file if it doesn't exist

    if(![[NSFileManager defaultManager] fileExistsAtPath:fileName]){  //존재하지 않으면

        [[NSFileManager defaultManager] createFileAtPath:fileName contents:nil attributes:nil];

    }else{

     

   // 현재 날짜 

 NSDictionary *dictionarys = [[NSFileManager defaultManager] attributesOfItemAtPath:fileName error:nil];

       

        NSString *dateString = @"28-02-2014";

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

        // this is imporant - we set our input date format to match our input string

        // if format doesn't match you'll get nil from your string, so be careful

        [dateFormatter setDateFormat:@"dd-MM-yyyy"];

        NSDate *dateFromString = [[NSDate alloc] init];

        // voila!

        dateFromString = [dateFormatter dateFromString:dateString];

        [dateFormatter release];

        

       // NSLog(@"최후 수정일과의 거리 %d",[self daysBetween:[dictionarys objectForKey:NSFileModificationDate] and:dateFromString]);

        

        //NSLog(@"%@",[NSDate date]);

        

        if([self daysBetween:[dictionarys objectForKey:NSFileModificationDate] and:[NSDate date]] > 20){  // 20일이 경과 이후의 새로운 결재이면

            [[NSFileManager defaultManager] removeItemAtPath:fileName error:nil];

            [[NSFileManager defaultManager] createFileAtPath:fileName contents:nil attributes:nil];

        }


    }

    //append text to file (you'll probably want to add a newline every write)

    NSFileHandle *file = [NSFileHandle fileHandleForUpdatingAtPath:fileName];

    // 파일 최근 수정일을 확인 해서 한달이 지났으면 지우고 새로 기록 필요 ..

    [file seekToEndOfFile];

    [file writeData:[content dataUsingEncoding:NSUTF8StringEncoding]];

    [file closeFile];



// 날짜 간 비교 

- (NSInteger)daysBetween:(NSDate *)dt1 and:(NSDate *)dt2 {

    NSUInteger unitFlags = NSDayCalendarUnit;

    NSCalendar* calendar = [NSCalendar currentCalendar];

    NSDateComponents *components = [calendar components:unitFlags fromDate:dt1 toDate:dt2 options:0];

    NSInteger daysBetween = abs([components day]);

    return daysBetween+1;

}



반응형

'Developer > IOS' 카테고리의 다른 글

애플 아이폰6S, 9월 18일 출시  (0) 2015.08.19
버전 체크  (0) 2013.12.17
Xcode Command, 명령어 모음 단축키, 디버거 단축키  (0) 2013.12.16
맥북 사용법 - 편의사용 , 단축키 등  (0) 2013.12.13
UIWewView href control  (0) 2013.12.10