Unity3D Baidu Duoku 액티비티 랙 걸리거나 블랙 화면이 뜬다면
현재는 중국 바이두 Duoku 마켓의 심의를 통과한 상태입니다. 얼마전 바이두 1.1.0 SDK로 업데이트 해달라고 해서 넘겨주고 생긴 이슈중에 바이두의 로그인 액티비티나 인앱결제등의 따로 뜨는 액티비티들이 보여질 때 화면이 랙이 걸리거나 액티비티가 검은색 화면으로만 뜬다는 이슈가 있었습니다.
저희 사내 테스트에서는 해당 증상이 없는데 유독 중국에서만 이슈라 스샷도 없네요. 일단 바이두에서는 자기들도 3D 게임 연동은 처음이라며 해결책으로 자꾸 빈 액티비티를 SDK api의 인자로 넘기라고 하더군요. 그래서 func( new Activity() ) 뭐 대충 수도코드로 보자면 이런식으로 넘겼는데 다른 오류만 날뿐 해결되지 않았습니다.
결과적으로 중국 91 마켓 SDK 3.2.5로 버전 업데이트하면서 나왔던 이슈 해결했듯이 액티비티를 위 그림과 같이 추가로 만들어 관련 기능만 간단히 처리하게 해주면 됩니다.
<!-- Duoku -->
<activity android:name="com.wwforever.dk.DuokuLoginActivity" />
<activity android:name="com.wwforever.dk.DuokuPayActivity" />
<activity android:name="com.wwforever.dk.DuokuAccountActivity" />
AndroidManifest.xml에는 당연히 위와 같이 추가해주고요. 물론 액티비티는 하나만 만들고 메소드를 3개로 나눠서 구현해줘도 되겠습니다.
문제는 이렇게해서 생성 호출된 빈 액티비티는 종료를 해줘야하는데요, 종료 시점이
저희 사내 테스트에서는 해당 증상이 없는데 유독 중국에서만 이슈라 스샷도 없네요. 일단 바이두에서는 자기들도 3D 게임 연동은 처음이라며 해결책으로 자꾸 빈 액티비티를 SDK api의 인자로 넘기라고 하더군요. 그래서 func( new Activity() ) 뭐 대충 수도코드로 보자면 이런식으로 넘겼는데 다른 오류만 날뿐 해결되지 않았습니다.
결과적으로 중국 91 마켓 SDK 3.2.5로 버전 업데이트하면서 나왔던 이슈 해결했듯이 액티비티를 위 그림과 같이 추가로 만들어 관련 기능만 간단히 처리하게 해주면 됩니다.
<!-- Duoku -->
<activity android:name="com.wwforever.dk.DuokuLoginActivity" />
<activity android:name="com.wwforever.dk.DuokuPayActivity" />
<activity android:name="com.wwforever.dk.DuokuAccountActivity" />
AndroidManifest.xml에는 당연히 위와 같이 추가해주고요. 물론 액티비티는 하나만 만들고 메소드를 3개로 나눠서 구현해줘도 되겠습니다.
문제는 이렇게해서 생성 호출된 빈 액티비티는 종료를 해줘야하는데요, 종료 시점이
private void DuokuLoginRequest() { // 로그인 요청과 로그인 리스너 등록 DkPlatform.getInstance().dkLogin(this, new OnLoginProcessListener() { @Override public void onLoginProcess(int arg0) { // TODO Auto-generated method stub finish(); } }); }로그인 액티비티의 경우 dkLogin 호출하고 onLoginProcess 콜백을 받아 유니티3D에 로그인 결과를 알려주고나서 finish()를 호출해줍니다.
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); DuokuAccountManager(); finish(); }dkAccountManager는 호출하고 바로 finish를 눌러 액티비티를 종료시켜 줘야합니다.
private void DuokuPayment(int iExchangeRatio, String strMoneyName, int iAmount, String strDesc, String strOrderId) { //1.1.0 int로 변경 및 결제 페이지 종료 리스너 OnExitChargeCenterListener를 인자로 넘긴다. DkPlatform.getInstance().dkUniPayForCoin(this, iExchangeRatio, strMoneyName, this.strOrderSerial, iAmount, strDesc, new OnExitChargeCenterListener() { @Override public void doOrderCheck(boolean arg0, String arg1) { finish(); } }); }마지막으로 바이두 인앱은 결제 창 종료 콜백을 받은 후 유니티3D에 결과를 알려주고 finish()를 해줘야합니다.
댓글
댓글 쓰기