MSDK切换YSDK之技术篇
目录 |
1. 环境及权限
YSDK提供两套域名给开发者:
域名名称 | 对应地址 | 使用方法 |
---|---|---|
YSDK正式环境 | https://ysdk.qq.com | 主要用于线上应用 |
YSDK联调环境 | https://ysdktest.qq.com | 主要用于接入或者版本更新时联调 |
这两套域名环境分别对应MSDK的正式和联调域名环境,用法与MSDK的一致,唯一的区别是YSDK为https,MSDK为http。
备注:YSDK的两套环境都有对应的接口权限,当调用接口没有权限时,log会提示 appid not exist。
2. SDK功能
目前YSDK仅提供登陆和支付相关功能具体包括:
(1)登陆:支持手Q、微信登陆。包括授权登陆、自动登录、定时登陆等,这部分和MSDK一致。
(2)支付:YSDK使用midas插件版,目前仅支持游戏使用游戏币模式。客户端提供了充值游戏币接口,后台提供了查余额、扣款、回退的接口。
3. 更新方法
YSDK接入过程中,游戏只需要删除MSDK相关的资源,然后按照YSDK资源引入的方式引入YSDK的资源即可。下面是删除MSDK相关内容的流程:
• 删除libs目录下相关jar,包括但不限于:
android-support-v4.jar,jg_filter_sdk_*.jar,mid-sdk-*.jar,Xg_sdk_*.jar,MSDK_Android_*.jar
如果游戏自身代码使用到上面列举的jar,请保留不要删除。
• 删除libs目录下相关的so,包括但不限于armeabi、armeabi-v7a、x86、x86_64、armeabi-v8a目录下:
libBugly.so、libtpnsSecurity.so、libtpnsWatchdog.so、libMSDK.so
• 删除jni目录以及下面CommonFiles目录下相关jni文件,包括但不限于:
· 所有以com_tencent_msdk开头的.h和.cpp
· 所有以WG开头的的.h和.cpp。例如WGCommon、WGPlatform、WGSaveUpdateObserver、WGADObserver、WGGroupObserver、WGPlatformObserver、WGPublicDefine
• 删除Res目录下各级目录中相关资源文件,包括但不限于:
· 所有以msdk开头的xml
· 所有以com_tencent_msdk开头的xml
• 删除assets目录下相关配置文件,包括但不限于:
· adconfig.ini
· channel.ini
· msdkconfig.ini
4. 配置文件
4.1 AndroidMainfest修改
目前YSDK仅提供微信和手Q相关的功能,因此游戏可以删除原有权限中MSDK相关的但是下面不包含的剩余内容。
4.1.1 关于YSDK需要的权限
YSDK 在运行时仅需要应用授权以下权限,游戏可以结合自身需求修改对应的android权限申明:
<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" />
4.1.2 手Q相关的声明
<!-- TODO SDK接入 QQ接入配置 START --> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent游戏的手Q appid" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|screenSize|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- TODO SDK接入 QQ接入配置 END -->
4.1.3 微信相关声明
<!-- TODO SDK接入 微信接入配置 START --> <activity <!-- 注意:此处应改为 游戏包名.wxapi.WXEntryActivity --> android:name="com.tencent.tmgp.yybtestsdk.wxapi.WXEntryActivity" android:excludeFromRecents="true" android:exported="true" android:label="WXEntryActivity" android:launchMode="singleTop" <!-- 注意:此处应改为 游戏包名.diff --> android:taskAffinity="com.tencent.tmgp.yybtestsdk.diff"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <!-- 注意:此处应改为 游戏的微信appid --> <data android:scheme="wxfcefed3f366fa606" /> </intent-filter> </activity> <!-- TODO SDK接入 微信接入配置 END -->
4.1.4 支付相关声明
<!-- TODO SDK接入 接入支付需要设置屏幕兼容声明 START --> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" /> <!-- TODO SDK接入 接入支付需要设置屏幕兼容声明 END -->
4.2 SDK相关配置
这部分内容建议游戏直接删除前面列出的assets下面的adconfig.ini、channel.ini、msdkconfig.ini三个文件,直接拷入YSDK的配置文件ysdkconf.ini文件(如下),然后修改为游戏对应的配置。目前YSDK仅有如下配置,没有其余配置信息。
;**************游戏相关配置, 游戏需要根据各自情况修改 START ********** ;游戏的QQAPPID QQ_APP_ID=1104936*** ;游戏的微信APPID WX_APP_ID=wxfcefed3f366*** ;游戏的OFFER_ID OFFER_ID=1104936*** ;***************游戏配置项, 游戏需要根据各自情况修改 END ************** ;************* YSDK相关配置项,游戏需要根据各自情况修改 START ********** ;联调环境 YSDK_URL=https://ysdktest.qq.com ;正式环境 ;YSDK_URL=https://ysdk.qq.com ;************** YSDK相关配置项,游戏需要根据各自情况修改 END **************
5. 初始化
5.1 SDK的初始化
MSDK初始化的代码为:
MsdkBaseInfo baseInfo = new MsdkBaseInfo(); baseInfo.qqAppId = "100703379"; baseInfo.qqAppKey = "4578e54fb3a1bd18e0681bc1c734514e"; baseInfo.wxAppId = "wxcde873f99466f74a"; baseInfo.msdkKey = "5d1467a4d2866771c3b289965db335f4"; baseInfo.offerId = "100703379"; WGPlatform.Initialized(this, baseInfo); // 设置拉起QQ时候需要用户授权的项 WGPlatform.WGSetPermission(WGQZonePermissions.eOPEN_ALL);
YSDK 的初始化只需要游戏launcherActivity的onCreate调用:
YSDKApi.onCreate(this);
5.2 SDK的声明周期函数调用
下面是MSDK的声明周期函数与YSDK声明周期函数的调用对照。游戏需要在对应的位置将WGPlatform的函数改为YSDKApi的
YSDK声明周期函数 | MSDK生命周期函数 | 函数调用位置 |
---|---|---|
onCreate | 无 | launcherActivity的onCreate,也即YSDK的初始化 |
onResume | onResume | 主Activity的onResume |
onPause | onPause | 主Activity的onPause |
onStop | onStop | 主Activity的onStop |
onDestroy | onDestroy | 主Activity的onDestroy |
onRestart | onRestart | 主Activity的onRestart |
onActivityResult | onActivityResult | launcherActivity的onActivityResult |
handleIntent | handleCallback | 在launcherActivity的onNewIntent和onCreate方法中调用 |
5.3 全局回调设置
MSDK目前提供了多个全局回调,YSDK只涉及其中两个,用法一致。具体如下:
YSDK全局回调 | MSDK全局回调 | 对应功能 |
---|---|---|
YSDKUserListener | WGPlatformObserver | YSDK的回调仅包含MSDK对应的login、wakeup、relation这三个 |
YSDKBuglyListener | WGPlatformObserver | YSDK的回调仅包含SDK对应的OnCrashExtMessageNotify |
对应的YSDK的回调的设置也会有两个函数setUserListener、setBuglyListener对应MSDK的setObserver。
6. 客户端接口
这部分内容主要列举一下MSDK客户端接口与YSDK客户端接口对应关系,以及对应的功能。声明周期的函数因为已经说过,再不重复。
YSDK接口 | MSDK接口 | 接口功能 |
---|---|---|
getVersion | WGGetVersion | 获取SDK版本 |
getChannelId | WGGetChannelId | 获取安装渠道 |
getRegisterChannelId | WGGetRegisterChannelId | 获取用户注册渠道,需要登录后调用 |
isPlatformInstalled | WGIsPlatformInstalled | 检查手Q或者微信是否安装 |
getPlatformAppVersion | WGGetPlatformAPPVersion | 获取当前手机安装的手Q或者微信版本 |
login | WGLogin | 用户登录 |
logout | WGLogout | 注销登录 |
getLoginRecord | WGGetLoginRecord | 获取本地票据 |
getPfKey | WGGetPfKey | 获取pfkey,需要登录后调用 |
getPf | WGGetPf | 获取pf,需要登录后调用 |
switchUser | WGSwitchUser | 异账号切换,游戏需要在wakeupNotify返回 |
queryUserInfo | WGQueryQQMyInfo | 查询用户个人信息 |
reportEvent | WGReportEvent | 上报自定义事件 |
recharge | 用户充值 |
以上信息是否解决您的问题?