腾讯 信鸽测试demo

移动端 信鸽测试应用代码:

移动端主要实现对信鸽服务的集成。对信鸽推送过来的消息的获取解析以及展示。 暂时没有对通知类消息的点击做出响应操作。同时也省略了对信鸽服务在腾讯官网的注册、在 项目中进行配置的过程。


1.测试MainActivity.java

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.tencent.android.tpush.XGPushClickedResult;
import com.tencent.android.tpush.XGPushManager;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private TextView mTextView;
    private ListView mListView;
    private MyListViewAdapter mMyListViewAdapter;
    private List<NotificationTips> list = new ArrayList<>();
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EventBusUtil.register(this);
        registerXG();
        initView();
    }

    @Override
    protected void onStart() {
        super.onStart();
        XGPushClickedResult clickedResult = XGPushManager.onActivityStarted(this);
        if (clickedResult != null) {
            String title = clickedResult.getTitle();
            Log.v("TPush", "title:" + title);
            String id = clickedResult.getMsgId() + "";
            Log.v("TPush", "id:" + id);
            String content = clickedResult.getContent();
            Log.v("TPush", "content:" + content);
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBusUtil.unregister(this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
    }

    private void initView() {
        mTextView = (TextView) findViewById(R.id.device_token);
        mListView = (ListView) findViewById(R.id.lv);
    }


    public void onEventMainThread(ResponseEvent event) {
        String msg = "onEventMainThread收到了消息:" + event.getMessage();
        Log.i(TAG, msg);
        mTextView.setText(msg);
        if (!event.isOK()) {
            Toast.makeText(this, event.getMessage(), Toast.LENGTH_SHORT).show();
            return;
        }
    }

    public void onEventMainThread(NotificationTips notificationTips) {
        String msg = "onEventMainThread收到了消息:" + notificationTips.getContent();
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
        list.add(0, notificationTips);
        if (mMyListViewAdapter == null) {
            mMyListViewAdapter = new MyListViewAdapter(this);
        }
        mMyListViewAdapter.setList(list);
        mListView.setAdapter(mMyListViewAdapter);
    }

    private void registerXG() {
        XGPushUtil.registerPush(this, "test", XGRegisterCallback.getInstance());
    }
}

2 消息分发工具EventBusUtil.java类

import de.greenrobot.event.EventBus;

/**
 * Created by Administrator on 2017/4/12.
 */

public class EventBusUtil {
    public static void register(Object subscriber) {
        EventBus.getDefault().unregister(subscriber);
        EventBus.getDefault().register(subscriber);
    }

    public static void register(Object subscriber, String methodName) {
        EventBus.getDefault().register(subscriber, methodName);
    }

    public static void unregister(Object subscriber) {
        EventBus.getDefault().unregister(subscriber);
    }

    public static void post(Object event) {
        EventBus.getDefault().post(event);
    }
}

3定义EventBus传递消息的对象实体

public class ResponseEvent {
    public static final int STATUS_OK = 1;
    public static final int STATUS_ERROR = 0;


    private int id;
    private int status;
    private Object data;
    private String message;
    private Class<?> targetClass;

    public ResponseEvent(int id) {
        this.id = id;
    }

    public ResponseEvent(int id, int status) {
        this(id, status, null, "");
    }

    public ResponseEvent(int id, int status, String message) {
        this(id, status, null, message);
    }

    public ResponseEvent(int id, int status, Object data) {
        this(id, status, data, "");
    }

    public ResponseEvent(int id, int status, Object data, String message) {
        this.id = id;
        this.status = status;
        this.data = data;
        this.message = message;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    @SuppressWarnings("unchecked")
    public <T> T getData() {
        return (T) data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Class<?> getTargetClass() {
        return targetClass;
    }

    public void setTargetClass(Class<?> targetClass) {
        this.targetClass = targetClass;
    }

    public boolean isForTarget(Object target) {
        if (target == null) {
            return false;
        }

        return target.getClass().getSimpleName().equals(targetClass.getSimpleName());
    }

    public boolean isOK() {
        return this.status == STATUS_OK;
    }
}

4 消息传递状态常量类

public class ResponseEventStatus {
    private static final int EVENT_BASE = 10000000;

    public static final int OK = 1;
    public static final int ERROR = 0;

    public static final int NOTIFICATION_BASE = EVENT_BASE + 4000;

    public static final int NOTIFICATION_REGISTER_FAIL = NOTIFICATION_BASE + 1;
    public static final int NOTIFICATION_REGISTER_SUCCESS = NOTIFICATION_BASE + 2;
}

5 信鸽消息接收类

public class MyMessageReceiver extends XGPushBaseReceiver {

    private static final String TAG = "MyMessageReceiver";

    @Override
    public void onRegisterResult(Context context, int i, XGPushRegisterResult xgPushRegisterResult) {
        Log.i("MainActivity", "onRegisterResult=");

    }

    @Override
    public void onUnregisterResult(Context context, int i) {
        Log.i("MainActivity", "onUnregisterResult=");
        if (context == null) {
            return;
        }
        String text = "";
        if (i == XGPushBaseReceiver.SUCCESS) {
            text = "反注册成功";
        } else {
            text = "反注册失败" + i;
        }
        show(context, text);
    }

    @Override
    public void onSetTagResult(Context context, int i, String s) {
        Log.i("MainActivity", "onSetTagResult=");
    }

    @Override
    public void onDeleteTagResult(Context context, int i, String s) {
        Log.i("MainActivity", "onDeleteTagResult=");

    }

    @Override
    public void onTextMessage(Context context, XGPushTextMessage xgPushTextMessage) {
        Log.i("MainActivity", "onTextMessage=");
        String text = "收到了消息 :" + xgPushTextMessage.getContent();
        show(context, text);
        Log.i("MainActivity", text);
    }

    @Override
    public void onNotifactionClickedResult(Context context, XGPushClickedResult xgPushClickedResult) {

        Log.i("MainActivity", "onNotifactionClickedResult=");
    }

    @Override
    public void onNotifactionShowedResult(Context context, XGPushShowedResult xgPushShowedResult) {
        show(context, "您有1条新消息, " + "通知被展示 , " + xgPushShowedResult.toString());
        Log.i("MainActivity", "onNotifactionShowedResult=" + xgPushShowedResult.toString());
        NotificationTips notificationTips;
        String content = xgPushShowedResult.getContent();
        if (content != null && content.length() > 0) {
            notificationTips = new NotificationTips();
            notificationTips.setContent(content);
            notificationTips.setTitle(xgPushShowedResult.getTitle());
            notificationTips.setId(xgPushShowedResult.getMsgId());
            notificationTips.setNotificationType(xgPushShowedResult.getNotificationActionType());

            EventBusUtil.post(notificationTips);
        }

    }

    private void show(Context context, String text) {
        Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
    }
}

6 信鸽注册回调类

import com.tencent.android.tpush.XGIOperateCallback;

/**
 * Created by Administrator on 2017/4/12.
 */

public class XGRegisterCallback implements XGIOperateCallback {
    private static XGRegisterCallback instance;

    public XGRegisterCallback() {
    }

    static {
        instance = new XGRegisterCallback();
    }

    public static XGRegisterCallback getInstance() {
        return instance;
    }

    @Override
    public void onSuccess(Object o, int i) {
        Log.i("this", "onSuccess==");
        String successMsg = "通知注册功能成功。";
        EventBusUtil.post(new ResponseEvent(ResponseEventStatus.NOTIFICATION_REGISTER_SUCCESS, ResponseEventStatus.OK, successMsg));
    }

    @Override
    public void onFail(Object o, int i, String s) {
        Log.i("this", "onFail==");
        String errorMsg = "通知注册功能失败,可能不能及时通知您!";
        EventBusUtil.post(new ResponseEvent(ResponseEventStatus.NOTIFICATION_REGISTER_FAIL, ResponseEventStatus.ERROR, errorMsg));
    }
}

信鸽推送工具类

public class XGPushUtil {
    private static final String MIN_VERSION = "2.46";

    public static void registerPush(Context context, String account, XGIOperateCallback registerCallback) {
        XGPushManager.registerPush(context.getApplicationContext(), account, registerCallback);

        if (MIN_VERSION.compareToIgnoreCase(DeviceUtil.getAndroidVersion()) > 0) {
            Intent service = new Intent(context, XGPushService.class);
            context.startService(service);
        }
    }
}

7 消息实体类

public class NotificationTips {
    private String content;
    private long id;
    private String title;
    private int notificationType;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getNotificationType() {
        return notificationType;
    }

    public void setNotificationType(int notificationType) {
        this.notificationType = notificationType;
    }
}

8 接收到消息负责展示消息的listView的dapter

public class MyListViewAdapter extends BaseAdapter {
    private List<NotificationTips> mNotificationTipsList;
    private LayoutInflater mLayoutInflater;

    public MyListViewAdapter(Context context) {
        mLayoutInflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return mNotificationTipsList.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = mLayoutInflater.inflate(R.layout.listview_item, null);
        ViewHolder viewHolder = new ViewHolder(convertView);
        convertView.setTag(viewHolder);
        viewHolder.mTVTitle.setText(mNotificationTipsList.get(position).getTitle());
        viewHolder.mTVContent.setText(mNotificationTipsList.get(position).getContent());
        return convertView;
    }

    public void setList(List<NotificationTips> list) {
        this.mNotificationTipsList = list;
        notifyDataSetChanged();
    }

    static class ViewHolder {
        private TextView mTVTitle;
        private TextView mTVContent;
        private ImageView mIV;

        public ViewHolder(View view) {
            mTVTitle = (TextView) view.findViewById(R.id.tv_title);
            mTVContent = (TextView) view.findViewById(R.id.tv_content);
            mIV = (ImageView) view.findViewById(R.id.iv_icon);
        }
    }

}

 9 其他的工具类

public class DeviceUtil {
    public static String getAndroidVersion() {
        return android.os.Build.VERSION.RELEASE;
    }

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值