闲聊SDK接入----安卓篇

闲聊SDK接入

 

以下是游戏需求(Ctrl点击进入超链接):

游戏场景图

需求补充:游戏头像以及昵称按照最先点击登录的类型处理,即先点击哪种登录方式,就以该种登录方式显示。

 

以下是闲聊给出的文档:

闲聊安卓开发文档

闲聊IOS开发文档

闲聊server开发文档

 

以下是闲聊给出的demo(在开发过程中闲聊有更换sdk,所以他们的demo仅做参考):

安卓_demo

IOS_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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值