360SDK 社交服务
1.接口说明
360社交游戏SDK无界面纯数据接口通过调用Matrix.execute来实现。有界面的接口通过Matrix.invokeActivity来实现调用。
所有360社交sdk的接口需要在UI主线程里调用。调用接口是传入的参数类型需要与demo代码中的参数类型保持一致。
上传积分:
游戏可自定义游戏中用于排行的数值(一般为分数或等级),上传到360服务器存储,用于后面进行排行榜展示。通常竞技类游戏在用户玩完一局后上传分数;等级排名的游戏,在用户每次登录成功后将用户最新等级上传。默认排行榜id=0,数值在每周三上午10点清零。游戏可以定义多个不同排行榜,在上传对应排行数值的时候指定对应排行榜id即可(最多自定义10个排行榜,id为1~10)。
好友排行榜:
接入方案一:采用SDK自带界面的好友排行榜
调用SDK『带界面的排行榜接口』,游戏方无需绘制界面,即可实现游戏内好友排行榜的展示。
注意:调该接口前提是,游戏必须调用『上传积分接口』将玩家用于排行的数值上传到360服务器。
接入方案二:
游戏方调用『好友排行榜接口』拿到360返回的好友列表之后,到游戏服务器查询分数并进行排序,然后给用户呈现好友排行榜。游戏方可以自定义界面展现排行榜。
邀请好友:
接入方案一:采用SDK自带界面的邀请好友
调用SDK『带界面的邀请好友接口』
接入方案二:游戏自制邀请界面
游戏内需要设置邀请好友按钮,点击后调用『可邀请好友列表接口』,360将返回玩家的可邀请好友列表,包含推荐好友和通讯录朋友两部分(通过group字段区分),其中推荐好友是玩家平台好友中的非本游戏好友。游戏方自定义邀请好友界面,区分展示这两部分。可邀请列表上设置邀请按钮,点击后调用SDK『邀请好友接口』
微博分享:
SDK提供分享接口,该接口目前支持微信、微博等主要分享渠道。
通过分享接口分享出去的应用,在用户下载后,会自动和分享出该应用的用户成为好友。在登录回调结果中,会返回当前用户最近两次登录期间,通过分享新增的好友信息。
为鼓励玩家分享,游戏可在获得登录回调结果后,给予用户奖励。
2.接口介绍
2.1 获取社交初始化信息接口
功能说明:
需要登录完成后才能调用。用户获取用户社交初始化相关信息。主要包括用户资料、新增好友等信息。
注意:首次接入,可能接口会返回报错invalid param appid 400,这是因为SDK有个后台加白机制,需要等待10分钟后完成。此类报错一个应用只会报错1次。如10分钟后还会报错,可参看360SDK FAQ详细排查流程。
接口示例:
// 生成intent参数
private Intent getSocialInitInfoIntent() {
Intent intent = new Intent();
// 必须参数,标识通知SDK要执行的功能
intent.putExtra(ProtocolKeys.FUNCTION_CODE,
ProtocolConfigs.FUNC_CODE_GET_SOCIAL_INIT_INFO);
return intent;
}
// 调用接口
protected void doSDKGetSocialInitInfo(QihooUserInfo usrInfo) {
if (!checkLoginInfo(usrInfo)) {
return;
}
Intent intent = getSocialInitInfoIntent();
Matrix.execute(this, intent, new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
}
});
}返回数据格式:
{
"data": {
"shareapp_result": 0,
"nick": "dklsokdlslkd",
"shareapp_source": {},
"accessinfo": {
"user_me": {
"avatar": "http://quc.qhimg.com/dm/100_100_100/t01cd9e9229573bdde8.jpg",
"name": "wtpr_2014"
}
},
newfriends: [ // 新增好友
{
qid: "105883655", // 新增好友的qid
nick: "吉米舟舟", // 新增好友的昵称
phone: "87d7e322b88cb6a893e91a9981ab43f0", // 新增好友的phone
avatar: "http://u1.qhimg.com/qhimg/1/2123.e6264a.jpg" // 新增好友的头像
src:"sdk", // 好友来源,可能取值:sdk gamebox
is_played_this_game:1 // 是否玩过此游戏,1,玩过;0,没玩过
}
],
shareapp_newfriend:{ // 通过游戏分享,新增的好友
total: 3, // 通过游戏分享新增的好友总数
users: [ // 通过游戏分享新增的好友相关信息,目前最多返回前10个
{
"username": "demotest001", // 用户名
"area": "北京市", // 地区
"nick": "demo_test_user", // 昵称
"avatar": "http://xxxxx.xxx.xx/x.jpg", // 头像
},
…
]
},
"no_self_display_nick": "dklsokdlslkd",
"app_inviters": 0
},
"time": 1425266350,
"errno": 0,
"errmsg": "ok",
}callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
if (null == data) {
return;
}
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
System.out.println(data);
}
});
2.2 获取可邀请好友列表接口(与邀请好友接口配合使用)
功能说明:
需要获取可邀请好友列表时,调用此接口。需要先登录。该接口会上传本地通信录到服务器,通过服务器结合本地通信录内容,返回可邀请的好友列表。
接口示例:
/**
* 使用360SDK的获取可邀请好友列表接口
*/
// 生成intent参数
private Intent getGetContactContentIntent(TokenInfo token, boolean isLandScape){
Intent intent = new Intent();
//必须参数,屏幕方向
intent.putExtra(ProtocolKeys.IS_SCREEN_ORIENTATION_LANDSCAPE, isLandScape);
//必须参数,表示调用SDK接口执行的功能
intent.putExtra(ProtocolKeys.FUNCTION_CODE,
ProtocolConfigs.FUNC_CODE_GET_CONTACT_CONTENT);
//可选参数,表示此次获取可邀请好友列表的开始位置,从0开始。
// 无此参数时会获取所有的可邀请好友列表,不进行翻页。
intent.putExtra(ProtocolKeys.START, mEditGetcontactStart.getText().toString());
//可选参数,表示此次获取可邀请好友的个数。
// 无此参数时会获取所有的可邀请好友列表,不进行翻页。
intent.putExtra(ProtocolKeys.COUNT, mEditGetcontactCount.getText().toString());
return intent;
}
// 调用接口
protected void doSdkGetContactContent(QihooUserInfo usrInfo, boolean isLandScape ){
if(!checkLoginInfo(usrInfo)) {
return;
}
mEditGetcontactStart = (EditText)findViewById(R.id.edit_getcontact_start);
mEditGetcontactCount = (EditText)findViewById(R.id.edit_getcontact_count);
Intent intent = this.getGetContactContentIntent(isLandScape);
Matrix.execute(this, intent, new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data,
Toast.LENGTH_SHORT).show();
System.out.println(data);
}
});
}返回数据格式:
{
errmsg:"ok",
time:1367930392,
errno:0, // 服务器返回的错误码,为0代表成功。
// data 是一个json数组,其中每个对象保存可邀请的好友信息
data:[{
is_friend:0, // 是否为好友
qid:"278772014", // 好友的qid,可能为空字串
phone:" 87d7e322b88cb6a893e91a9981ab43f0", // 好友的电话号码,可能为空字符串
is_invited:0, // 是否邀请过该好友
nick:"vrs132v", // 通信录中姓名 > nickname > 无名大侠+qid > 无名大侠
avatar: "http://u1.qhimg.com/qhimg/quc/...01259qd123.e6264a.jpg", // 头像
last_invited_time :1367930392, //上次邀请的时间
is_played_this_game:0, // 用户是否玩过此游戏,1,玩过;0,没玩过。
group:"contacts", // 标识用户属于哪个分组,可取的值:contacts(来自通信录)recommend(推荐玩家)
}]
}
callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
System.out.println(data);
}
});2.3 邀请好友接口
功能说明:
邀请好友时,调用此接口。用户必须已登录才能调用。
接口示例:
/**
* 使用360SDK的邀请好友接口
*/
// 生成intent参数
private Intent getInviteFriendIntent(boolean bLandScape){
Intent intent = new Intent();
//必须参数,表示调用SDK接口执行的功能为批量邀请好友
intent.putExtra(ProtocolKeys.FUNCTION_CODE,
ProtocolConfigs.FUNC_CODE_INVITE_FRIEND_BATCH);
//必须参数,对方的昵称
intent.putExtra(ProtocolKeys.NICK_NAME, strNick);
//有值就要传入,加密后的好友电话。使用“获取可邀请好友列表”接口返回的phone字段中的值。
intent.putExtra(ProtocolKeys.PHONE, strPhone);
//有值就要传入,被邀请用户的qid,如果没有可以不传
intent.putExtra(ProtocolKeys.QID, strQid);
//必须参数,邀请信息内容。
intent.putExtra(ProtocolKeys.SMS, strSMS);
//屏幕方向,bool值,true为横屏,flase为竖屏
intent.putExtra(ProtocolKeys.IS_SCREEN_ORIENTATION_LANDSCAPE, bLandScape);
return intent;
}
// 调用接口
protected void doSdkInviteFriend(QihooUserInfo usrInfo, boolean bLandScape){
// 检查用户是否登录
if(!checkLoginInfo(usrInfo)) {
return;
}
Intent intent = getInviteFriendIntent(bLandScape);
Matrix.execute(this, intent, new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
System.out.println(data);
}
});
}返回数据格式:
{
"errno": 0,
"errmsg": "ok",
"time": 1363155828,
"data": {
"status": "1" //0:邀请失败,1:邀请成功
}
}
callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
System.out.println(data);
}
});2.4 带界面的邀请好友接口
功能说明:
该接口提供一个界面用于展示可邀请好友列表,并能对每个好友进行邀请。当界面销毁时会通过接口的回调通知调用者。必须在登陆状态下才能调用此接口。
接口示例:
/**
* 使用360SDK的带界面的邀请好友接口
*/
// 生成intent参数
private Intent getInviteFriendBySdkIntent(boolean bLandScape) {
Intent intent = new Intent(this, ContainerActivity.class);
//必须参数,表示调用SDK接口执行的功能
intent.putExtra(ProtocolKeys.FUNCTION_CODE,
ProtocolConfigs.FUNC_CODE_INVITE_FRIEND_BY_SDK);
// 可选参数,360SDK界面是否以横屏显示。
intent.putExtra(ProtocolKeys.IS_SCREEN_ORIENTATION_LANDSCAPE, bLandScape);
// 可选参数,邀请信息,不需要主语,sdk会添加。
intent.putExtra(ProtocolKeys.SMS, inviteMsg);
return intent;
}
// 调用接口
protected void doSdkInviteFriendBySdk(QihooUserInfo usrinfo, boolean bLandScape) {
if (!checkLoginInfo(usrinfo)) {
return;
}
Intent intent = getInviteFriendBySdkIntent(bLandScape);
Matrix.invokeActivity(this, intent, new IDispatcherCallback() {
@Override
public void onFinished(String data) {
System.out.println("result: " + data);
Toast.makeText(SdkUserBaseActivity.this, "result: " + data,
Toast.LENGTH_SHORT).show();
}
});
}返回数据格式:
{
"errno":0,
"errmsg":"finish",
invite_count:1 // 用户在成功发出邀请的计数
}callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
System.out.println(data);
}
});2.5 上传积分接口(若接入社交相关功能,则接口必接)
功能说明:
上传用户积分/等级到服务器,更新用户积分和排行。必须在登录状态下才能调用此接口。
接口示例:
/**
* 使用360SDK的上传积分接口
*/
// 生成intent参数
private Intent getUploadScoreIntent(){
Intent intent = new Intent();
//必须参数,表示调用SDK接口执行的功能为上传积分
intent.putExtra(ProtocolKeys.FUNCTION_CODE,
ProtocolConfigs.FUNC_CODE_UPLOAD_SCORE);
//必须参数,用户积分。
intent.putExtra(ProtocolKeys.SCORE, strScore);
//必须参数,数排行榜标识
intent.putExtra(ProtocolKeys.TOPNID, topnid);
return intent;
}
// 调用接口
protected void doSdkUploadScore(QihooUserInfo usrInfo){
// 检查用户是否登录
if(!checkLoginInfo(usrInfo)) return;
Intent intent = this.getUploadScoreIntent();
Matrix.execute(this, intent, new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data,
Toast.LENGTH_SHORT).show();
}
});
}返回数据格式:
{
errno: 0,
errmsg: "ok",
time: 1363155828,
data: {
status: "1" //0:更新失败,1:更新成功
}
}callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
if (null == data) {
return;
}
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
}
});2.6 好友排行榜接口
功能说明:
用于获取游戏中的好友之间的排行榜,必须在登录状态下才能调用此接口。
接口示例:
/**
* 使用360SDK的好友排行榜接口,生成intent参数
*/
private Intent getGetGameTopFriendIntent() {
Intent intent = new Intent();
//必须参数,表示调用SDK接口执行的功能为游戏的排行榜。
intent.putExtra(ProtocolKeys.FUNCTION_CODE,
ProtocolConfigs.FUNC_CODE_GET_RANK_FRIENDS);
//可选参数,排名榜的第几位开始获取(索引从0开始)
intent.putExtra(ProtocolKeys.START, strStart/*"0"*/);
//可选参数,排名榜上从start开始,获取多少位,最小值为20。
// start和count参数如果不传的话,会返回最多前20个排行榜内容。
intent.putExtra(ProtocolKeys.COUNT, strCount/*"20"*/);
// 可选参数,排行榜类型(不填写,则为默认的排行榜)
intent.putExtra(ProtocolKeys.TOPNID, strTopNID);
// 可选参数,排序类型(填写为0则按正序排序,其他情况按倒序排序)
intent.putExtra(ProtocolKeys.ORDERBY, strOrderby);
return intent;
}
// 调用接口
protected void doSdkGetRankFriend(QihooUserInfo usrInfo){
// 检查用户是否登录
if(!checkLoginInfo(usrInfo)) {
return;
}
Intent intent = this.getGetGameTopFriendIntent();
Matrix.execute(this, intent, new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
}
});
}返回数据格式:
{
errno: 0,
errmsg: "ok",
time: 1369627632,
data: {
self: { // 当前登录的帐号
qid: "17699179", // 自己的qid
nick: "缤纷翼彩", // 自己的昵称
phone: "87d7e322b88cb6a893e91a9981ab43f0", // 自己的电话号码
avatar:"http://u1.qhimg.com/qhimg/...259qd123.e6264a.jpg", // 头像
score: 0,// 自己的分数
rank: 4 // 自己在此排行版中的排名
},
all: [ // 我的好友的分数、排名(包括自己在内)
{
qid: 273002130, // qid
nick: "idwanglu2010", // 昵称
score: 0, // 分数
phone: "",
rank: 1, // 排名
avatar:"http://u1.qhimg.com/qhimg/quc/80_8...qd123.e6264a.jpg", // 头像
src:"sdk", // 好友来源,可能取值:sdk,gamebox。如果是自己的话值为self
is_played_this_game:1 // 是否玩过此游戏,1,玩过;0,没玩过
}
],
count: 2 //all数组中的项目数
}
}callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
if (null == data) {
return;
}
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
}
});2.7 全球排行榜接口
功能说明:
用于获取游戏中所有玩家之间的排行榜,返回排名前100的用户,必须在登录状态下才能调用此接口。
接口示例:
/**
* 使用360SDK的全球排行榜接口,生成intent参数
*/
private Intent getGetGameGlobleRankListIntent(){
Intent intent = new Intent();
//必须参数,表示调用SDK接口执行的功能为游戏的排行榜。
intent.putExtra(ProtocolKeys.FUNCTION_CODE, ProtocolConfigs.FUNC_CODE_GET_RANK);
//可选参数,排行榜类型(不填写,则为默认的排行榜)
intent.putExtra(ProtocolKeys.TOPNID, strTopNID);
//可选参数,排序类型(填写为0则按正序排序,其他情况按倒序排序)
intent.putExtra(ProtocolKeys.ORDERBY, StrOrderby);
return intent;
}
// 调用接口
protected void doSdkGetGlobalRankList(QihooUserInfo usrInfo){
// 检查用户是否登录
if(!checkLoginInfo(usrInfo)) {
return;
}
Intent intent = this.getGetGameTop100Intent();
Matrix.execute(this, intent, new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data,
Toast.LENGTH_SHORT).show();
}
});
}返回数据格式:
{
errno: 0,
errmsg: "ok",
time: 1369629092,
data: {
all: [
{
qid: 282713167,
nick: "tks264test100",
phone: "",
rank: 1,
score: "100",
isfriend: 0 // 对方是不是自己的好友,0不是;1是
avatar: "http://u1.qhimg.com/qhimg/...259qd123.e6264a.jpg" // 头像
src:"sdk", // 好友来源,可能取值:sdk gamebox如果是自己的话值为self
is_played_this_game:1 // 是否玩过此游戏,1,玩过;0,没玩过
},
...
],
self: {
qid: "17699176",
nick: "缤纷翼彩",
phone: "87d7e322b88cb6a893e91a9981ab43f9",
rank: 3
avatar: "http://u1.qhimg.com/qhimg/quc/80_80/29/01/25/2901259qd123.e6264a.jpg"
},
count: 2, //返回的数据记录数
total: 2 //全球往此榜单提交过分数的人数总数
}
}callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
if (null == data) {
return;
}
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
}
});2.8 带界面的排行榜接口
功能说明:
该接口提供一个界面用于展示好友排行。当界面销毁时会通过接口的回调通知调用者。必须在登录状态下才能调用此接口。
接口示例:
/**
* 使用360SDK的带界面的排行榜接口, 生成intent参数
*/
private Intent getDisplayGameFriendRankIntent(boolean bLandScape) {
Intent intent = new Intent(this, ContainerActivity.class);
// 必须参数,表示调用SDK接口执行的功能
intent.putExtra(ProtocolKeys.FUNCTION_CODE,
ProtocolConfigs.FUNC_CODE_DISPLAY_GAME_FRIEND_RANK);
if (!TextUtils.isEmpty(topnId)) {
// 可选参数,排行榜ID,与上传积分时对应的排行榜ID对应,
// 使用该参数,需要确定后台存在对应ID的排行榜,否则会显示错误
intent.putExtra(ProtocolKeys.TOPNID, topnId);
}
// 360SDK界面是否以横屏显示。
intent.putExtra(ProtocolKeys.IS_SCREEN_ORIENTATION_LANDSCAPE, bLandScape);
return intent;
}
// 调用接口
protected void doSdkDisplayGameFriendRank(QihooUserInfo usrInfo,
boolean bLandScape) {
if (!checkLoginInfo(usrInfo)) {
return;
}
Intent intent = getDisplayGameFriendRankIntent(bLandScape);
Matrix.invokeActivity(this, intent, new IDispatcherCallback() {
@Override
public void onFinished(String data) {
System.out.println("result: " + data);
Toast.makeText(SdkUserBaseActivity.this, "result: " +
data, Toast.LENGTH_SHORT).show();
}
});
}返回数据格式:
{
errno:0,
errmsg:"finish",
invite_count:1 // 用户在成功发出邀请的计数
}callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
}
});2.9 获取个人信息资料页接口
功能说明:
用于获取个人资料页信息。必须在登录状态下才能调用此接口。
接口示例:
/**
* 使用360SDK的获取个人信息资料页接口
*/
// 生成intent参数
private Intent getUserInfoIntent() {
Intent intent = new Intent();
// function code
intent.putExtra(ProtocolKeys.FUNCTION_CODE,
ProtocolConfigs.FUNC_CODE_GET_USER_INFO);
// 用户QID
intent.putExtra(ProtocolKeys.QID, qid);
return intent;
}
// 调用接口
protected void doSdkGetUserInfo(QihooUserInfo usrinfo) {
if (!checkLoginInfo(usrinfo)) {
return;
}
Intent intent = getUserInfoIntent();
Matrix.execute(this, intent, new IDispatcherCallback() {
@Override
public void onFinished(String data) {
System.out.println(data);
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_LONG).show();
}
});
}返回数据格式:
{
errno: 0,
errmsg: 'ok',
time: 1384149855,
data:
{
userinfo: {
user_id: "668774323",
phoneenc: "ecea6c1ce9f58cdd73bd518d7a154cc7",
nick: "shortytall",
face: "http://quc.qhimg.com/dm/100_100_...32792671719a.jpg", // 头像
face_large: "http://quc.qhimg.com/dm/180_180_..71719a.jpg",
gender: "男",
age: 19,
astro: "双子座",
birthday: "1973-6-13",
province: "云南省",
city: "红河",
weibonick: "",
weibouid: "",
motto: "", //个性签名
role: "self", //可能的值: self/friend/pursuer/stranger
recentgames: [ //最近在玩的游戏,最多4个
{
soft_id: "123456",
pname: "com.xxxxxx.xxx",
logo_url: "http://p18.qhimg.com/dr/3...7fdb9be.png",// 游戏logo
name: "游戏名称1",
download_times: "459077"
},
{
soft_id: "234567",
pname: "org.xxx.xxx",
logo_url: "http://p18.qhimg.com/dr/38_...7fdb9be.png",
name: "游戏名称2",
download_times: "22155810"
},
...
]
}
}
}callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
}
});2.10 分享接口
功能说明:
需要分享应用时,调用此接口。该接口目前支持微信、微博等主要分享渠道。必须在登录状态下才能调用此接口。
通过分享接口分享出去的应用,在用户下载后,会自动和分享出该应用的用户成为好友。在登录回调结果中,会返回当前用户最近两次登录期间,通过分享新增的好友信息。具体见登录接口返回数据说明中的“shareapp_newfriend”字段。
为鼓励玩家分享,游戏可在获得回调结果后,给于用户奖励。
接口示例:
// 生成分享接口intent参数
private Intent getShareIntent(String title, String desc, String picture,
String icon, String uibg, boolean isLandScape){
Intent intent = new Intent();
// 必须参数,标识通知SDK要执行的功能
intent.putExtra(ProtocolKeys.FUNCTION_CODE, ProtocolConfigs.FUNC_CODE_SHARE);
// 可选参数,指定横竖屏,默认为横屏
intent.putExtra(ProtocolKeys.IS_SCREEN_ORIENTATION_LANDSCAPE, isLandScape);
if (!TextUtils.isEmpty(uibg)) {
// 可选参数,分享界面的背景图,不传就是透明
intent.putExtra(ProtocolKeys.UI_BACKGROUND_PICTRUE, uibg);
}
// 必须参数,分享的标题,长度不可超过512,这个字段会作为微信网页分享的标题使用
intent.putExtra(ProtocolKeys.SHARE_TITLE, title);
// 必须参数,分享的描述,该内容可能会通过短信、微博分享发出,
// 长度请限制在140字符范围内。
intent.putExtra(ProtocolKeys.SHARE_DESC, desc);
// 可选参数,分享的图片路径,微博分享时会使用
// (必须是本地路径如:/sdcard/1.png,后缀可以是png、jpg、jpeg,
// 大小不能超过5M,尺寸不能超过1280x720)
intent.putExtra(ProtocolKeys.SHARE_PIC, picture);
// 可选参数,分享的icon路径,微信分享时会使用
// (必须是本地路径,最好是png文件,32k以内)
intent.putExtra(ProtocolKeys.SHARE_ICON, icon);
return intent;
}
// 调用接口
protected void doSdkShare(QihooUserInfo usrInfo, final boolean bLandScape){
if(!checkLoginInfo(usrInfo)) {
return;
}
Intent intent = getShareIntent(etTitle.getText().toString(),
etDesc.getText().toString(), etPic.getText().toString(),
etIcon.getText().toString(), etUiBg.getText().toString(), bLandScape);
Matrix.invokeActivity(SdkUserBaseActivity.this, intent,
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
if (null == data) {
return;
}
Toast.makeText(SdkUserBaseActivity.this, data,
Toast.LENGTH_SHORT).show();
}
});
}返回数据格式:
/*
* errno: 错误码:0,分享完成,但不确定是否已经发出分享;1,分享已经发出;-1,分享失败
* errmsg: 错误信息
* shared: bool类型,分享是否已经发出,true为确定分享已经发出
* share_way: 用户选择的分享渠道:
* clipboar,复制到剪切板;
* weixin_timeline,微信朋友圈;
* weixin_friends,微信好友;
* sina_weibo,新浪微博;
* sms,短信
*/
{
"errno": 0,
"shared": false,
"errmsg": "ok",
"share_way": "clipboard",
}callback示例:
new IDispatcherCallback() {
@Override
public void onFinished(String data) {
if (null == data) {
return;
}
Toast.makeText(SdkUserBaseActivity.this, data, Toast.LENGTH_SHORT).show();
System.out.println(data);
}
});
测试:
l 分享:在应用未上线时,360没有对应的应用下载链接,游戏只需测试分享内容成功发送到各社交渠道即可。如调试阶段收到分享失败的错误码提示,请到对应渠道官网查看错误码说明:
微信:https://open.weixin.qq.com/zh_CN/htmledition/res/dev/document/sdk/android/index.html
微博:http://open.weibo.com/wiki/Error_code
l 加好友:测试阶段如需模拟登录回调中返回通过分享新增的好友信息,可在登录接口调用时加入参数ProtocolKeys.IS_SOCIAL_SHARE_DEBUG,传值为true,这样会认为当前应用为demotest001分享出来的。登录测试帐号demotest002~demotest010,会自动和demotest001这个帐号成为好友。当登录demotest001这个帐号时,会在登录结果中返回通过分享新增的好友信息。我们提供的测试账号有:
<td valign="top" style="border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1px; border-bottom-
<tr style="
帐号 | 密码 |
demotest001 | q111111 |
demotest002 | q111111 |
demotest003 | q111111 |
demotest004 | q111111 |