http://blog.naver.com/PostView.nhn?blogId=obricko&logNo=40171589651


1. 애플 사이트에서 푸쉬 인증서 만듬 ->aps_development.cer 파일들..


2. 키체인에서 자신의 프라이벗키 빼오기..->열쇠모양의 그 키만 내보내기로 가져옴..여기선 mykey.p12로 이름지음..


3. 콘솔명령어..


openssl x509 -in aps_development.cer -inform DER -out aps_development.pem -outform PEM


openssl pkcs12 -nocerts -in mykey.p12 -out mykey.pem


openssl pkcs12 -export -inkey mike.pem -in aps_development.pem -out 완성인증서명.p12


위의 “완성인증서명.p.12”가 최종적으로 만들어진 인증서임..


개발용 배포용 둘다 요렇게 만들면 제대로 보내짐..

(자바 1.6에서는 굳이 안해도 되지만..1.7에서는 꼭 이걸 해줘야 함..)

'컴퓨터 > 아이폰' 카테고리의 다른 글

uiscrollview에 관한것들..  (0) 2015.01.19
nndate에 관한 유용한 정보  (0) 2015.01.15
아이폰 언어 나라 값 가져오기  (0) 2015.01.05
아이폰 파일 매니져  (0) 2014.02.18
mov 파일 mp4로 변환하기  (0) 2013.11.20
      
Posted by k_ben


UIScrollView에 UIWebView, UITableView를 서브뷰로 추가할 경우 터치 이벤트로 인한 오동작이 발생할 수 있으므로 이런 방식의 구현은 피해야한다.


ScrollView content
01
// Content Offset
02
[scrollView setContentOffset:CGPointMake(100.0f, 100.0f)];
03
CGPoint offset = [scrollView contentOffset];
04
 
05
// Content Size
06
CGSize size = [scrollView contentSize];
07
scrollView.contentSize = CGSizeMake(320, 480);
08
 
09
// Content Inset
10
// Content 상하에 여백을 추가한다.
11
scrollView.contentInset = UIEdgeInsetsMake(64.0,0.0,44.0,0.0);


Scrolling
01
// 스크롤 설정
02
scrollView.scrollEnabled = YES;
03
 
04
// 수직/수평 한 방향으로만 스크롤 되도록 설정
05
scrollView.directionalLockEnabled = YES;
06
 
07
// 상태바를 클릭할 경우 가장 위쪽으로 스크롤 되도록 설정. scrollViewDidScrollToTop: 델리게이트 메소드로 적절한 처리를 해 주어야 한다.
08
scrollView.scrollsToTop = YES;
09
 
10
// 특정 사각 영역이 뷰에 표시되도록 오프셋 이동
11
[scrollView scrollRectToVisible:CGRectMake(50.0, 50.0, 100.0, 100.0) animated:YES];
12
 
13
// 페이징 설정
14
scrollView.pagingEnabled = NO;
15
 
16
// 스크롤이 경계를 넘어섰다가 다시 복귀했는지 판별
17
if (scrollView.bounces) {
18
    NSLog(@"Bounce");
19
}
20
 
21
// 스크롤이 경계에 도달하면 바운싱효과를 적용
22
scrollView.alwaysBounceHorizontal = YES;
23
scrollView.alwaysBounceVertical = YES;
24
 
25
// 스크롤뷰를 터치할 경우 컨텐츠 내부의 뷰에 이벤트 전달
26
[scrollView touchesShouldBegin:touches withEvent:evt inContentView:contentInView];
27
[scrollView touchesShouldCancelInContentView:contentInView];
28
 
29
// 터치이벤트가 발생할 경우 딜레이를 두고 touchesShouldBegin:withEvent:inContentView: 메소드를 호출
30
scrollView.delaysContentTouches = YES;
31
 
32
// 감속 속도 조절
33
scrollView.decelerationRate = UIScrollViewDecelerationRateFast; // or UIScrollViewDecelerationRateNormal
34
 
35
// 스크롤을 하기 위해 뷰를 터치했는지 판별
36
if (scrollView.tracking) {
37
    NSLog(@"User has touched the content view but might not have yet have started dragging it");
38
}
39
 
40
// 스크롤이 시작되었는지 판별
41
if (scrollView.dragging) {
42
    NSLog(@"Dragging or Scrolling....");
43
}
44
 
