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);

以上信息是否解决您的问题?

Copyright © 1998 - 2018 Tencent. All Rights Reserved.

腾讯公司 版权所有

有问必答 返回顶部