闲聊SDK接入
以下是游戏需求(Ctrl点击进入超链接):
需求补充:游戏头像以及昵称按照最先点击登录的类型处理,即先点击哪种登录方式,就以该种登录方式显示。
以下是闲聊给出的文档:
以下是闲聊给出的demo(在开发过程中闲聊有更换sdk,所以他们的demo仅做参考):
以下是河南麻将项目接入文档(并未完全按照闲聊所给文档接入):
一、安卓篇
1.在Eclipse内导入sugramsdk.jar。
2.在android项目内添加SGEntryActivity.java(位置为:henmj\android\src\com\happyplay\hnmj\sgapi)
3.在android项目内添加MyHttpClient.java、SSLSocketFactoryEx.java、XianLiaoActivity.java三个文件(位置为:henmj\android\src\org\cocos2dx\javascript)
4.在android项目内修改AppActivity.java
1).添加以下内容
//xianliao
import org.sugram.im.sdk.api.ISGAPI;
import org.sugram.im.sdk.api.SGAPIFactory;
import org.sugram.im.sdk.constants.SGConstants;
import org.sugram.im.sdk.modelmsg.SGGameObject;
import org.sugram.im.sdk.modelmsg.SGImageObject;
import org.sugram.im.sdk.modelmsg.SGMediaMessage;
import org.sugram.im.sdk.modelmsg.SGTextObject;
import org.sugram.im.sdk.modelmsg.SendMessageToSG;
2).在AppActivity里添加
public class AppActivity extends Cocos2dxActivity {
......
// xianliao
public ISGAPI sgApi;
public static String XL_AppID = "xxxxxxxxxx闲聊审核获得xxxxxxxxxx";
public static String XL_AppSecret = "xxxxxxxx闲聊审核获得xxxxxxxxxx";
public String xlInviteGameInfo = "";
......
}
3).在onCreate函数内添加
public void onCreate(Bundle savedInstanceState) {
......
xianLiaoInit();
//get intent data from XianLiaoActivity
Bundle bundle = getIntent().getExtras();
if(bundle != null){
String msg =bundle.getString("XL_InviteGameInfo");
xlInviteGameInfo = msg;
Log.i("getIntent","getIntent_XL_InviteGameInfo:"+msg);
}
......
try {
......
this.writeFileData("xianliao.txt", "has xianliao");
} catch (IOException e) {
......
}
......
}
4).添加函数RunJS_obj
//param是{} 对象的
public void RunJS_obj(String name, String param){
Cocos2dxHelper.runOnGLThread((new Runnable() {
String js;
String para;
@Override
public void run() {
// TODO Auto-generated method stub
String command = "cc.eventManager.dispatchCustomEvent('" + js + "'," + para + ")";
org.cocos2dx.lib.Cocos2dxJavascriptJavaBridge.evalString(command);
}
public Runnable setjs(String js, String pa) {
this.js = js;
this.para = pa;
return this;
}
}).setjs(name, param));
}
5)..添加函数xianLiaoInit
public void xianLiaoInit() {
// 通过 SGAPIFactory 工厂,获取 ISGAPI 实例
sgApi = SGAPIFactory.createSGAPI(this, XL_AppID);
sgApi.registerApp(XL_AppID);
}
6).修改微信登录函数wxLogin
把 SendAuth.Req req = new SendAuth.Req(); 改为 com.tencent.mm.sdk.modelmsg.SendAuth.Req req = new com.tencent.mm.sdk.modelmsg.SendAuth.Req();
7).添加函数xianLiaoLogin
public void xianLiaoLogin() {
if(isXLInstall()){
org.sugram.im.sdk.modelmsg.SendAuth.Req req = new org.sugram.im.sdk.modelmsg.SendAuth.Req();
req.state = "none";
sgApi.sendReq(req);
}
}
8).添加函数isXLInstall
//判断闲聊是否安装
public boolean isXLInstall(){
boolean haveXL = sgApi.isSGAppInstalled();
if(haveXL){
return true;
}
else{
doWithoutXLApp();
return false;
}
}
9).添加函数doWithoutXLApp
//have no xl app
public void doWithoutXLApp(){
Log.i("xianliao","doWithoutXLApp");
Intent viewIntent = new Intent("android.intent.action.VIEW",
Uri.parse(""));
startActivity(viewIntent);
}
10).添加函数xlShareText
public void xlShareText(String text) {
if(isXLInstall()){
// 初始化一个 SGTextObject 对象,填写分享的文本内容
SGTextObject textObject = new SGTextObject();
textObject.text = text;
// 用 SGTextObject 对象初始化一个 SGMediaMessage 对象
SGMediaMessage msg = new SGMediaMessage();
msg.mediaObject = textObject;
// 构造一个 Req
SendMessageToSG.Req req = new SendMessageToSG.Req();
req.transaction = SGConstants.T_TEXT;// 分享文本
req.mediaMessage = msg;
req.scene = SendMessageToSG.Req.SGSceneSession; // 代表分享到会话列表
// 调用 api 接口发送数据到闲聊
sgApi.sendReq(req);
}
}
11).添加函数xlShareInviteGame
public void xlShareInviteGame(String roomId, String roomToken,String title, String description) {
if(isXLInstall()){
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.icon);
// 初始化一个 SGGameObject 对象,设置所分享的游戏图片内容
SGGameObject gameObject = new SGGameObject(bitmap);
gameObject.roomId = roomId;
gameObject.roomToken = roomToken;
// 用 SGGameObject 对象初始化一个 SGMediaMessage 对象
SGMediaMessage msg = new SGMediaMessage();
msg.mediaObject = gameObject;
msg.title = title;
msg.description = description;
// 构造一个 Req
SendMessageToSG.Req req = new SendMessageToSG.Req();
req.transaction = SGConstants.T_GAME;
req.mediaMessage = msg;
req.scene = SendMessageToSG.Req.SGSceneSession; // 代表分享到会话列表
// 调用 api 接口发送数据到闲聊
sgApi.sendReq(req);
}
}
12).添加函数xlShareTexture
public void xlShareTexture(String path) {
if(isXLInstall()){
Bitmap bitmap = BitmapFactory.decodeFile(path);
// 初始化一个SGImageObject对象,设置所分享的图片内容
SGImageObject imageObject = new SGImageObject(
Bitmap.createScaledBitmap(
bitmap,
1000,
(int) (bitmap.getHeight() / (bitmap.getWidth() / 1000f)),
true));
// 用SGImageObject对象初始化一个SGMediaMessage对象
SGMediaMessage msg = new SGMediaMessage();
msg.mediaObject = imageObject;
// 构造一个Req
SendMessageToSG.Req req = new SendMessageToSG.Req();
req.transaction = SGConstants.T_IMAGE;
req.mediaMessage = msg;
req.scene = SendMessageToSG.Req.SGSceneSession; // 代表分享到会话列表
// 调用api接口发送数据到Sugram
sgApi.sendReq(req);
}
}
13).添加函数GetXLInviteGameInfo
public void GetXLInviteGameInfo(){
String rtn_msg = xlInviteGameInfo;
if(rtn_msg != ""){
RunJS_obj("XL_InviteGameInfo",rtn_msg);
}
xlInviteGameInfo = "";
}
14).添加函数StartXianLiaoLogin
public static void StartXianLiaoLogin() {
if (ccActivity != null) {
ccActivity.xianLiaoLogin();
}
}
15).添加函数StartShareTextToXL
public static void StartShareTextToXL(String path) {
if (ccActivity != null) {
ccActivity.xlShareText(path);
}
}
16).添加函数StartShareInviteGameToXL
public static void StartShareInviteGameToXL(String roomId,
String roomToken, String title, String description) {
if (ccActivity != null) {
ccActivity.xlShareInviteGame(roomId, roomToken, title, description);
}
}
17).添加函数StartShareTextureToXL
public static void StartShareTextureToXL(String path) {
if (ccActivity != null) {
ccActivity.xlShareTexture(path);
}
}
18).添加函数xlGetInviteGameInfo
public static void xlGetInviteGameInfo(){
if (ccActivity != null) {
ccActivity.GetXLInviteGameInfo();
}
}
19).在AndroidManifest.xml中添加
<!-- xianliao -->
<activity android:name="org.cocos2dx.javascript.XianLiaoActivity"
android:screenOrientation="sensorLandscape"
android:configChanges="orientation"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<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="paraches"
android:host="xianliao*******闲聊审核获得的APPID*****"/>
</intent-filter>
</activity>
<activity
android:name="com.happyplay.hnmj.sgapi.SGEntryActivity"
android:exported="true">
</activity>