45
// 스크롤이 종료되고 감속중인지 판별
46
if (scrollView.decelerating) {
47
    NSLog(@"User isn't dragging the content but scrolling is still occurring");
48
}
49
 
50
// 스크롤 바 스타일
51
scrollView.indicatorStyle = UIScrollViewIndicatorStyleBlack;
52
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
53
scrollView.indicatorStyle = UIScrollViewIndicatorStyleDefault;
54
 
55
// 스크롤 바 표시
56
scrollView.showsHorizontalScrollIndicator = YES;
57
scrollView.showsVerticalScrollIndicator = YES;
58
 
59
// 특정 시점에 스크롤바 표시
60
[scrollView flashScrollIndicators];
61
 
62
// 스크롤 바 위치 설정
63
scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0);


Zooming & Panning
01
// 특정 영역을 스크롤뷰에 꽉 차도록 확대/축소 한다.
02
[scrollView zoomToRect:CGRectMake(0.0, 0.0, 20.0, 20.0) animated:YES];
03
 
04
// 현재 줌 배율
05
float fZoomScale = scrollView.zoomScale;
06
 
07
// 줌 배율 설정
08
scrollView.minimumZoomScale = 0.2;
09
scrollView.maximumZoomScale = 10.0;
10
[scrollView setZoomScale:3.0 animated:YES];
11
 
12
// 스크롤 뷰가 바운싱되었는지 판별
13
if (scrollView.zoomBouncing) {
14
    NSLog(@"The scroll view is zooming back to a minimum or maximum zoom scaling value");
15
}
16
 
17
// 스크롤 뷰가 줌 중인지 판별
18
if (scrollView.zooming) {
19
    NSLog(@"User is making a zoom gesture");
20
}
21
 
22
// 바운싱 줌 활성화
23
scrollView.bouncesZoom = YES;


UIScrollViewDelegate
view sourceprint?
01
#pragma mark -
02
#pragma mark UIScrollViewDelegate Protocol Methods
03
// 스크롤뷰가 스크롤 된 후에 실행된다.
04
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
05
{
06
}
07
 
08
// 스크롤뷰가 스크롤 되기 직전에 실행된다.
09
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
10
{
11
}
12
 
13
// 스크린을 드래그한 직후에 실행된다.
14
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
15
{
16
    if (decelerate) {
17
        NSLog(@"The scrolling movement will continue, but decelerate, after a touch-up gesture during a dragging operation");
18
    } else {
19
        NSLog(@"Scrolling stops immediately upon touch-up");
20
    }
21
}
22
 
23
// 스크롤뷰가 가장 위쪽으로 스크롤 되기 전에 실행된다. NO를 리턴할 경우 위쪽으로 스크롤되지 않도록 한다.
24
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
25
{
26
    return YES;
27
}
28
 
29
// 스크롤뷰가 가장 위쪽으로 스크롤 된 후에 실행된다.
30
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
31
{
32
}
33
 
34
// 스크롤뷰가 Touch-up 이벤트를 받아 스크롤 속도가 줄어들때 실행된다.
35
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
36
{
37
}
38
 
39
// 스크롤 애니메이션의 감속 효과가 종료된 후에 실행된다.
40
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
41
{
42
}
43
 
44
// 줌 효과를 적용할 뷰를 리턴한다.
45
- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView
46
{
47
    return webView;
48
}
49
 
50
// 줌이 시작될때 실행된다.
51
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView*)view
52
{
53
 
54
}
55
 
56
// 줌을 완료했을때 실행된다.
57
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
58
{
59
}
60
 
61
// 줌 스케일이 변경된 후에 실행된다.
62
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
63
{
64
}
65
 
66
// 스크롤 애니메이션이 종료된 후에 실행된다.
67
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
68
{
69
}

      
Posted by k_ben


//NSDateFormatter 를 생성한다.
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
//데이트 형식을 지정한다.
[inputFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"];

//inputFormatter 에 지정한 형식대로 NSDate 가 생성된다.
NSDate *formatterDate = [inputFormatter dateFromString:@"1999-07-11 at 10:30"];
//위에 까지가 날짜 생성

//NSDateFormatter 를 생성한다.
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
// 날짜 포맷을 세팅한다.
[outputFormatter setDateFormat:@"HH:mm 'on' EEEE MMMM d"];
//포맷된 형식되로 날짜를 NSString 으로 보여준다. formatterDate 은 위에서 세팅한 날짜 NSDate 값
NSString *newDateString = [outputFormatter stringFromDate:formatterDate];
//로그에 출력해서 본다.
NSLog(@"newDateString %@", newDateString);

부록

 enum {    // date and time format styles
NSDateFormatterNoStyle = kCFDateFormatterNoStyle,
NSDateFormatterShortStyle = kCFDateFormatterShortStyle,
NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,
NSDateFormatterLongStyle = kCFDateFormatterLongStyle,
NSDateFormatterFullStyle = kCFDateFormatterFullStyle
};
 NSDate *date = [NSDate date];
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];
 NSDateFormatterNoStyle :  ()
