Skip to content

Instantly share code, notes, and snippets.

@cliffgr
Created January 8, 2019 12:27
Show Gist options
  • Save cliffgr/b90ce885dfe2056bee813fd068c7cfd4 to your computer and use it in GitHub Desktop.
Save cliffgr/b90ce885dfe2056bee813fd068c7cfd4 to your computer and use it in GitHub Desktop.
//
// Created by ka on 1/7/2019.
//
#include <clocale>
#include <jni.h>
#include <platform/android/jni/JniHelper.h>
#include "WappierSDK.h"
WappierSDK *WappierSDK::s_WappierSDK = nullptr;
WappierSDK *WappierSDK::getInstance() {
if (nullptr == s_WappierSDK) {
s_WappierSDK = new WappierSDK();
}
return s_WappierSDK;
}
WappierSDK::WappierSDK() {
joAndroidInstance =getWappierInstance();
}
jobject WappierSDK::getWappierInstance(){
JNIEnv *env = cocos2d::JniHelper::getEnv();
jclass someClass = env->FindClass("com/wappier/wappierSDK/Wappier");
if (someClass == NULL) {
env->ExceptionClear();
} else {
jmethodID javaMethodInit = env->GetStaticMethodID(someClass, "getInstance",
"()Lcom/wappier/wappierSDK/Wappier;");
if (javaMethodInit == NULL) {
env->ExceptionClear();
} else {
return env->CallStaticObjectMethod(someClass, javaMethodInit);
}
}
}
void WappierSDK::trackAction(const char *text) {
}
jobject WappierSDK::startSession(const char *appToken) {
JNIEnv *env = cocos2d::JniHelper::getEnv();
jclass someClass = env->FindClass("com/wappier/wappierSDK/Wappier");
jobject wappierInstance= getWappierInstance();
if (someClass == NULL) {
env->ExceptionClear();
} else {
jmethodID startSessionMethod = env->GetMethodID(someClass, "startSession",
"(Landroid/content/Context;Ljava/lang/String;)Lcom/wappier/wappierSDK/Wappier;");
if (startSessionMethod == NULL) {
env->ExceptionClear();
} else {
jobject context = getGlobalContext(env);
joAndroidInstance = env->CallObjectMethod(wappierInstance, startSessionMethod,
context,
appToken);
}
}
return wappierInstance;
}
jobject WappierSDK::getGlobalContext(JNIEnv *env) {
jclass activityThread = env->FindClass("android/app/ActivityThread");
jmethodID currentActivityThread = env->GetStaticMethodID(activityThread,
"currentActivityThread",
"()Landroid/app/ActivityThread;");
jobject at = env->CallStaticObjectMethod(activityThread, currentActivityThread);
jmethodID getApplication = env->GetMethodID(activityThread, "getApplication",
"()Landroid/app/Application;");
return env->CallObjectMethod(at, getApplication);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment