2013-05-28 2 views
4

내 cocos2dx-android 프로젝트에 인앱 결제를 추가하려고합니다. jni를 통해 C++ 클래스에서 java 함수를 호출 할 수 있습니다.내 인앱 결제를 위해 Java (android)에서 C++ (cocos2dx) 메소드 호출

이것은 jni를 통해 내 Java 함수를 호출하는 방법입니다.

JniMethodInfo t; 
     JniHelper::getStaticMethodInfo(t 
       , "com/test/project/Project" 
       , "BuyProduct" 
       , "(Ljava/lang/String;)V"); 

     char buffer[20]; 
     sprintf(buffer,"product1"); 
     jstring StringArg1 = t.env->NewStringUTF(buffer); 

    t.env->CallStaticVoidMethod(t.classID, t.methodID, StringArg1); 

은 인앱 결제는 잘 작동하지만, 지금은 제품 구매가 성공적인지 아닌지 알려 다시 내 C++ 클래스에 전화를해야합니다.

지정된 반환 유형을 언급하지만 비동기 프로세스 인 인앱 프로세스는 많은 메소드 호출을 거치고 동일한 컨트롤로 반환되지는 않습니다. 호출 된 메소드에서 결과를 반환 할 수 있습니다. 방법. 따라서 값을 반환해도 작동하지 않습니다.

그렇다면 값을 (내 경우에는 인앱 구매의 결과로) java 함수에서 내 C++ 클래스로 전달하는 다른 방법이 있습니까 ???

답변

3

cocos2dxHelper.cpp 파일을 확인하여 cocos2dx가 C++ 메소드를 호출하는 방법을 확인하십시오. 기본적으로 만 보통은

public static native blahblah(); 

처럼 보이는하고를 호출하는 경우

Java_org_cocos2dx_cocos2dxHelper_blahblah() 

라는 CPP 파일에서 해당 기능이있다, 정의하지만 구현이 cocos2dxHelper.java의 방법이있다 runOnUIThread (자바 코드)는 C++ 기능

Java_org_cocos2dx_cocos2dxHelper_blahblah() 

에서 blahblah()가 호출된다. 내가 무엇 유 그것을 시도하고 일 extern C { }

+0

그런데

는 C++ 코드는 뭔가를해야합니다. 이름이 Jave_ _ 인 새로운 cpp 클래스를 작성하고 java에서 내 cpp 메소드에 대한 호출을주었습니다. – Komal

+0

이제 컨트롤이 cpp 코드로 돌아와서 모든 텍스트 (CCLabelTTF의 텍스트)가 사라지고 일부 자산이 렌더링되지 않고 대신 나에게 검은 색 블록으로 표시되면 새로운 문제에 직면하게됩니다. 이 점에서해야 할 일은 무엇입니까 ?? – Komal

+0

@Komal 그 문제는 전에 나에게 일어난 일이 아니 어서 많이 도움이되지 못한다. –

관련 문제