Tag Archives: 아이폰

[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] 아이폰 Exchange/Gmail 연동시 오류 해결 방법

아이폰에서 지메일을 연동하여 사용할 경우 Google Sync라는 서비스를 이용하여 메일이 계정이 도착시에 알림을 받을 수 있는 일명 “푸시 알람”서비스를 제공 받을 수 있습니다. 이 경우 구글의 주소록이라던가 캘린더등도 연동이 가능합니다. 이 서비스는 Microsoft Exchange 서버에 연결하는 설정을 이용하여 가능한데요, 자세한 내용은 [이곳]을 참고하셔서 설정을 하시면 됩니다.

하지만 iOS가 4.x대로 넘어오면서 지메일 연동이 예전처럼 잘 안되는 문제가 발생하곤 합니다. 저는 벌써 2번이나 겪었네요. 이경우 곧 되겠거니 하고 냅둬도 계속 안되는 문제가 있습니다. 구체적인 현상으로는 다음의 화면을 보시게 됩니다. (왼쪽 스크린샷 참고)

사용자 삽입 이미지

이런 문제가 발생하게 되면 오른쪽 스크린샷에서 볼 수 있는 “푸시할 Mail 폴더”라는 설정이 사라지게 됩니다. 저 설정이 등장해야 푸시가 정상적으로 등장을 합니다. 제가 여러가지로 방법을 찾아보았는데 가장 확실한 방법(이라고 주장하고 싶은;;)을 적어보겠습니다.

1. (안드로이드폰을 중복 사용중이라면) 계정 동기화를 끕니다

안드로이드의 설정 – 계정 및 동기화메뉴에 들어가면 설정한 지메일 계정이 나타납니다. 계정의 설정에 들어가서 모든 동기화를 꺼줍니다. 실제로 안드로이드폰과 아이폰을 동시에 사용하면 계정에 중복 접근을 하여 계정이 막히는 경우가 있는것 같습니다.
사용자 삽입 이미지

2. 아이폰의 메일 계정을 삭제합니다

기존에 설정된 아이폰의 메일 계정을 삭제하여 지메일에 연결하는 모바일 기기를 모두 제거하도록 합시다.

3. 구글 지메일 계정의 락을 해제합니다

구글 계정이 락이 된 상태일 경우 락을 해제할 수 있습니다 .하지만 일단 어떤 상황인지 사용자가 정확히 판단을 내리기 어려운 상황이니 무조건 락을 해제하도록 합시다.

위의 주소에서 락을 해제할 수 있습니다. 계정 정보와 그림의 문자를 입력하시면 됩니다.

4. 아이폰 타임아웃 패치를 설치합니다

아이폰 4.0.1이후 버전의 iOS의 경우 싱크가 제대로 문제가 있는듯 합니다. 애플에서 인정을 하고 내놓은 패치입니다. 해당 패치를 선택하는데 다음의 페이지를 아이폰을 이용하여 방문을 합니다.

download the signed configuration profile을 탭하시면 바로 설치화면이 뜹니다. 바로 추가하면 됩니다. 혹시 모르니 블로그에도 올려두겠습니다.

1391423667.xxx

5. 기다립니다

마음이 급하시다면 여기서 다시 메일을 설정해 봅니다. [참고] 하지만 저의 경우 바로 되는 경우는 없더군요. 아이폰에 메일 세팅이 제거된 상태로 몇시간이 지나서 메일 세팅을 하면 잘 되게 됩니다. 저의 경우는 2~3시간도 기다려 봤는데 잘 안되었는데 자고 일어나면 잘 되더군요.

결론적으로 이 문제가 발생하면 자기전에 위의 절차를 따라한후에 한숨 자고 아침에 일어나서 다시 메일 설정을 하면 잘 되게 됩니다. 제가 겪은 문제는 모두 위의 모든 절차와 10시간 이상의 숙면(?) 이후에 복구가 되더군요.

6. 멀티 캘린더를 이용할 경우

다수의 구글 캘린더를 연동하여 사용하실 경우 http://m.google.com/sync 에 방문하셔서 설정을 하시면 됩니다. 처음에 기본적으로는 사용할 수 없으니 언어를 English로 변경후에 사용하시기 바랍니다.

참고 :
http://www.google.com/support/forum/p/Google+Mobile/thread?tid=31539c68d7aedd35&hl=en
http://www.google.com/support/forum/p/gmail/thread?tid=0aea7857b25a174f&hl=en