본문 바로가기
프로그래밍/iOS

OpenURL URL Schemes, HTML에서 어플실행, 어플에서 어플실행, handleOpenURL 이용

by 백룡화검 2011. 11. 25.

(1) 참고 url

 

1. http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

 

2. http://docs.burstly.com/guides/in-app-purchase-quick-start-guide.html#giving-your-app-an-openurl-url-scheme

 

3.  http://wiki.akosma.com/IPhone_URL_Schemes

 

(2) 설명

OpenURL URL Schemes, URL Schemes, handleOpenURL 이용방법 또는 Header, 헤더

라고 말하는 것을 간단히 말하면

test1234:// 와 같은 형태로 호출시 쓰이는 형태로,

홈페이지에서 http://와 같이 사용되는 형태의 머릿글 이라고 생각하면 좋겠다.

 

 

위에서 test1234는 어플 인증 App ID가 com.headercoco.test1234일 경우에 test1234를 말한다.

선언은 ㅇㅇㅇㅇ-info.plist 파일에 항목을 추가해야 한다.

1) info.plist에  URL Schemes 추가

2) 소스 어플프로그램AppDelegate.m에 handleOpenURL 메소드 추가

3) 다른 어플 또는 HTML에서 호출 사용 (HTML의 href를 이용 형태)

 

추가설명)Xocde에서 -info.plist 파일을 열고 URL Types를 추가하고 URL identifier에 

com.yourcompany.myapp 형태로 입력하고 item0에 URL Schemes를 추가하여 item0에 url scheme에 연결될 스키마 이름을 myapp형태로 입력한다.

 

 

(3) 호출 예시

1) myapp://
2) myapp://some/path/here
3) myapp://?foo=1&bar=2
4) myapp://some/path/here?foo=1&bar=2

 
(4) 소스 코딩
1) 소스 어플프로그램AppDelegate.m에 추가
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
{
  // Do something with the url here
}
 
 
2) 사용 예시
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    if (!url) {  return NO; }
 
    NSString *URLString = [url absoluteString];
    [[NSUserDefaults standardUserDefaults] setObject:URLString forKey:@"url"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    return YES;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
	// 어플 자신이 호출된 경우에 얼럿창 띄우기 
	NSString *strURL = [url absoluteString];
	 
	UIAlertView *alertView= [[UIAlertView alloc] initWithTitle:@"call message"
                                                       message:strURL
                                                      delegate:nil 
                                                cancelButtonTitle:@"OK" otherButtonTitles:nil];
 
	[alertView  show];
	[alertView  release];
 
	return YES;
}

출처 : http://blog.naver.com/touchtable?Redirect=Log&logNo=115678156