Tag Archives: NSURL

[iPhone] URL스키마를 이용한 다른 어플리케이션 실행하기

아이폰 어플리케이션은 다른 외부의 어플리케이션을 URL을 사용하여 실행 할 수 있습니다. 예를 들어 다음의 어플리케이션들을 이와같은 URL을 이용하여 실행할 수 있습니다.

1. 일반 웹브라우저 호출

내가 원하는 임의의 페이지로 이동하는 방법은 간단합니다. 앞으로 소개해 드릴 방법 역시 다음과 같은 방법으로 URL을 호출하시면 됩니다.
[code]NSURL *url = [NSURL URLWithString:@”http://theeye.pe.kr”];
[[UIApplication sharedApplication] openURL:url];[/code]

2. 구글맵 실행

다음과 같이 구글맵은 검색을 위한 문자열을 사용하여 원하는 위치로 이동을 할 수 있습니다.

http://maps.google.com/maps?q=${QUERY_STRING}

여기서 중요한것은 ${QUERY_STRING}을 사용하기 위해서는 URL 인코딩을 하여야 한다는 것입니다. 간단한 예제는 다음과 같습니다.
[code]// 쿼리문 생성
NSString* searchQuery = @”1 Infinite Loop, Cupertino, CA 95014″;
 
// 특수 문자 처리를 위해 인코딩을 합니다.
searchQuery = [addressText stringByAddingPercentEscapesUsingEncoding:
                      NSUTF8StringEncoding];
 
// URL 문자열을 생성합니다.
NSString* urlString = [NSString stringWithFormat:
                              @”http://maps.google.com/maps?q=%@”,
                              searchQuery];
 
// 실행
[[UIApplication sharedApplication]
  openURL:[NSURL URLWithString:urlText]];[/code]

3. 메일 에이전트 실행

위와 마찬가지로 매우 쓸만하고 간단하고 빠르게 메일을 발송할 수 있는 메일 에이전트를 호출합니다. 기본적으로 들어있는 것을 호출하는 것뿐이지만 받는 사람 주소가 미리 입력되어있습니다. 메일을 발송하기 위한 기본적인 형태는 HTML의 그것과 매우 똑같습니다.

mailto://${EMAIL_ADDRESS}

예를 들어 test@abcd.com으로 발송하기 위해서는 다음과 같이 사용하면 됩니다.
[code][[UIApplication sharedApplication] openURL:[NSURL URLWithString:
  @”mailto://test@abcd.com”]];[/code]

4. 전화걸기 (아이폰에서만 사용 가능)

마찬가지로 openURL을 사용하여 전화도 걸 수 있습니다. 한가지 장점은 전화를 종료하였을 때 어플리케이션으로 복귀를 할 수 있다는 점입니다. J2ME나 WML에서 사용하는 UML 스키마의 형태와 비슷합니다. 예를 들어 02-1234-1234로 전화를 걸 경우 다음과 같이 하면 됩니다.
[code][[UIApplication sharedApplication] openURL:[NSURL URLWithString:@”tel://0212341234″]];[/code]

5. SMS 보내기

전화걸기와 마찬가지로 아이팟 터치등에서는 사용할 수 없습니다. 매우 빠르게 SMS 클라이언트를 호출 할 수 있습니다. SMS의 URL은 전화와 달리 //를 사용하지 않습니다.

sms:${PHONENUMBER_OR_SHORTCODE}

[code][[UIApplication sharedApplication] openURL:[NSURL URLWithString:@”sms:55555″]];[/code]

6. 앱스토어 실행하기

앱스토어에서 나의 어플리케이션의 구매 버튼이 있는 페이지로 바로 이동시키는것은 꽤 중요한 일입니다. 앱스토어 링크의 경우엔 따로 URL스키마를 사용할 필요가 없습니다. 단지 아이튠즈의 URL링크를 그대로 사용하면 됩니다. URL이 다음과 같이 보인다고 가정하겠습니다.

[code]NSURL *appStoreUrl = [NSURL URLWithString:@”http://itunes.apple.com/us/app/id396402081?mt=8″];
[[UIApplication sharedApplication] openURL:appStoreUrl];[/code]

잘 되는군요^^

출처: http://iphonedevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html

[iPhone] URL주소를 가지고 원격지의 이미지 파일을 UIImage로 읽어오기

UIImage를 이용하여 로컬 리소스 파일로 존재하는 이미지 파일을 읽어오는 것은 많이 해보셨을 것입니다.

이번에는 원격지의 이미지를 읽어오도록 하는 것을 시도해 보겠습니다. 다음의 소스를 참고하세요.

[code]- (void)applicationDidFinishLaunching:(UIApplication *)application {
   
    // 이미지를 읽어올 주소
    NSURL *url = [NSURL URLWithString:@”http://www.segye.com/content/image/2009/01/06/20090106000247_0.jpg”];
    NSData *data = [NSData dataWithContentsOfURL:url];
   
    // 데이터가 정상적으로 읽혔는지 확인한다. 네트워크가 연결되지 않았다면 nil이다.
    if(data) {
        UIImage *image = [[UIImage alloc] initWithData:data];
        UIImageView *view = [[UIImageView alloc] initWithImage:image];
   
        [view setFrame:CGRectMake(0.0f, 0.0f, image.size.width, image.size.height)];
        [window addSubview:view];
        [view release];
        [image release];
    }
    // 데이터를 정상적으로 읽어오지 못했을 경우의 처리
    else
    {
        UILabel *label = [[UILabel alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
       
        [label setText:@”Fail…”];
        [label setTextAlignment:UITextAlignmentCenter];
        [window addSubview:label];
        [label release];
    }
   
    [window makeKeyAndVisible];
}[/code]
이 코드에서 중요하게 보아야 할점은 NSData가 nil인지 아닌지를 판단하여 데이터를 가져왔는지 여부를 확인할 수 있다는 점입니다.

또한 가져온 이미지를 UIImage로 읽어들인 후에 size구조체에 접근하여 이미지의 크기를 얻어올 수 있습니다.
사용자 삽입 이미지어이쿠, 꽃보다 남자의 이미지가 아이팟의 가로길이인 320보다 커서 좀 짤렸네요;; 미안하다 잔디야~ㅠㅠ

이미지는 Frame의 가로 세로 길이에 맞춰 늘어나게 됩니다.
1002669745.zip