ARCHIVES

태그

신고하기

상단 메뉴 페이지

기본 콘텐츠로 건너뛰기

iPhone에서 두 개의 앱이 데이터 공유하는 방법. 기술/iOS

http://reddolphin.tistory.com/71




아이폰에서 두개의 앱간에 데이터를 공유하기 위한 방안이 필요하여 한번 알아보았다.
역시나 방법은 별로 없다. ;;;
우선 기본적으로 아이폰은 샌드박스형으로 타 앱과 공유를 할 수 없다.
다만, 일부 지원과 편법을 이용할 수는 있다.


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

- https://developer.apple.com/library/ios/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW2

댓글