아이폰에서 두개의 앱간에 데이터를 공유하기 위한 방안이 필요하여 한번 알아보았다.
역시나 방법은 별로 없다. ;;;
우선 기본적으로 아이폰은 샌드박스형으로 타 앱과 공유를 할 수 없다.
다만, 일부 지원과 편법을 이용할 수는 있다.
1. 정식(?)
1) URL Scheme 이용.
; 해당 앱을 알고 있는 경우에나 가능할 듯.
예제) 발송측 : [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"theOtherApp://dataToShare"]];
수신측 : -application:handleOpenURL:
2) UIPasteboard 을 이용.
; Copy&Paste 를 이용하는 것인데, 다른 것이 복사가 되면 이전 데이터는 안녕~
예제) UIPasteboard* board = [UIPasteboard generalPasteboard];
board.string = @"Some string to share";
; 위의 메소드를 이용할 경우에는 덮어쓰기로 인해 데이터가 저장이 안되지만, 각 paste 별로 네임을 줄 경우 유지가 됨. 중간에 @"Copy1"이라는 이름으로 다른 앱에서 덮어쓰기를 할 수도 있지만, 쉽게 공유되지 않는 명칭을 준다면 앱간 데이트를 잠시 동안은 공유가 될 것 같음. 데이터 유지 조건은 가이드 확인 필요. (2013.04.24) (https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIPasteboard_Class/Reference.html)
예제)
- Copy
UIPasteboard *paste = [UIPasteboard pasteboardWithName:@"Copy1" create:YES];
paste.persistent = YES;
[paste setString:@"Copy1 String"];
- Paste
UIPasteboard *paste = [UIPasteboard pasteboardWithName:@"Copy1" create:YES];
NSLog(@"paste : %@", [paste string]);
2. 꼼수
1) Address Book 이용
: 주소록에 더미데이터를 추가해서 이용. 사용자에게 안 좋아보임.
2) KeyChain
: 작은 데이터라면 이용해볼만할 듯. NSDictionay로 객체를 넣어서 사용한다고도 함.
-> Bundle Seed Id를 이용하여 공유가 가능.
참고 URL : http://shaune.com.au/ios-keychain-sharing-data-between-apps/
3) 공유된 폴더로 Read/Write
: /var/mobile/Library/AddressBook, Keyboard, Preferences 에 접근해서 사용.
SDK 사용 룰에 위배되어서 리젝의 가능성 있음.
참고 URL
- http://stackoverflow.com/questions/2091912/data-share-between-two-iphone-apps
- http://stackoverflow.com/questions/8228725/is-there-a-shared-pool-of-memory-for-files-in-ios
'기술 > iOS' 카테고리의 다른 글
iPhone URL Schemes (0) | 2013.04.29 |
---|---|
XCode Debugging tool Instrument 간략 설명. (0) | 2013.03.15 |
URL Loading System Error Codes (0) | 2013.01.09 |
[링크] Xcode를 이용한 자동 테스팅 시작하기 파트 1/2 (0) | 2013.01.02 |
NSString -> NSDate 변환 (0) | 2012.12.07 |