国内游戏对接文档--安卓
版本
当前版本1.4.4
SDK功能
1.登录,切换账号,登出,退出登录。 2.实名认证 3.支付 4.广告 5.上报游戏角色信息,上报游戏事件 6.分享
1.SDK接入前准备工作
1.1接入前准备工作:发行中间层提供参数说明(参数由发行层技术提供)
参数 | 类型 | 参数描述 |
---|---|---|
game_id | string | 发行中间层分配的游戏id |
appKey | string | 发行中间层分配的游戏key |
appSecret | string | 发行中间层分配的游戏secret |
url | string | 发行中间层的服务端域名 |
1.2 功能流程说明
1.2.1 实名认证流程
2.SDK快速接入
2.1 开发环境
1.com.android.tools.build:gradle 3.2.1 版或更高版本,build.gradle需要添加以下几个依赖
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation "com.android.support:support-v4:28.0.0"
implementation "com.android.support:cardview-v7:28.0.0"
implementation "com.android.support:recyclerview-v7:28.0.0"
implementation "android.arch.lifecycle:extensions:1.1.1"
implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.18"
}
2.SDK相关的jar包
①.把libs下面的.jar复制到游戏工程的libs下,并添加引用;包含android-support-multidex.jar,u8sdk3.jar,dx-risk-5.7.2.jar和armeabi-v7a;
②把assets里面的文件放到游戏工程对应的assets里面
2.2 Application 配置
方式一:如果游戏层没有自己的Application,那么游戏需要将AndroidManifest.xml中的application指定为 com.u8.sdk.U8Application。
<application
android:name="ccom.u8.sdk.U8Application"
··· >
···
</application>
方式二:如果游戏有自己的Application,则可以看我们的自定义Application
1.游戏中AndroidManifest.xml中,将application节点的android:name属性设置为 com.u8.sdk.U8Application
2.如果游戏有自己的Application需求,或者需要在Application的生命周期方法中,做一些操作。 那么可以实现IApplicationListener里面的接口。
3.上面定义了游戏的Application,紧接着,在AndroidManifest.xml中,将上面我们定义的GameProxyApplication,配置到meta-data中,android:name为U8_Game_Application。
比如,我们定义一个GameProxyApplication实现IApplicationListener接口:
<application
···
android:name="com.u8.sdk.U8Application" >
<meta-data android:name="U8_Game_Application" android:value="com.u8.sdk.test.GameProxyApplication" />
···
</application>
2.3 SDK初始化
$\color{red}{ 所有接口调用,都通过com.u8.sdk.platform.U8Platform 单例类来调用}$
该方法必须在游戏启动Activity的onCreate方法中,调用
U8Platform.getInstance().init(this, new U8InitListener() {
@Override
public void onSwitchAccount(UToken data) {
//游戏中通过SDK切换到新账号的回调,游戏收到该回调,需要引导用户重新登录,重新加载该新用户对应的角色数据
//UToken中的参数如下:
//userID:U8Server生成的唯一用户ID,
//sdkUserID:渠道SDK平台用户唯一ID,游戏服务器需要将游戏账户ID和该sdkUserID进行绑定。
//isVistor:是否是游客账号,true 是;false 不是
//username:U8Server生成的用户名,
//sdkUserName:渠道SDK平台用户名,可能为空,部分渠道SDK没有返回用户名
//token:U8Server生成的会话ID,游戏服务器拿该字段去U8Server做二次登录验证
//extension:U8Server返回的扩展字段,部分渠道SDK需要,游戏中无需使用该字段的值
//timestamp:U8Server生成的时间戳,游戏服务器去U8Server做二次登录验证时,传给U8Server
//isCustomRealName 是否游戏自定义实名认证界面 true 是;false 不是
//idcardStatus 玩家身份状态 0:没有身份认证; 1:小于8岁; 2:大于8岁小于16岁;3:大于18岁;4:假身份(格式符合要求的身份证);5:大于16岁小于18岁
}
@Override
public void onPayResult(int code, String msg) {
Log.d("U8SDK", "pay result. code:"+code+";msg:"+msg);
switch(code){
case U8Code.CODE_PAY_SUCCESS:
//支付成功
break;
case U8Code.CODE_PAY_FAIL:
//支付失败
break;
case U8Code.CODE_PAY_CANCEL:
//支付取消
break;
case U8Code.CODE_PAY_UNKNOWN:
//支付未知错误
break;
}
}
@Override
public void onLogout() {
//用户登出回调(需要收到该回调需要返回游戏登录界面,并调用login接口,打开SDK登录界面)
}
@Override
public void onLoginResult(int code, UToken data) {
switch(code){
case U8Code.CODE_LOGIN_SUCCESS:
//登录成功
//进入游戏
//从UToken中获取用户信息
//渠道SDK登录并去u8server登录认证成功,会回调改方法。
//UToken中的参数如下:
//userID:U8Server生成的唯一用户ID,
//sdkUserID:渠道SDK平台用户唯一ID,游戏服务器需要将游戏账户ID和该userID进行绑定。
//isVistor:是否是游客账号,true 是;false 不是
//username:U8Server生成的用户名,
//sdkUserName:渠道SDK平台用户名,可能为空,部分渠道SDK没有返回用户名
//token:U8Server生成的会话ID,游戏服务器拿该字段去U8Server做二次登录验证
//extension:U8Server返回的扩展字段,部分渠道SDK需要,游戏中无需使用该字段的值
//timestamp:U8Server生成的时间戳,游戏服务器去U8Server做二次登录验证时,传给U8Server
//isCustomRealName 是否游戏自定义实名认证界面 true 是;false 不是
//idcardStatus 玩家身份状态 0:没有身份认证; 1:小于8岁; 2:大于8岁小于16岁;3:大于18岁;4:假身份(格式符合要求的身份证);5:大于16岁小于18岁
//shareOpen 是否开启分享功能 0.不开启 1.开启
break;
case U8Code.CODE_LOGIN_FAIL:
//登录失败
break;
}
}
@Override
public void onInitResult(int code, String msg) {
Log.d("U8SDK", "init result.code:"+code+";msg:"+msg);
switch(code){
case U8Code.CODE_INIT_SUCCESS:
//初始化成功
break;
case U8Code.CODE_INIT_FAIL:
//初始化失败
break;
}
}
@Override
public void onShareResult(int code, String msg) {
Log.d("U8SDK", "share result.code:"+code+";msg:"+msg);
switch(code){
case U8Code.CODE_SHARE_SUCCESS:
//分享成功
break;
case U8Code.CODE_SHARE_FAILED:
//分享失败
break;
}
}
@Override
public void onBindAccountResult(int code, String s) {
switch(code){
case U8Code.CODE_BIND_SUCCESS:
Log.d("U8SDK", "onBindAccountResult.code:"+code+";msg:绑定成功");
//绑定成功的回调,sdhk内部绑定成功回调此函数
break;
}
}
@Override
public void onRealNameResult(int code, int idCardState) {
switch(code){
case U8Code.CODE_REALNAME_SUCCESS:
Log.d("U8SDK", "onRealNameResult:"+code+";msg:实名认证成功");
//实名认证成功的回调 ,sdk内部实名成功和实名认证接口实名成功都会收
//到此回调
//idCardState 实名认证状态,0:没有身份认证; 1:小于8岁;
//2:大于8岁小于18岁;3:大于18岁;4:假身份(格式符合要求的身份证);
//5大于16岁小于18岁
break;
}
}
@Override
public void onProductQueryResult(List<ProductQueryResult> result) {
}
});
2.4 生命周期函数(必接)
在游戏启动Activity的如下生命周期函数中,调用对应的方法。
public void onActivityResult(int requestCode, int resultCode, Intent data){
U8SDK.getInstance().onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
public void onStart(){
U8SDK.getInstance().onStart();
super.onStart();
}
public void onPause(){
U8SDK.getInstance().onPause();
super.onPause();
}
public void onResume(){
U8SDK.getInstance().onResume();
super.onResume();
}
public void onNewIntent(Intent newIntent){
U8SDK.getInstance().onNewIntent(newIntent);
super.onNewIntent(newIntent);
}
public void onStop(){
U8SDK.getInstance().onStop();
super.onStop();
}
public void onDestroy(){
U8SDK.getInstance().onDestroy();
super.onDestroy();
}
public void onRestart(){
U8SDK.getInstance().onRestart();
super.onRestart();
}
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
U8SDK.getInstance().onRequestPermissionResult(requestCode, permissions, grantResults);
}
备注:以下接口,根据游戏类型,选择性调用,最好在对接前向技术了解清楚哪些接口是必接的。
2.5 网游版登录接口(网游版游戏必接)
调用登录接口,打开SDK登录界面,登录成功或者失败,会触发上面初始化监听器中的onLoginResult回调函数
接口:
public void login(Activity context);
调用方式:
U8Platform.getInstance().login(context);
2.6 登出接口(选接)
调用登出接口, SDK账户登出, 但是不是每个SDK都具有登出逻辑,对应没有提供登出接口的SDK,调用该函数,什么也不操作
接口:
public void logout();
调用方式:
U8Platform.getInstance().logout();
2.7 退出游戏(必接)
当玩家点击手机上返回键或者游戏中【退出游戏】按钮时,部分渠道SDK会弹出一个“退出确认对话框”,让玩家确认退出,或者取消退出
游戏层需要在U8ExitListener的onGameExit中, 来调用游戏自己的退出游戏确认弹窗(对于没有提供退出确认弹窗接口的SDK,会触发该回调)
接口:
public void exitSDK(final U8ExitListener callback);
调用方式:
U8Platform.getInstance().exitSDK(new U8ExitListener() {
@Override
public void onGameExit() {
//游戏自己的退出确认框,这个是示例,游戏可以按照游戏自己的风格写弹框
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("退出确认");
builder.setMessage("主公,现在还早,要不要再玩一会?");
builder.setCancelable(true);
builder.setPositiveButton("好吧",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int whichButton) {
//这里什么都不用做
}
});
builder.setNeutralButton("一会再玩",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int whichButton) {
//退出游戏
MainActivity.this.finish();
System.exit(0);
}
});
builder.show();
}
});
2.8 上报游戏角色信息(必接)
$\color{red}{备注:此接口需要在sdk登录成功之后调用(单机版的登录接口是djChannelAccount,网游版的登录接口是login)}$
部分渠道要求在 1:选择服务器; 2:创建角色; 3:进入游戏; 4:等级提升; 5:退出游戏(游戏有就上报); 10:设备进入游戏; 11:设备开始进服; 12:其他事件(设备加载过程,角色完成引导等游戏自己决定)等时刻,必须要上报游戏中玩家数据,以便渠道后台统计用户数据。所以,游戏层需要在特定的地方多次调用该方法。
接口:
public void submitExtraData(UserExtraData extraData)
调用方式:
UserExtraData data = new UserExtraData();
data.setDataType(UserExtraData.TYPE_CREATE_ROLE);
data.setMoneyNum(100);
data.setRoleCreateTime(System.currentTimeMillis()/1000);
data.setRoleID("role_100");
data.setRoleName("test_112");
data.setRoleLevel("10");
data.setRoleLevelUpTime(System.currentTimeMillis()/1000);
data.setServerID(10);
data.setServerName("server_10");
U8Platform.getInstance().submitExtraData(data);
UserExtraData中的dataType类型如下:
public static final int TYPE_SELECT_SERVER = 1; //选择服务器
public static final int TYPE_CREATE_ROLE = 2; //创建角色
public static final int TYPE_ENTER_GAME = 3; //进入游戏
public static final int TYPE_LEVEL_UP = 4; //等级提升
public static final int TYPE_EXIT_GAME = 5; //退出游戏
public static final int TYPE_AD_EVENT = 6; //广告播放成功
public static final int TYPE_DEVICE_ACTIVE = 7; //设备启动
public static final int TYPE_PID_EVENT = 8; //渠道登录成功
public static final int TYPE_BIND_THIRED = 9; //绑定第三方
public static final int TYPE_DEVICE_ENTER_GAME =10; //设备进入游戏
public static final int TYPE_DEVICE_ENTER_SERVICE =11; //设备开始进服
public static final int TYPE_OTHER_EVENT =12; //其他事件
public static final int TYPE_CHANGE_ROLE_NAME =13; //修改角色昵称
游戏必须要调用的类型如下:
1:选择服务器; 2:创建角色; 3:进入游戏; 4:等级提升; 5:退出游戏(可以不上报); 10:设备进入游戏; 11:设备开始进服; 12:其他事件(可以不上报); 13:修改角色昵称。
关于UserExtraData 数据结构:
参数名称 参数类型 参数说明
dataType int 调用时机
serverID String 玩家所在服务器的ID
serverName String 玩家所在服务器的名称
roleID String 玩家角色ID
roleName String 玩家角色名称
roleLevel String 玩家角色等级
moneyNum String 当前角色身上拥有的游戏币数量
roleCreateTime long 角色创建时间,单位秒,必须传入真实的数据
roleLevelUpTime long 角色等级变化时间,从1970年到现在的时间,单位秒
vip String 玩家VIP等级
2.9 支付充值
调用充值接口,打开SDK充值界面。 充值成功或者失败,会触发上面初始化监听器中的onPayResult接口
接口:
public void pay(Activity context, final PayParams data);
调用方式:
PayParams params = new PayParams();
params.setBuyNum(1); //购买数量,固定1
params.setCoinNum(100); //当前玩家身上拥有的游戏币数量
params.setExtension(System.currentTimeMillis()+""); //游戏自定义数据,充值成功,回调游戏服的时候,会原封不动返回,长度不超过255
params.setPrice(1); //单位 整数 元
params.setProductId("1"); //产品ID
params.setProductName("元宝"); //产品名称
params.setProductDesc("购买100元宝"); //产品描述
params.setRoleId("1"); //角色ID
params.setRoleLevel(1); //角色等级
params.setRoleName("测试角色名"); //角色名称
params.setServerId("10"); //服务器ID
params.setServerName("测试"); //服务器名称
params.setVip("vip1"); //角色VIP等级
params.setPayNotifyUrl("http://www.game.com/pay/callback"); //支付成功,U8Server异步通知该地址,告诉游戏服务器发货
params.setSkuType("inapp");//商品类型,订阅商品"subs";普通商品"inapp",google支付用到,其余支付不会用到
List<String> product_details = new ArrayList<>();
JSONObject product_detail_1 = new JSONObject();
product_detail_1.put("mj_daoju_id","ceshi_1");//道具id,游戏自己定义
product_detail_1.put("mj_daoju_name","daoju_1");//道具名称,游戏自己定义
product_detail_1.put("mj_daoju_type","daoju_type_1");//道具类型,游戏自己定义
product_detail_1.put("mj_daoju_value",0.01);//道具价值,游戏自己定义
product_details.add(product_detail_1.toString());
JSONObject product_detail_2 = new JSONObject();
product_detail_2.put("mj_daoju_id","ceshi_2");
product_detail_2.put("mj_daoju_name","daoju_2");
product_detail_2.put("mj_daoju_type","daoju_type_2");
product_detail_2.put("mj_daoju_value",0.01);
product_details.add(product_detail_2.toString());
params.setProduct_detail(product_details.toString());//商品的道具列表
U8Platform.getInstance().pay(this, params);
关于PayParams对象:
参数名称 参数类型 参数说明
productId String 充值商品ID,游戏内的商品ID
productName String 商品名称,比如100元宝,500钻石...
productDesc String 商品描述,比如 充值100元宝,赠送20元宝
price int 充值金额(单位:元)
buyNum int 购买数量,一般都是1
coinNum int 玩家当前身上剩余的游戏币
serverID String 玩家所在服务器的ID
serverName String 玩家所在服务器的名称
roleID String 玩家角色ID
roleName String 玩家角色名称
roleLevel String 玩家角色等级
vip String 玩家vip等级
payNotifyUrl String 游戏服务器支付回调地址,渠道SDK支付成功,异步通知U8Server,U8Server根据该地址,通知游戏服务器发货
extension String 支付成功之后,U8Server原样返回给游戏服务器,长度不超过255
skuType String 商品类型,订阅商品"subs";普通商品"inapp",google支付用到,其余支付不会用到
product_detail String 商品的道具列表,道具信息请按照上面示例传参(非必传)
2.10 单机版登录接口(单机版游戏—必接)
调用单机版登录接口,登录成功或者失败,会触发上面初始化监听器中的onLoginResult回调函数
接口:
public void djChannelAccount(String account);
参数
account 设备号或者账号标识,游戏里生成的唯一标识
调用方式:
U8Platform.getInstance().djChannelAccount(account);
其他拓展性接口
2.11 实名认证接口
调用实名认证接口,认证的结果是通过监听器中的OnRealNameVerifyListener回调函数获取。认证成功回调onRealNameVerifySuccess,携带认证状态;认证失败回调onRealNameVerifyFail,携带失败的错误code和错误msg
接口:
public void realNameVerify(String realName, String idCard, OnRealNameVerifyListener onRealNameVerifyListener);
调用方式:
U8Platform.getInstance().realNameVerify(realName,idCard,onRealNameVerifyListener );
参数:
realName:姓名
idCard:身份证号
onRealNameVerifyListener:认证回调
回调函数:
public interface OnRealNameVerifyListener {
/**
* 实名认证成功
*/
public void onRealNameVerifySuccess(int idCardState);
/**
* 实名认证失败
* errorCode 错误码
* errorMsg 错误信息 ,1参数错误,5,请填写正确的姓名6,请填写正确的身份证7,您的实名已超限制8,您的实名IP已超限制9,请填写正确的身份证信息10,其他错误
*/
public void onRealNameVerifyFail(int errorCode, String errorMsg);
}
2.12 用户中心
部分渠道会提供用户中心界面显示用户信息,调用此接口可以拉起渠道的用户中心界面,在用户中心界面会有相应的绑定和切换操作,切换账号成功会调用初始化的onSwitchAccount(UToken data)回调,游戏需要在此操作里面引导用户重新登录,重新加载该新用户对应的角色数据 。
接口:
public void showAccountCenter()
调用方式:
U8Platform.getInstance().showAccountCenter();
2.13 拉起激励视频广告接口
调用激励视频广告接口,拉起渠道的激励视频广告,触发接口携带的回调监听器中的回调函数,里面有广告相关回调信息
接口:
public void gameRewardVideoAd(Activity context, RewardVideoAdInfo info,RewardVideoAdListener rewardVideoAdListener);
参数:
RewardVideoAdInfo info
参数名 参数类型 参数描述
rewardVideoAdID string 广告id
rewardVideoName string 奖励名称
userId string 用户id
rewardVideoAccount string 奖励数量
mediaExtra string 用户透传参数
Extra string 用户透传参数
Orientation int 期望视频播放的方向1:竖屏,2:横屏
调用方式:
RewardVideoAdInfo info = new RewardVideoAdInfo();
info.setRewardVideoAdID("111111");//广告id
info.setRewardVideoName("激励视频奖励的名称");//奖励的名称
info.setRewardVideoAccount(1); //奖励的数量
info.setOrientation(1);//1:竖屏,2:横屏
info.setUserId("111111111111");//用户id
info.setMediaExtra("视频额外参数");//视频透传参数
info.setExtra("额外参数");//透传参数
U8Platform.getInstance().gameRewardVideoAd(MainActivity.this, info, new RewardVideoAdListener());
回调函数:
public interface RewardVideoAdListener() {
@Override
public void onRequestADFail(int errorCode){
//请求失败,errorCode错误码
}
@Override
public void onRewardVideoAdComplete() {
//视频播放完成
}
@Override
public void onRewardVideoAdCancel() {
//视频播放过程中取消回调
}
@Override
public void onRewardVideoAdClose() {
//视频播放完成,关闭视频界面回到游戏界面
}
@Override
public void onRequestADSuccess() {
//请求视频广告成功
}
@Override
public void onRewardVideoAdSkipped() {
//视频跳过
}
}
2.14 游戏事件上报接口(特殊渠道用到)
游戏事件的af上报接口,把游戏里面一些事件上报给af。
接口:
事件上报:
public void gameEvent(String eventId, Map<String Object> eventData);
参数介绍:
eventId 事件名称,例如注册事件的注册方式mobile,qq,weixin等等,根据渠道需求定
eventData 事件数据
调用方式:
Map<String, Object> eventData = new HashMap<String, Object>();
eventData.put("register", "注册"); //注册。
···
U8Platform.getInstance().gameEvent("mobile", eventData);
2.15 数数科技上报接口
调用数数科技上报接口,上报用户属性数据和事件
接口:
public void submitTAUserInfo(int eventType,String eventID,JSONObject jsonObject)
参数:
eventType 上报类型(0:事件上报;1:用户数据上报set;2:用户数据上报setOnce;3:用户数据上报add);4:设置事件的公共属性
eventID 上报事件名(用户数据上报set,add,setOnce和设置公共属性时传null或"",事件上报不能为null和"")
jsonObject 上报属性数据(必传,不可传null)
调用方式:
U8Platform.getInstance().submitTAUserInfo(eventType, eventID, jsonObject);
上报时机:角色名称,登出角色和切换角色以示例标准传,其余的事件按照运营提供的文档传参
角色名称修改时上报,类型:set(eventType=1),jsonObject.put("mj_role_name",role_name);
登出角色后时上报 类型:事件上报(eventType=0);eventID="mj_logout_role"(固定的)
切换角色时上报 类型:事件上报(eventType=0);eventID="mj_change_role"(固定的)
示例:
角色名称修改
JSONObject jsonObject = new JSONObject();
jsonObject.put("mj_role_name","role_武侠");
U8Platform.getInstance().submitTAUserInfo(1, "", jsonObject);
登出角色
JSONObject jsonObject = new JSONObject();
U8Platform.getInstance().submitTAUserInfo(0, "mj_logout_role", jsonObject);
切换角色
JSONObject jsonObject = new JSONObject();
U8Platform.getInstance().submitTAUserInfo(0, "mj_change_role", jsonObject);
上报公共属性
JSONObject jsonObject = new JSONObject();
jsonObject.put("game_version","1.1.1");
U8Platform.getInstance().submitTAUserInfo(4, "", jsonObject);
2.16 绑定账号接口
调用绑定账号接口,打开SDK绑定账号界面,绑定成功,会触发上面初始化监听器中的onBindAccountResult回调函数
接口:
public void bindAccount(Activity context);
调用方式:
U8Platform.getInstance().bindAccount(activity);
2.17 切换账号接口
调用切换账号接口,打开SDK切换账号界面,切换成功,会触发上面初始化监听器中的onSwitchAccount回调函数
接口:
public void switchLogin(Activity context);
调用方式:
U8Platform.getInstance().switchLogin(activity);
2.18 成就上报接口
调用成就上报接口,上报成就信息
接口:
public void commitMGKYAchievement(String urlpath, String bodyjson, OnMGKYAchievementListener onMGKYAchievementListener);
参数:
urlpath String 通用接口 url 后缀,指示接口具体功能。游戏内数据上报固定传入"/data/save"
bodyjson String JSONObject的String, 通用http请求的body部分,具体样例见咪咕快游渠道对接文档示例。
调用方式:
String jsonbody = "{\n" +
"\t\"dataList\": [{\n" +
"\t\t\"areaId\": \"1000\",\n" +
"\t\t\"dataId\": \"occupation\",\n" +
"\t\t\"dataType\": 1,\n" +
"\t\t\"dataValue\": \"3\"\n" +
"\t}]\n" +
"}";
U8Platform.getInstance().commitMGKYAchievement("/data/save", jsonbody, new OnMGKYAchievementListener {
public void OnMGKYAchievementSuccess(Object object){
Log.e(TAG, "save data success");
};
public void OnMGKYAchievementFail(String s){
Log.e(TAG, "save data fail "+s);
};
});
回调函数:返回当前接口执行结果,成功或失败。
public interface OnMGKYAchievementListener {
/**
* 咪咕快游成就上报成功
*/
public void OnMGKYAchievementSuccess(Object object);
/**
* 咪咕快游成就上报失败
*/
public void OnMGKYAchievementFail(String s);
}
2.19 分享接口
!> 用户设置的图片大小最好不要超过250k,最好不要分享1M以上的图片
支持平台分享样式总览
平台 | 支持样式 |
---|---|
微信好友 | 纯文本、图片、视频 |
微信朋友圈 | 纯文本、图片、视频 |
新浪微博 | 纯文本、图片、视频 |
纯文本、图片、视频 | |
QQ空间 | 纯文本、图片、视频 |
抖音 | 图片、视频 |
调用分享接口,分享至微信,QQ,抖音,微博,触发分享开始,成功,取消或者失败的回调
接口:
public void share(ShareInfo shareInfo, OnShareListener onShareListener);
参数:
shareInfo ShareInfo
private int shareMode; //分享样式,0,图片;1,文本;2,视频
private int sharePicType; //分享的形式,分享图片用到,0是网络图片;1是本地文件;
// 2是资源文件;3是bitmap文件;4是字节流文件
private String picUrl; //网络图片链接
private String picFileName; //本地图片路径
private Bitmap picBitmap; //图片形式是bitmap文件需要用到
private byte[] picByte;//字节流文件
private String shareText; //分享纯文本
private String shareVideourl; //网络视频链接
private String shareVideoThumb; //视频的缩略图
private String shareTitle; //分享标题
private String shareDesc; //分享视频时的视频描述
调用方式:
ShareInfo shareInfo = new ShareInfo();
shareInfo.setShareMode(0);
shareInfo.setSharePicType(0);
shareInfo.setShareTitle("test");
shareInfo.setPicUrl("https://pic.leduimg.com/pic-ledu-com/productEnvironment/1PaJcKz_bf324ccc7dd7025ecb0ca7477ad4e46d.jpg");
U8Platform.getInstance().share(shareInfo, new OnShareListener() {
@Override
public void shareSuccess(String platform) {
Log.d(TAG, "==shareSuccess=="+platform);
}
@Override
public void shareFail(String platform, String error) {
Log.d(TAG, "==shareFail=="+platform);
}
@Override
public void shareCancel(String platform) {
Log.d(TAG, "==shareCancel=="+platform);
}
@Override
public void shareStart(String platform) {
Log.d(TAG, "==shareStart=="+platform);
}
});
回调函数:返回当前接口执行结果,分享开始,成功,取消或者失败的回调。
public interface OnShareListener() {
@Override
public void shareSuccess(String platform) {
//分享成功,platform 分享平台
}
@Override
public void shareFail(String platform, String error) {
//分享失败,platform 分享平台,error 错误信息
}
@Override
public void shareCancel(String platform) {
//分享取消,platform 分享平台
}
@Override
public void shareStart(String platform) {
//分享开始,platform 分享平台
}
}