Tapjoy在使用Android NDK和C++的开发平台上提供C++ API, 比如Cocos2d-x。
Tapjoy Android SDK 提供的C++ API和Tapjoy iOS SDK提供的 C++ API兼容。
Tapjoy SDK里包含提供C++头文件和库的NDK模块。请将Tapjoy NDK Modules路径添加为NDK_MODULE_PATH。
ndk-build NDK_MODULE_PATH=../../TapjoySDK_Android/Library/modules
添加 NDK_MODULE_PATH
到proj.android/build_native.sh
中,通过(:)分割:
# proj.android/build_native.sh
...
if [[ "$buildexternalsfromsource" ]]; then
echo "Building external dependencies from source"
"$NDK_ROOT"/ndk-build -C "$APP_ANDROID_ROOT" $* \
"NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/source:../../TapjoySDK_Android/Library/modules"
else
echo "Using prebuilt externals"
"$NDK_ROOT"/ndk-build -C "$APP_ANDROID_ROOT" $* \
"NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/prebuilt:../../TapjoySDK_Android/Library/modules"
fi
使用如下模块之一:
把您的应用库链接到静态库模块。
添加 fiverocks_static 模块:
在应用的项目中,添加 tapjoy_static
模块到构建Tapjoy API集成源代码的Android.mk
文件中。
```make
...
include $(CLEAR_VARS)
...
LOCAL_STATIC_LIBRARIES := tapjoy_static
...
include $(BUILD_SHARED_LIBRARY)
...
$(call import-module,tapjoy)
...
提供 JavaVM:
`tapjoy_static` 模块需要JavaVM对象,找到`JNI_OnLoad`函数,添加`Tapjoy::setJavaVM` 方法:
```java
#include "TapjoyCpp.h" // Tapjoy C++ API
...
jint JNI_OnLoad(JavaVM *vm, void *reserved) {
...
JniHelper::setJavaVM(vm);
tapjoy::Tapjoy::setJavaVM(vm);
...
}
您也可以使用共享库模块。这不需要JavaVM。
添加 tapjoy_shared
模块:
在应用的项目中,添加 tapjoy_static
模块到构建Tapjoy API集成源代码的Android.mk
文件中:
```make
...
include $(CLEAR_VARS)
...
LOCAL_SHARED_LIBRARIES := tapjoy_shared
...
include $(BUILD_SHARED_LIBRARY)
...
$(call import-module,tapjoy)
...
解决共享库模块的依赖问题:
在加载使用Tapjoy库的应用库之前,调用`Tapjoy.loadSharedLibrary()`:
```java
import com.tapjoy.Tapjoy;
static {
Tapjoy.loadSharedLibrary();
System.loadLibrary("YourAppLibrary");
}
使用 TapjoyCpp.h
头文件:
#include "Tapjoy/TapjoyCpp.h" // Tapjoy C++ API
using namespace tapjoy;
Tapjoy::trackEvent("some event");
详细信息请参考 这里.
TJPrivacyPolicyHandle policyHandle;
policyHandle = TJPrivacyPolicy::getPrivacyPolicy();
TJPrivacyPolicy::subjectToGDPR(policyHandle,true);
TJPrivacyPolicy::setUserConsent(policyHandle, "1″);
TJPrivacyPolicy::setUSPrivacy(policyHandle, "1YNY");
TJPrivacyPolicy::belowConsentAge(policyHandle, true);