NSDateFormatterShortStyle : 10/24/08 (M/d/yy)
NSDateFormatterMediumStyle : Oct 24, 2008 (MMM d, yyyy)
NSDateFormatterLongStyle : October 24, 2008 (MMMM d, yyyy)
NSDateFormatterFullStyle : Friday, October 24, 2008 (EEEE, MMMM d, yyyy)

yyyy : 년도

w : 일년안에서 몇번째 주인지

W : 한달안에서 몇번째 주인지

MM : 월

dd : 일

D : 일년에서 몇번째 일인지

E : 요일 (ex) TuesdayTue

F : 요일을 숫자로 (ex) 2

hh : 시간 ( 12시간 단위로 1-12) 

kk : 시간 (12시간 단위로 0-11)

HH : 시간 (24시간 단위로 1-24)

KK : 시간 (24시간 단위로 0-23)

a : PM 인지 AM 인지

mm : 분

ss : 초. second in minute

SSS : Millisecond

zzzz : General time zone (ex) Pacific Standard TimePSTGMT-08:00

Z : RFC 822 time zone (ex) -800

 

Date and Time PatternResult
"yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"Wed, Jul 4, '01
"h:mm a"12:08 PM
"hh 'o''clock' a, zzzz"12 o'clock PM, Pacific Daylight Time
"K:mm a, z"0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700


NSDateFormatter가 제공하는 기본 스타일을 사용하지 않고 사용자가 직접 스타일을 지정하여 날짜의 문자열을 얻을 수 있습니다. 아래의 코드를 보시죠 :)

//커스텀 날짜 형식
{
        NSDate *today = [NSDate date];
        NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormat setDateFormat:@"MM/dd/yyyy hh:mma"];
        NSString *dateString = [dateFormat stringFromDate:today];
        NSLog(@"Custom Style Date : %@", dateString);
}
//출력결과
//Custom Style Date : 10/06/2010 03:39PM

위에서 MM, dd, yyyy 와 같은 형식지정자가 어떤 역할을 하는지 알아야 하는데 어디서 그 내용을 알 수 있을까요? 바로 ICU (International Components for Unicode)에서 표준 날짜 형식 지정자를 정해 놓습니다. 여기서 제공하는 문서에서 날짜 형식 패턴 부분을 보면 자세한 설명과 간단한 예제가 있습니다. 아래에 예제를 첨부합니다.

PatternResult (in a particular locale)
yyyy.MM.dd G 'at' HH:mm:ss zzz1996.07.10 AD at 15:08:56 PDT
EEE, MMM d, ''yyWed, July 10, '96
h:mm a12:08 PM
hh 'o''clock' a, zzzz12 o'clock PM, Pacific Daylight Time
K:mm a, z0:00 PM, PST
yyyyy.MMMM.dd GGG hh:mm aaa01996.July.10 AD 12:08 PM


코드를 통해 몇가지 예제를 더 살펴 보겠습니다.

//커스텀 날짜 형식
{
        NSDate *today = [NSDate date];
        NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
        NSString *dateString = [dateFormat stringFromDate:today];
        NSLog(@"%@", dateString);
}
//출력결과
//Wednesday October 6, 2010
//커스텀 날짜 형식
{
        NSDate *today = [NSDate date];
        NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormat setDateFormat:@"H:mm a, zzz"];
        NSString *dateString = [dateFormat stringFromDate:today];
        NSLog(@"%@", dateString);        
}
//출력결과
//15:39 PM, GMT+09:00

문자열로 표현된 날짜 데이터를 NSDate 객체로 바꾸는 것도 빈번히 일어나는 일입니다. 간한히 예로 들면 100610 이라고 표현된 날짜 문자열을 2010/10/06으로 바꾸고 싶을 때 다음 순서를 따라야 합니다.

  1. 우선 100610 을 NSDateFormatter를 이용하여 NSDate 객체로 변환한다
  2. 변환된 NSDate 를 NSDateFormatter를 이용하여 원하는 날짜 문자열을 얻는다. 
