x86_64 r17b r16b r16 r15b r13 para ndk google android-ndk jni in-app-purchase cocos2d-x in-app-billing

android-ndk - r17b - ndk r13



Llamando al método C++(cocos2dx) desde java(android) para mi facturación en la aplicación (1)

compruebe el archivo cocos2dxHelper.cpp para ver cómo cocos2dx llama al método c ++. básicamente hay un método en cocos2dxHelper.java que solo tiene la definición pero no la implementación, por lo general se ve como

public static native blahblah();

y hay una función correspondiente en el archivo cpp llamado

Java_org_cocos2dx_cocos2dxHelper_blahblah()

si llama a blahblah() en código Java con runOnUIThread (), la función c ++

Java_org_cocos2dx_cocos2dxHelper_blahblah()

sera llamado.

por cierto, el código c ++ debe estar en algo extern C { }

Intento agregar facturación en la aplicación en mi proyecto cocos2dx-android. Puedo dar una llamada a la función java desde la clase c ++ a través de jni.

Esta es la forma en que llamo a mi función java a través de jni.

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);

La facturación en la aplicación funciona bien, pero ahora tengo que volver a llamar a mi clase de C ++ para informar si la compra del producto fue exitosa o no.

Podría devolver el resultado del método llamado solo mencionando el tipo de devolución especificada, pero el proceso en la aplicación es un proceso asincrónico: pasa por muchas llamadas a métodos y mi control no se devuelve al mismo método. Entonces, devolver un valor no funcionaría.

Entonces, ¿hay alguna otra forma de pasar un valor (en mi caso, el resultado de la compra en la aplicación) a mi clase de c ++ desde la función java?