ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS 앱간 데이터 공유하기(Inter-app data sharing in iOS)
    iOS/Mac 2014. 9. 15. 13:51


    iOS 앱간 데이터 공유하기(Inter-app data sharing in iOS) 


    iOS에서 앱간 데이터를 공유하는 방법을 정리해봅니다.

    iOS는 앱간 데이터 공유 하는 방법이 제한적입니다.

    애플이 제공하는 공식적인 방법은


    - AirDrop

    - URL Scheme

    - Document Interaction


    이 있습니다. 

    AirDrop, Document Interaction은 한 앱에서 다른 앱으로 파일을 전달해주며 실행하는 방식입니다. 

    URL Scheme방식도 특정 앱이 가지고 있는 Scheme으로 그 앱을 호출하면서 URL방식으로 문자열을 전달하는 방법입니다.


    위 방식들은 데이터를 전달하면서 받는 앱을 실행하면서 동작하게 됩니다.


    (그외 원래의 용도(?)는 아니지만) 앱을 실행하지 않고 데이터를 전달할 수 있는 방법으로 클립보드를 이용하는 방법이 있습니다. 

    클립보드는 복사/붙여 넣기할 때 사용되는 것으로 앱간에서도 붙여 넣기가 가능하듯 앱간에 데이터를 넣고 읽어 올 수 있습니다.


    클립보드를 생성할 때 이름을 부여할 수 있고 이 이름을 부여한 페이스트 보드는 기본 페이스트 보드와 구별됩니다.


    간단한 예제는 다음과 같습니다.


    예제)  


    Test App A


    #import <MobileCoreServices/MobileCoreServices.h>

    ....



    NSString *text = @"테스트";


    UIPasteboard *pb = [UIPasteboard pasteboardWithName:@"pb.test1" create:YES];

    [pb setValue:text forPasteboardType:(NSString *)kUTTypeUTF8PlainText];

    //클립보드를 만들고 "테스트" 문자열을 저장합니다.



    ---- x ---- x ----- x ----- x ----

    Test App B


    #import <MobileCoreServices/MobileCoreServices.h>


    ....

    UIPasteboard *pb = [UIPasteboard pasteboardWithName:@"pb.test1" create:NO];

    NSString *text = (NSString *)[pb valueForPasteboardType:(NSString *)kUTTypeUTF8PlainText];

    // pb.test1이라는 클립보드에서 값을 읽어옵니다.




    * 문자열 이외에 다양한 형태의 데이터를 저장하고 읽어 올 수 있습니다.

    * iOS7.0 전에는 모든 앱간 접근이 가능 했는데 iOS7.0이후는 같은 계정의 앱간에서만 가능하다고 합니다.



    _____________________________________________________

    참고


    Inter-App Communication

    https://developer.apple.com/library/prerelease/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html


    Document Interaction

    https://developer.apple.com/library/prerelease/ios/documentation/FileManagement/Conceptual/DocumentInteraction_TopicsForIOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40010403



    반응형

    댓글

Designed by Tistory.