[유니티 / iOS] 안드로이드 / iOS 둘다 사용가능한 공유하기 기능 만들기(Cross Platform Native Plugins)

Posted by Dev Park
2020. 9. 23. 09:18 Unity_iOS

 

Cross Platform Native Plugins 를 이용해서 공유하기 기능을 만드는 방법입니다. 

Cross Platform Native Plugins에 대한 설명과 클라우드 저장 기능에 대한 내용은 아래 글을 참고해 주세요. 

[유니티 / iOS] iCloud에 SaveData 저장 및 불러오기(Cross Platform Native Plugins)

 

 

Cross Platform Native Plugins 를 사용하면 아주 간단하게 앱내에 공유하기 기능을 만들 수 있습니다. 

먼저 Cross Platform Native Plugins 임포트 하고 Window > Voxel Busters > Native Plugins > Open NPSettings 를 선택합니다. 

 

인스펙터 창에 Native Plugins 설정창에서 Uses Sharing 을 체크하고 Save 버튼을 눌러 설정을 저장합니다.

 

이렇게 하면 설정은 끝났고 이제 코드를 작성하면 됩니다. 

Cross Platform Native Plugins의 공유하기 기능에는 여러가지 공유 타입이 있는데 

메시지, 메일, Facebook, WhatsApp, Twitter, SocialShare 그리고 모든 서비스로부터 공유하는 ShareSheet 가 있습니다. 

필요에 따라서 원하시는걸 선택해서 만들면 될거 같습니다. 

 

저는 일반적으로 많이 사용하는 공유하기 버튼을 누르면 여러가지 공유할 수 있는 앱이 나타나고 그중에 선택해서 공유하게 할거기 때문에 ShareSheet 형식을 사용했습니다. 

private void ShareScreenShotUsingShareSheet ()
{
    // Create share sheet
    ShareSheet _shareSheet     = new ShareSheet();    
    _shareSheet.Text        = m_shareMessage; // 문자 공유하기
    _shareSheet.URL         = m_shareURL;  // 주소 공유하기
    _shareSheet.AttachImageAtPath(GetImageFullPath()); // 이미지 공유하기

    // Set this list if you want to exclude any service/application type. Else, ignore.
    _shareSheet.ExcludedShareOptions    = m_excludedOptions; // 제외 타입 

    // Attaching screenshot here
    _shareSheet.AttachScreenShot(); // 스크린샷 공유하기

    // Show composer
    NPBinding.UI.SetPopoverPointAtLastTouchPosition();
    NPBinding.Sharing.ShowView(_shareSheet, FinishedSharing);
}

위 코드는 Cross Platform Native Plugins 가이드에 나온 ShareSheet를 사용해서 스크린샷을 공유하는 코드 입니다. 

_shareSheet.Text = m_shareMessage; 이 부분은 공유하기 할때 입력될 텍스트입니다. 

 

_shareSheet.ExcludedShareOptions = m_excludedOptions; 이 부분은 제외할 서비스나 어플리케이션 타입을 입력하는 부분인데 특별히 제외할게 없다면 아예 코드를 삭제하셔도 상관 없습니다. 

저도 따로 제외할게 없어서 사용하지 않습니다. 

 

_shareSheet.AttachScreenShot (); 이 부분이 스크린샷을 찍는 코드이고 공유하기에서 이 코드를 불러오는 순간의 화면 스크린샷을 공유하게 됩니다. 

 

기본적으로 위 코드만으로 안드로이드와 iOS 둘다 텍스트와 스크린샷 공유하기 기능이 만들어 집니다. 

스크린샷 없이 문자만 공유하고 싶으면 _shareSheet.AttachScreenShot (); 이 부분을 삭제 하면 됩니다. 

private void ShareTextMessageUsingShareSheet ()
{
    // Create share sheet
    ShareSheet _shareSheet     = new ShareSheet();    
    _shareSheet.Text        = m_shareMessage;

    // Show composer
    NPBinding.UI.SetPopoverPointAtLastTouchPosition();
    NPBinding.Sharing.ShowView(_shareSheet, FinishedSharing);
}

이런식으로요. 간단하게 자기가 필요한 기능의 코드만 넣어서 쓰시면 됩니다. 

 

이걸 폰에서 실행해보면

이런식으로 사용자가 앱을 선택해서 공유를 할 수 있게됩니다. 

ShareSheet 이외에 다른 형식의 공유하기에 대해 자세히 알고 싶으시면 

Cross Platform Native Plugins 의 가이드에 Sharing 부분을 참고하시기 바랍니다. 

assetstore.crossplatformnativeplugins.voxelbusters.com/