본문 바로가기

Programming/iOS

[ios] 기본 공유하기 기능 사용하기

반응형
사진 및 링크를 앱에서 다른 앱으로 공유 하기를 해야할때,
 iOS에서 제공하는 UIActivityViewController 사용하면, 간편하게 구현할 수 있습니다.


UIActivityViewController 에서 제공하는 공유 대상의 서비스 범위는 SNS  또는 이메일, 클립보드 복사하기 와 iOS 소셜 프레임워크로 추가된 페이스북, 트워터 등이 있습니다.

페이스북에 글을 등록하려면, 예전엔  페이스북 API를 이용하여, 등록해야했기 때문에, 페이스북 개발자 생성 및 API  Key발급도 해야했지만, UIActivityViewController 를 사용하면 페이스북 API를 이용하지 않고도 글을 등록할수 있습니다. 단, 아이폰에 페이스북 로그인이 되어있어야합니다.

---------------------------------------------------------------------------

1. 먼저 h 파일을 추가합니다.

#import <Social/Social.h>

#import <Accounts/Accounts.h>

---------------------------------------------------------------------------

2. activityuItem 객체를 생성합니다. activityuItem에 객체에는 URL를 넣도록 하겠습니다.

 NSURL *url = [NSURL URLWithString:self.m_shareUrl];


 NSArray *activityItems = @[url];

---------------------------------------------------------------------------

3. UIActivityViewController 객체를 생성하고 제외할 타입을 지정해줍니다.
제외할 타입은 공유하기 컨트롤러에서 노출되지않습니다.
그리고 핸들러를 통해, 성공여부를 알수 있습니다. 
     

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems
                                                                             applicationActivities:nil];
    
    
    activityVC.excludedActivityTypes = @[//UIActivityTypePostToFacebook,
                                         //UIActivityTypePostToTwitter,
                                         UIActivityTypePostToWeibo,
                                         //                                                UIActivityTypeMessage,
                                         //UIActivityTypeMail,
                                         UIActivityTypePrint,
                                         UIActivityTypeCopyToPasteboard,
                                         UIActivityTypeAssignToContact,
                                         //UIActivityTypeSaveToCameraRoll,
                                         UIActivityTypeAddToReadingList,
                                         UIActivityTypePostToFlickr,
                                         UIActivityTypePostToVimeo,
                                         UIActivityTypePostToTencentWeibo,
                                         UIActivityTypeAirDrop,
                                         UIActivityTypeOpenInIBooks,
                                         
                                         ];
    
    activityVC.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
        
        
        if(completed)
        {
         
        }
      
    };

    
---------------------------------------------------------------------------

4. 마지막으로 모달스타일로 컨트롤러를 넣어주면, 아래오 같이 공유하기 뷰를 확인할수 있습니다.

    [self presentViewController:activityVC animated:YES completion:^{
        

    }];