Android——极光推送JMessage

要想实现聊天,需要在极光推送创建应用,开发者控制台,前往极光推送

在开发者服务下面选择极光IM,查看相关文档来配置,获取应用密匙。

极光IM相关文档

获得密匙以后,可以集成相关sdk。

这里写图片描述

这些文档内容的东西就不细说了,集成完毕后到开发指南里面可以进行代码实战。

先来完成聊天布局的设置:

发送方消息在右侧,而接收到的消息在左侧。整体是LinearLayout,通过发送或接收数

据来标识显示哪部分,隐藏哪部分。

这里写图片描述

ListView布局的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <LinearLayout
        android:id="@+id/left_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:gravity="center"
        android:background="@drawable/message_left" >

        <TextView
            android:id="@+id/left_msg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:textColor="#fff" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/right_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="center"
        android:background="@drawable/message_right" >

        <TextView
            android:id="@+id/right_msg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp" />
    </LinearLayout>

</LinearLayout>

需要自定义Adapter,创建Message类,只有内容和接收类别两个属性。

Myadapter:

package com.example.facetoyou;

import java.util.List;

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {
    private MainActivity main;
    private List<Message>  datas;


    public MyAdapter(MainActivity main, List<Message> datas) {
        super();
        this.main = main;
        this.datas = datas;
    }



    public MyAdapter() {
        super();
    }



    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return datas.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return datas.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View v=null;
        Message message=datas.get(position);
        ViewHolder vh=null;
        if(convertView==null)
        {
            vh=new ViewHolder();
            v=main.getLayoutInflater().inflate(R.layout.item_listview, null);
            vh.leftlayout=(LinearLayout) v.findViewById(R.id.left_layout);
            vh.rightlayout=(LinearLayout) v.findViewById(R.id.right_layout);
            vh.lefttext=(TextView) v.findViewById(R.id.left_msg);
            vh.righttext=(TextView) v.findViewById(R.id.right_msg);
            v.setTag(vh);

        }
        else
        {
            v=convertView;
            vh=(ViewHolder) v.getTag();
        }

        if(message.getType()==Message.TYPE_RECEIVED)
        {
            vh.rightlayout.setVisibility(View.GONE);
            vh.lefttext.setText(message.getContent());
        }else if(message.getType()==Message.TYPE_SEND)
        {
            vh.leftlayout.setVisibility(View.GONE);
            vh.righttext.setText(message.getContent());
        }


        return v;
    }

    private static class ViewHolder
    {
        LinearLayout leftlayout,rightlayout;
        TextView lefttext,righttext;
    }
}

根据文档的开发指南可以进行下一步(实现简单的两个人聊天):

1、SDK的初始化工作一般都放在Application中。

public class MyApplication extends Application {
    private static MyApplication instance;

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        instance = this;
        JMessageClient.setDebugMode(true);
        JMessageClient.init(this);
    }

    public static MyApplication getInstance() {
        return instance;
    }
}

2、之后是注册与登录

private void initRegister() {
        // TODO Auto-generated method stub
        //前两个参数是用户名和密码
        JMessageClient.register("xiaoer", "xiaoer", new BasicCallback() {

            @Override
            public void gotResult(int arg0, String arg1) {
                // TODO Auto-generated method stub
                //登陆
                JMessageClient.login("xiaoer", "xiaoer", new BasicCallback() {

                    @Override
                    public void gotResult(int arg0, String arg1) {
                        // TODO Auto-generated method stub
                        Toast.makeText(getApplicationContext(), "欢迎xiaoer", 1).show();

            //创建与对方pelon的会话,                Conversation.createSingleConversation("pelon");
                            JMessageClient.getSingleConversation("pelon");
                    }
                });
            }
        });
    }

3、消息的发送

String content=edit.getText().toString().trim();
        cn.jpush.im.android.api.model.Message msg = JMessageClient.createSingleTextMessage("pelon", content);
        datas.add(new Message(content, 1));
        JMessageClient.sendMessage(msg);
    //ListView 自动下滑
        list.smoothScrollToPosition(list.getCount());
        adapter.notifyDataSetChanged();
        edit.setText("");

4、消息的接收

需要设置监听:

JMessageClient.registerEventReceiver(this);

手动添加方法:

public void onEventMainThread(MessageEvent event){
          //do your own business
        cn.jpush.im.android.api.model.Message msg = event.getMessage();
        TextContent textcontent=(TextContent) msg.getContent();

        String content=textcontent.getText();
        datas.add(new Message(content, 0));
        list.smoothScrollToPosition(list.getCount());
        adapter.notifyDataSetChanged();
        }

这样的效果大体就达成了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值