인앱 결재후
서버에 결재 데이터를 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 |