YSDK快速接入
目录 |
这部分引导开发者快速将YSDK继承到自己的工程中。
Step1. 引入YSDK库
这里根据开发者使用的IDE工具来分别介绍引入方法。
1.1 注意事项
1. 引入YSDK以后编译可能会发生包冲突(重复),因为YSDK已经包含了灯塔SDK(beacon-xxx.jar),buglySDK(bugly-XX.jar)。且上述sdk均是其最新稳定版,游戏如果以前有单独集成这些SDK,请删除之前集成的jar包
2. 版本包中自带的YSDKRes/TencentUnipay.apk不一定为腾讯充值APP的最新版,建议开发者在封版前更新到最新版,(应用宝下载地址为:http://android.myapp.com/myapp/detail.htm?apkName=com.tencent.unipay ),非最新版本并不影响用户的支付行为。
1.2 Eclipse 工程接入
YSDK 推荐游戏使用Android Library方式接入YSDK,既可以隔绝SDK与游戏代码的耦合,而且方便后续的SDK版本更新。YSDK从1.2.0版本开始支持使用Android Library方式引入YSDK。
• Java接入
(1) 复制YSDK-Eclipse下的YSDKLibrary目录到游戏工程相应目录
(2) 在Eclipse中引入YSDKLibrary项目
(3) 右击游戏项目→属性→Android→添加(库)→选择YSDKLibrary,完成对YSDKLibrary的引用
• C++ 工程接入
(1) 复制YSDK-Eclipse下的YSDKLibrary目录到游戏工程相应目录
(2) 在Eclipse中引入YSDKLibrary项目
(3) 右击游戏项目->属性->Android->添加(库)->选择YSDKLibrary,完成对YSDKLibrary的引用
(4) 复制YSDKLibrary下的jni目录下 .cpp 和 .h 文件到游戏工程相应目录,并添加到 Android.mk。
1.3 Android Studio工程接入
• Java接入
(1) 复制YSDK-Android-*.aar目录到游戏工程的libs下
(2) 在游戏项目的build.gradle中添加对YSDK-Android-*.aar的依赖。
• C++ 工程接入
(1) 复制YSDK-Android-*.aar目录到游戏工程的libs下
(2) 在游戏项目的build.gradle中中添加对YSDK-Android-*.aar的依赖。
(3) 复制YSDKDemo下的jni目录下 .cpp 和 .h 文件到游戏工程相应目录。
Step2. YSDK配置修改
2.1 配置文件修改
在YSDKRes/assets/ysdkconf.ini中有游戏相关的各种配置,游戏需要根据自身情况调整为对应的配置。具体配置内容如下:
• 游戏相关配置,游戏需要把下面的三个配置项改为游戏自己的配置
;**************游戏相关配置, 游戏需要根据各自情况修改 START ********** ;游戏的QQAPPID QQ_APP_ID=1104936*** ;游戏的微信APPID WX_APP_ID=wxfcefed3f366f*** ;游戏的OFFER_ID OFFER_ID=110493*** ;***************游戏配置项, 游戏需要根据各自情况修改 END **************
• YSDK相关配置项,游戏需要根据各自情况修改
YSDK域名:ysdktest.qq.com为测试环境域名, ysdk.qq.com为正式环境域名;联调阶段游戏需要使用测试环境,发布时需要切换到正式环境
;************* YSDK相关配置项,游戏需要根据各自情况修改 START ********** ;联调环境 YSDK_URL=https://ysdktest.qq.com ;正式环境 ;YSDK_URL=https://ysdk.qq.com ;************** YSDK相关配置项,游戏需要根据各自情况修改 END **************
备注:
(1)为了防止游戏用非正式环境上线, SDK内检测到游戏使用非正式环境时, 会Toast出类似: “You are using http://ysdk.qq.com” 这样的提示, 游戏切换成正式环境域名以后此提示自动消失。
(2)游戏修改域名的时候只需要将计划使用的域名前的分号删除,注释不需要使用的域名即可。
2.2 AndroidMainfest修改
以下权限是通用的权限声明,需要在application标签外添加(建议参考下载包的Demo修改)
<!-- TODO SDK接入必须权限模块 START --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Step3. YSDK初始化
YSDK初始化是使用SDK所提供功能可以执行的前提。游戏在应用启动时LauncherActivity的onCreate方法中调用YSDK初始化函数onCreate(Activity activity)设置。
C++类游戏除了在MainActivity的onCreate方法中初始化SDK,还要在JNI_OnLoad初始化SDK相关的内容。
3.1 接口声明
/** * YSDK的onCreate方法,游戏在主activity的onCreate调用 * * @param activity * 游戏的主activity的Context */ void onCreate(Activity activity);
3.2 接口调用
• 通用调用
YSDKApi.onCreate(this);
• C++类游戏JNI_OnLoad的写法
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) { //TODO GAME C++层初始化, 必须在游戏主Activity的onCreate之前被调用 YSDKApi::getInstance()->init(vm); return JNI_VERSION_1_4; }
Step4. YSDK全局回调设置
游戏如果没有设置回调会导致游戏无法接收到YSDK的各种回调通知。游戏调用setUserListener、setBuglyListener方法,可实现全局回调。
java类游戏在在应用启动时的MainActivity的onCreate方法中设置即可,C++类游戏需要在JNI_OnLoad中设置。如果游戏同时设置了C++和java层回调,会优先使用java层的回调,具体回调设置相关的代码,请参考YSDK demo
4.1 接口声明
/** * 设置bugly异常上报相关回调 */ void setBuglyListener(YSDKBuglyListener* pListener); /** * 设置用户登录相关回调 */ void setUserListener(YSDKUserListener* pListener);
4.2 java层回调设置
YSDKApi.setUserListener(new YSDKUserListener()); YSDKApi.setBuglyListener(new YSDKBuglyListener());
4.3 C++层回调设置
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) { //TODO GAME C++层初始化, 必须在游戏主Activity的onCreate之前被调用 YSDKApi::getInstance()->init(vm); YSDKApi::getInstance()->setBuglyListener(&gTestBuglyListener); YSDKApi::getInstance()->setUserListener(&gTestUserListener); return JNI_VERSION_1_4; }
Step5. YSDK生命周期设定
游戏需要在游戏的Launcher Activity和Main Activity的部分声明周期函数中同步调用YSDK相关的声明周期函数,YSDK的部分功能依赖声明周期函数,所以游戏需要要同步调用。缺少调用或者调用错误可能会引起登陆收不到回调,登陆中Crash等问题。
5.1 onCreate
游戏需要在Launcher Activity和Main Activity的onCreate方法中调用此接口。
• 接口声明:
void onCreate(Activity activity);
• 接口调用:
YSDKApi.onCreate(this);
5.2 onResume
游戏需要在Main Activity的onResume方法中调用此接口。
• 接口声明:
void onResume(Activity activity);
• 接口调用:
YSDKApi.onResume(this);
5.3 onPause
游戏需要在Main Activityy的onPause方法中调用此接口。
• 接口声明:
void onPause(Activity activity);
• 接口调用:
YSDKApi.onPause(this);
5.4 onStop
游戏需要在Main Activity的onStop方法中调用此接口。
• 接口声明:
void onStop(Activity activity);
• 接口调用:
YSDKApi.onStop(this);
5.5 onDestroy
游戏需要在Main Activity的onDestroy方法中调用此接口。
• 接口声明:
void onDestroy(Activity activity);
• 接口调用:
YSDKApi.onDestroy(this);
5.6 onRestart
游戏需要在Main Activity的onRestart方法中调用此接口。
• 接口声明:
void onRestart(Activity activity);
• 接口调用:
YSDKApi.onRestart(this);
5.7 handleIntent
游戏需要在Launcher Activity的onNewIntent和onCreate方法中调用此接口。
• 接口声明:
void handleIntent(Intent intent)
• 接口调用:
· onCreate:
YSDKApi.handleIntent(this.getIntent());
· onNewIntent
YSDKApi.handleIntent(intent);
5.8 onActivityResult
游戏需要在Main Activity的onActivityResult方法中调用此接口。
• 接口声明:
public static void onActivityResult (int requestCode, int resultCode, Intent data)
• 接口调用:
YSDKApi. onActivityResult(requestCode, resultCode,data);
以上信息是否解决您的问题?