위의 순서대로 작성한 코드를 보겠습니다 :)
//문자열 날짜를 NSDate로 변경하기
{
        NSString *dateStr = @"20020505";
        
        // 1. NSDate로 변경하기
        NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormat setDateFormat:@"yyyyMMdd"];
        NSDate *date = [dateFormat dateFromString:dateStr];
        
        // 2. 원하는 문자열 얻기
        [dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
        dateStr = [dateFormat stringFromDate:date];
        
        NSLog(@"%@", dateStr);
}
//출력결과
//Sunday May 5, 2002
문자열로 표현된 날짜 데이터를 NSDate 객체로 변경하여 날짜간의 차이를 얻는 것은 NSDate 의 인스턴스 메소드인 timeIntervalSinceDate 를 이용하면 됩니다


지역에 맞게 날짜 데이터를 출력해 보겠습니다. 우선 현재 사용하고 있는 아이폰이 어떤 지역 설정을 사용하는지 알아보겠습니다. 아래 코드를 보시죠 :)

//아이폰이 현재 사용하고 있는 지역 설정 표시
{
        NSLocale *locale = [NSLocale currentLocale];
        NSLog(@"Current Locale : %@", [locale localeIdentifier]);
}
//출력결과 (시뮬레이터)
//Current Locale : en_US
위 결과를 보시면 현재 지역이 미국으로 설정되어 있습니다. 이를 한국으로 바꾸면 월 이름과 요일 이름이 한글로 출력됩니다. 아래 코드를 보시죠 :)
//지역 설정을 한국으로 변경하기
{
        NSDate *today = [NSDate date];
        
        NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
        [dateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"ko_KR"] autorelease]];
        
        NSString *dateString = [dateFormat stringFromDate:today];
               
        NSLog(@"Today : %@", dateString);
}
//출력결과
//Today : 수요일 10월 6, 2010
NSLocale을 "ko_KR"로 생성하여 NSFormatter에 설정해 주면 됩니다. 그럼 일본어로 표시해 볼까요?
//지역 설정을 일본으로 변경하기
{
        NSDate *today = [NSDate date];
        
        NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
        [dateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"] autorelease]];
        
        NSString *dateString = [dateFormat stringFromDate:today];       
        
        NSLog(@"Today : %@", dateString);
}
//출력결과
//Today : 水曜日 10月 6, 2010
지금까지 NSDate와 NSDateFormatter에 대해서 알아보았습니다. 해피코딩하세요! 


//date1를 현재 날짜로 설정
    NSDate *date1 = [NSDate date];
    
    //date2을 지정된 날짜로 설정
    NSString *dateStr = @"2015-01-05 23:11:08";
    NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *date2 = [dateFormat dateFromString:dateStr];
    
    NSLog(@"Date1  : %@", [dateFormat stringFromDate:date1]);
    NSLog(@"Date2  : %@", [dateFormat stringFromDate:date2]);
    
    //date1과 date2의 차이를 dateComp변수에 저장
    NSDateComponents *dateComp; 
    
    dateComp = [[NSCalendar currentCalendar] components:NSYearCalendarUnit fromDate:date1 toDate:date2 options:0];
    NSLog(@"Year   : %d", [dateComp year  ]);
    
    dateComp = [[NSCalendar currentCalendar] components:NSMonthCalendarUnit fromDate:date1 toDate:date2 options:0];
    NSLog(@"Month  : %d", [dateComp month ]);
    
    dateComp = [[NSCalendar currentCalendar] components:NSDayCalendarUnit fromDate:date1 toDate:date2 options:0];
    NSLog(@"Day    : %d", [dateComp day   ]);
    
    dateComp = [[NSCalendar currentCalendar] components:NSHourCalendarUnit fromDate:date1 toDate:date2 options:0];
    NSLog(@"Hour   : %d", [dateComp hour  ]);
    
    dateComp = [[NSCalendar currentCalendar] components:NSMinuteCalendarUnit fromDate:date1 toDate:date2 options:0];
    NSLog(@"minute : %d", [dateComp minute]);
    
    dateComp = [[NSCalendar currentCalendar] components:NSSecondCalendarUnit fromDate:date1 toDate:date2 options:0];


      
Posted by k_ben