본문 바로가기
Unity

Unity Social service 공유 하기 기능 구현하기

by OK강프로 2021. 4. 11.
반응형

안녕하세요. 각종 Social service에 Text나 Image를 공유하는 use case가 있습니다.

Android , iOS 플랫폼에서 Social service에 공유 기능을 쉽게 할 수 있는 Asset을 이용해 구현해보겠습니다.

공유 기능에 사용한 plugin은 UnityNativeShare입니다.

github.com/yasirkula/UnityNativeShare

 

yasirkula/UnityNativeShare

A Unity plugin to natively share files (images, videos, documents, etc.) and/or plain text on Android & iOS - yasirkula/UnityNativeShare

github.com

위의 깃헙 페이지에 가서 Release tab에 가서, Package 파일을 다운로드하여 사용도 가능하며, 해당 Plugin은 Unity Asset store 무료로 배포되어있습니다.

 

저는 Test할 때에 Asset store 검색해서 작업하고 있는 프로젝트에 Import 했습니다. 

 

void Update()
{
	if( Input.GetMouseButtonDown( 0 ) )
		StartCoroutine( TakeScreenshotAndShare() );
}

private IEnumerator TakeScreenshotAndShare()
{
	yield return new WaitForEndOfFrame();

	Texture2D ss = new Texture2D( Screen.width, Screen.height, TextureFormat.RGB24, false );
	ss.ReadPixels( new Rect( 0, 0, Screen.width, Screen.height ), 0, 0 );
	ss.Apply();

	string filePath = Path.Combine( Application.temporaryCachePath, "shared img.png" );
	File.WriteAllBytes( filePath, ss.EncodeToPNG() );

	// To avoid memory leaks
	Destroy( ss );

	new NativeShare().AddFile( filePath )
		.SetSubject( "Subject goes here" ).SetText( "Hello world!" ).SetUrl( "https://github.com/yasirkula/UnityNativeShare" )
		.SetCallback( ( result, shareTarget ) => Debug.Log( "Share result: " + result + ", selected app: " + shareTarget ) )
		.Share();

	// Share on WhatsApp only, if installed (Android only)
	//if( NativeShare.TargetExists( "com.whatsapp" ) )
	//	new NativeShare().AddFile( filePath ).AddTarget( "com.whatsapp" ).Share();
}

 

사용법은 매우 쉽습니다.  위의 코드는 Github Readme.md에 설명되어있는 부분을 가져온것인데요. 

예제 코드에서는 화면을 Screen shot한 이미지를 Title과 text, URL과 함께 공유하는 코드입니다 

 

해당 코드를 참고해서 만든 간단한 Sample입니다 

 

 

해당 플러그인을 사용한 Sample code는 아래의 깃헙을 참고하세요 감사합니다 

github.com/superbderrick/UnitySocialShare

 

반응형