유니티에서 sns로 데이터보내기(공유하기)
2021. 4. 21. 12:36ㆍ개발/유니티
void Share()
{
Texture2D tex = 공유하고자하는 이미지
string filePath = Path.Combine(Application.temporaryCachePath, "shared_img.png");
File.WriteAllBytes(filePath, tex.EncodeToPNG());
Destroy(tex);
//여기엔 sns에 전송할 각각의 텍스트 정보를 적으면 된다.
string subject = "";
string title = "";
string message = "";
AndroidJavaClass jc = new AndroidJavaClass("android.content.Intent");
AndroidJavaObject jo = new AndroidJavaObject("android.content.Intent");
jo.Call<AndroidJavaObject>("setAction", jc.GetStatic<string>("ACTION_SEND"));
jo.Call<AndroidJavaObject>("setType", "image/*");
jo.Call<AndroidJavaObject>("putExtra", jc.GetStatic<string>("EXTRA_SUBJECT"), subject);
jo.Call<AndroidJavaObject>("putExtra", jc.GetStatic<string>("EXTRA_TITLE"), title);
jo.Call<AndroidJavaObject>("putExtra", jc.GetStatic<string>("EXTRA_TEXT"), message);
AndroidJavaClass uc = new AndroidJavaClass("android.net.Uri")
AndroidJavaObject fo = new AndroidJavaObject("java.io.File", filePath);
AndroidJavaObject uo = uc.CallStatic<AndroidJavaObject>("fromFile", fo);
//여기선 원래 우선 경로가 정확한지 검증해주는게 필요하지만 그냥 패스
jo.Call<AndroidJavaObject>("putExtra", jc.GetStatic<string>("EXTRA_STREAM"), uo);
AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
currentActivity.Call("startActivity", jo);
}
간단하게 AndroidJavaClass 혹은 AndroidJavaObject를 이용해 구현할 수 있다.
다만, 안드로이드 11부터 각각의 앱 저장소개념이 분리되는바람에
앨범에 접근하기 위해선 별도의 네이티브 구현이 필요하다.
하지만 앱 자체 영역에서는 큰 문제없이 구현 가능하다.
공유하기위해 이렇게나 코드작성을 해야하고 성능도 저하되는 자바클래스나 오브젝트를 쓰는게 싫다면
https://github.com/yasirkula/UnityNativeShare
이 아저씨의 오픈소스를 활용하는 것도 좋다.
ios도 지원하고 무엇보다도
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();
위의 긴 코드를 쓸 필요없이 이렇게나 간단한 인터페이스를 제공해준다!
'개발 > 유니티' 카테고리의 다른 글
유니티 iOS에 플러그인 연결하기 (0) | 2021.06.21 |
---|---|
스크롤뷰에서 이벤트핸들러 공유하기 (0) | 2021.05.26 |
유니티 발열 이슈에 관한 정리 (0) | 2021.04.16 |
유니티로 안드로이드 갤러리 호출 (3) | 2021.04.13 |
유니티 안드로이드에 so 플러그인 연결하기 (0) | 2021.04.01 |