Android 关于 个推消息透传处理

本文主要介绍Android平台下如何处理个推消息的透传功能。对于初次接触个推的开发者,理解透传消息的处理可能有些困难,因为与推送通知不同,透传消息不会自动显示通知,需要开发者自行接收并定制处理逻辑,例如创建自定义的通知弹出框。
摘要由CSDN通过智能技术生成

刚开始接触个推消息透传的童鞋不知道如何处理服务器发送过来的透传消息

因为它不像推送通知那样简单 直接会弹出通知框 透传消息需要自己处理然后自己定义弹出框

下面先看一下个推服务类处理

package com.app.push;

import android.content.Context;
import android.os.Message;
import android.util.Log;

import com.igexin.sdk.GTIntentService;
import com.igexin.sdk.PushManager;
import com.igexin.sdk.message.GTCmdMessage;
import com.igexin.sdk.message.GTTransmitMessage;
import com.app.CustomerApp;

/**
 * Created by Yangzb on 2017/7/25 20:28
 * E-mail:yangzongbin@si-top.com
 */

/**
 * 继承 GTIntentService 接收来自个推的消息, 所有消息在线程中回调, 如果注册了该服务, 则务必要在 AndroidManifest中声明, 否则无法接受消息<br>
 * onReceiveMessageData 处理透传消息<br>
 * onReceiveClientId 接收 cid <br>
 * onReceiveOnlineState cid 离线上线通知 <br>
 * onReceiveCommandResult 各种事件处理回执 <br>
 */
public class CustIntentService extends GTIntentService {
    /**
     * 为了观察透传数据变化.
     */
    private static int cnt;

    public CustIntentService() {

    }

    @Override
    public void onReceiveServicePid(Context context, int pid) {

    }

    @Override
    public void onReceiveClientId(Context context, String clientid) {
        Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
    }

    @Override
    public void onReceiveMessageData(Context context, GTTransmitMessage msg) {
        String appid = msg.getAppid();
        String taskid = msg.getTaskId();
        String messageid = msg.getMessageId();
        byte[] payload = msg.getPayload();
        String pkg = msg.getPkgName();
        String cid = msg.getClientId();

        // 第三方回执调用接口,actionid范围为90000-90999,可根据业务场景执行
        boolean result = PushManager.getInstance().sendFeedbackMessage(context, taskid, messageid, 90001);
        if (payload == null) {
            Log.e(TAG, "receiver payload = null");
        } else {
            String data = new String(payload);
            Log.d(TAG, "receiver payload = " + data);
            try {

                sendMessage(data, 0);//这里对透传消息进行发送 通过App中的方法进行处理
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void onReceiveOnlineState(Context context, boolean online) {

    }

    @Override
    public void onReceiveCommandResult(Context context, GTCmdMessage gtCmdMessage) {

    }

    private void sendMessage(String data, int what) {
        Message msg = Message.obtain();
        msg.what = what;
        msg.obj = data;
        App.getInstance().sendMessage(data);//将消息发送给App类
    }
}
接下来看再App类中如何处理
package com..app;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.widget.Toast;

import com.google.gson.Gson;
import com.iflytek.cloud.SpeechUtility;
import com.igexin.sdk.PushManager;
import com.sito.customer.BuildConfig;
import com.sito.customer.R;
import com.sito.customer.api.Api;
import com.sito.customer.common.ConstantStr;
import com.sito.customer.db.CustomerOpenHelp;
import com.sito.customer.mode.bean.User;
import com.sito.customer.mode.bean.news.DaoMaster;
import com.sito.customer.mode.bean.news.DaoSession;
import com.sito.customer.mode.bean.news.MessageContent;
import com.sito.customer.mode.bean.news.NewsBean;
import com.sito.customer.mode.bean.option.OptionBean;
import com.sito.customer.mode.count.CountRe
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值