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");
您可以通过使用API筛选出不想接受推送通知的用户。使用之前您应该先通过调用Tapjoy.connect连接Tapjoy SDK。
// To get the current status
bool Tapjoy::isPushNotificationDisabled()
// To set/unset push notification disabled
void Tapjoy::setPushNotificationDisabled(bool)
我们建议在您的app设置页面添加触发开关或检查框界面。
详细信息请参考 这里.
TJPrivacyPolicyHandle policyHandle;
policyHandle = TJPrivacyPolicy::getPrivacyPolicy();
TJPrivacyPolicy::subjectToGDPR(policyHandle,true);
TJPrivacyPolicy::setUserConsent(policyHandle, "1″);
TJPrivacyPolicy::setUSPrivacy(policyHandle, "1YNY");
TJPrivacyPolicy::belowConsentAge(policyHandle, true);
com.android.installreferrer:installreferrer
到 <app_level> build.gradle中。Tapjoy::activateInstallReferrerClient(contex);
。具体实现示例如下:#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
extern "C" void Java_org_cocos2dx_cpp_AppActivity_activateInstallReferrerClient(JNIEnv* jenv,jobject thiz) {
static jobject context = jenv->NewGlobalRef(thiz);
Tapjoy::activateInstallReferrerClient(context);
}
#endif
<your_app_main_activity>.java
调用Native方法。具体实现示例如下public class AppActivity extends Cocos2dxActivity {
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setActivity();
activateInstallReferrerClient();
Tapjoy.setDebugEnabled(true);
}
public native void setActivity();
public native void activateInstallReferrerClient();
static {
Tapjoy.loadSharedLibrary();
}
}