gpt4 book ai didi

android-ndk - 从 java(android) 调用 C++(cocos2dx) 方法进行应用内计费

转载 作者:行者123 更新时间:2023-12-01 02:25:27 26 4
gpt4 key购买 nike

我正在尝试在我的 cocos2dx-android 项目中添加应用内计费。我可以通过 jni 从 c++ 类调用 java 函数。

这是我通过 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++ 类?

最佳答案

检查 cocos2dxHelper.cpp 文件,看看 cocos2dx 是如何调用 c++ 方法的。
基本上cocos2dxHelper.java里面有一个方法只有定义没有实现,通常看起来像

public static native blahblah();

在cpp文件中有一个对应的函数叫做
Java_org_cocos2dx_cocos2dxHelper_blahblah()

如果您调用 blahblah()在带有 runOnUIThread() 的 Java 代码中,c++ 函数
Java_org_cocos2dx_cocos2dxHelper_blahblah()

将被调用。

顺便说一句,c++ 代码需要在 extern C { } 中。

关于android-ndk - 从 java(android) 调用 C++(cocos2dx) 方法进行应用内计费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16792562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com