360SDK 社交服务

2018-10-10 14:00 更新

1.接口说明

    360社交游戏SDK无界面纯数据接口通过调用Matrix.execute来实现。有界面的接口通过Matrix.invokeActivity来实现调用。

    所有360社交sdk的接口需要在UI主线程里调用。调用接口是传入的参数类型需要与demo代码中的参数类型保持一致。

 

上传积分:

    游戏可自定义游戏中用于排行的数值(一般为分数或等级),上传到360服务器存储,用于后面进行排行榜展示。通常竞技类游戏在用户玩完一局后上传分数;等级排名的游戏,在用户每次登录成功后将用户最新等级上传。默认排行榜id=0,数值在每周三上午10点清零。游戏可以定义多个不同排行榜,在上传对应排行数值的时候指定对应排行榜id即可(最多自定义10个排行榜,id1~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



以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号