티스토리 뷰
일단 유니티 자체적으로 국가코드를 불러올 수 있는 방법은 없는 것 같아요.
우회적인 방법으로 언어 기반으로 간접적으로 알 수 있지만 신뢰도가 낮지요.
그래서 좀 더 신뢰도 높은 정보를 가져오려면 어떻게 해야하는지 정리하는 글입니다.
------------------
1. 유니티에서 AAR 혹은 JAR 사용하기
유니티 메뉴얼에서 AAR플러그인 관련 문서입니다.
https://docs.unity3d.com/kr/2017.4/Manual/AndroidAARPlugins.html
다음은 JAR플러그인임.
https://docs.unity3d.com/kr/2017.4/Manual/AndroidJARPlugins.html
여기서 가져와서 해야됨.
네이티브 플러그인을 사용하지 않는 방법도 있겠지만
권한관련 이슈때문에 지양하고 있는 상태.
현재 PHONE_STATE_READ 권한을 쓰지 않고서 해결하고 싶다!
암튼 여기서 부터 시작해야함.
그럴려면 안드로이드 스튜디오에서 플러그인 만드는 것부터 알아야할 것 같음.
2. 플러그인 만들기.
2.0. 뻘짓
구글링을 통해 이것저것 살펴보았으나 여러가지 호환의 문제와 지식의 문제 때문에 제대로 적용하지 못하는 상태... 눈물을 머금고 뻘짓 후 괜찮은 참고자료를 찾음.
2.1. aar 튜토리얼
https://medium.com/jasons-devblog/creating-an-aar-plugin-for-unity-31ed219cb7f5
여기서 참고해서 만들기로 함.
일단 Toast 메세지를 띄우는 것을 먼저 성공 시킨 다음에 국가 코드 찾기 하려고 함.
여기서 꽤 오랜시간 동안 헤맸는데 안드로이드 리졸브 때문에 안된 듯...
내 프로젝트 안에 안드로이드 플러그인이 여러가지 있는데 (파이어베이스나 gpgs라든지...)
이런것들이 서로 꼬여서 그런지 내가 만든 플러그인이 잘 적용이 안됐다.
그러다 Force Resolve 하니까 제대로 동작 (Force가 아니었을 땐 잘 안되었음)
Toast 메세지 띄우는 것을 성공하였다!
링크 안에 해당 내용이 그대로 있으니 참조 하시길...
이제 국가 코드 얻어오는 것을 하면 된다!
2.2. 안드로이드에서 국가 코드 얻기.
권한 이슈 때문에 단말기 유심의 정보를 얻어오는 것을 해야한다.
나의 네이티브 플러그인에서의 코드는 다음과 같이 했다.
package com.my.secondplugin;
import android.content.Context;
import android.telephony.TelephonyManager;
import android.widget.Toast;
import com.unity3d.player.UnityPlayer;
public class CountryCode{
public static Context unityContext;
public static void SetContext(Context context){
unityContext = context;
}
public static void GetCountryCode(){
String countryCode;
TelephonyManager telephony = (TelephonyManager) unityContext.getSystemService(Context.TELEPHONY_SERVICE);
countryCode = telephony.getNetworkCountryIso();
UnityPlayer.UnitySendMessage("AndroidPluginReceiver", "ReceiveCountryCode", countryCode);
}
public static void SendToast(String message){
Toast.makeText(unityContext, message, Toast.LENGTH_LONG).show();
}
}
유니티 내에서 CallStatic으로 이 플러그인의 GetCountryCode를 호출하면 플러그인이 유니티에 접근해서 메서드를 부르는 방식이다.
여기에선 플러그인이 "AndroidPluginReceiver" 라는 게임 오브젝트에 접근하고 (씬에 꼭 만들어놔야한다.)
해당 오브젝트 안에 어싸인된 스크립트에서 ReceiveCountryCode 메서드에 string 파라미터를 들고 호출하게끔 만들었다.
그런데 이 과정에서 여러가지 이슈가 많이 발생해서 어려움이 좀 있긴했다.
이 플러그인은 usim이 없는 기기에서는 제대로 작동하지 않는다.
따라서 나도 정보를 못 받았을 경우에는 시스템랭귀지로 접근해서 코드를 가져오는 것으로 하였다...
ㅠㅠ 역시 완벽하게 되기는 힘들구만.
'개발일기 > 유니티3D' 카테고리의 다른 글
유니티용 머지정렬 만듬 (0) | 2021.04.08 |
---|---|
유니티 multidex 설정이 안되길래 확인해보니... (0) | 2020.09.14 |
LayerMask 와 비트연산... (0) | 2019.06.03 |
유니티에서 Spine 사용하기 스크립트편 (0) | 2019.05.23 |
Unite Seoul 2019 다녀옴 (0) | 2019.05.23 |