个推sdk 集成(项目firecommand中的应用)

develop appsever –集成sdk到 个推Server
这里写图片描述
流程梳理:
1.第三方应用集成个推SDK,个推SDK运行后获取CID返回给第三方应用,由第三方应用保存至其应用服务器;

2.第三方应用服务器调用推送API进行消息推送,个推SDK将接收到的推送消息回调给App进行处理。

即:手机服务器和个推服务器的sdk集成,然后手机服务器发送个推消息到服务器,服务器把个推消通过个推Android sdk发给手机端

1 。按照官方sdk集成方式,配置好。
2.自定义推送服务、接受推送消息的服务 的2个类

import com.igexin.sdk.GTServiceManager;

/**
* Description:自定义个推推送服务
* Created by:Kyle
* Date:2017/3/6
*/
public class GPushService extends Service{

@Override
public void onCreate() {
    super.onCreate();
    GTServiceManager.getInstance().onCreate(this);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);
    return GTServiceManager.getInstance().onStartCommand(this, intent, flags, startId);
}


@Override
public void onDestroy() {
    super.onDestroy();
    GTServiceManager.getInstance().onDestroy();
}

@Override
public void onLowMemory() {
    super.onLowMemory();
    GTServiceManager.getInstance().onLowMemory();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
    return GTServiceManager.getInstance().onBind(intent);
}

}

接受推送消息的服务
package com.kesen.fire.getui;

import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.google.gson.Gson;
import com.igexin.sdk.GTIntentService;
import com.igexin.sdk.message.GTCmdMessage;
import com.igexin.sdk.message.GTTransmitMessage;
import com.kesen.fire.bean.BaseResponse;
import com.kesen.fire.bean.CarBean;
import com.kesen.fire.bean.GTResult;
import com.kesen.fire.bean.UserBean;
import com.kesen.fire.constant.Constant;
import com.kesen.fire.data.UserData;
import com.kesen.fire.net.NetWork;
import com.orhanobut.logger.Logger;

import java.util.List;

import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

/**
* Description: 继承 GTIntentService 接收来自个推的消息, 所有消息在线程中回调, 如果注册了该服务, 则务必要在 AndroidManifest中声明, 否则无法接受消息
* onReceiveMessageData 处理透传消息
* onReceiveClientId 接收 cid
* onReceiveOnlineState cid 离线上线通知
* onReceiveCommandResult 各种事件处理回执
* Created by:Kyle
* Date:2017/3/6
*/
public class GIntentService extends GTIntentService{
@Override
public void onReceiveServicePid(Context context, int pid) {

}

@Override
public void onReceiveClientId(Context context, String clientid) {
    Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
    UserBean user= UserData.getUserInfo();
    if(user!=null){
        bindGT(user.getAccount(),clientid);
    }
}

// bindGT()方法,是调用自己android的服务器后台接口,实现和个推的绑定,并返回绑定是否成功?
//onReceiveMessageData()里面处理接受透传消息(个人理解是自定义的推送消息)
//这里解析json 数据,并 sendBroadcast(res.data.unhandle);将推送消息个数广播给用户
@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();
if(payload!=null){
String data=new String(payload);
Logger.d(“—–data:”+data);
Gson gson = new Gson();
GTResult res=gson.fromJson(data,GTResult.class);
Logger.d(“—–data:”+(res.data).unhandle);
sendBroadcast(res.data.unhandle);
}
}

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

}

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

}
private void sendBroadcast(int num){
    Intent intent=new Intent(Constant.ACTION_FIRE_NUM);
    intent.putExtra("num",num);
    sendBroadcast(intent);
}
private void bindGT(String uname,String clientid){
    NetWork.getInstance()
            .getFireApi ()
            .bindGT(uname, clientid)
            .subscribeOn(Schedulers.io())
            .observeOn (AndroidSchedulers.mainThread())
            .subscribe (new Subscriber<BaseResponse<String>>() {
                @Override
                public void onCompleted () {

                }

                @Override
                public void onError (Throwable e) {
                }

                @Override
                public void onNext (BaseResponse<String> response) {
                    if(response.isOk()){
                        Logger.d("----gt bind success");
                    }else{
                        Logger.d("----gt bind failed");
                    }
                }
            });
}

}

3。在MainActivity(或是在service)的onCreate()或者onResume()方法中调用个推SDK初始化方法。如果使用了自定义推送服务,初始化方法还需要传入新的自定义推送服务名:
个推SDK初始化方法
PushManager.getInstance().initialize(this.getApplicationContext(), GPushService.class);

**MainActivity注册上述 IntentService 类:**    PushManager.getInstance().registerPushIntentService(this.getApplicationContext(), GIntentService.class);

注意:1。包名和申请应用的包名一致
2。权限申请在application之外

回调函数:标示我们设置成功or失败后返回的参数以及需要处理的操作

或是用extends BroadcastReceiver() 复写onReceiver(){
//弹出接收到的广播的消息
}
别忘清单中 action category 的配置

如果是自己demon , 自己搭建服务器

后台用java 、API 写接口 绑定 bindGT,以及后续的发送个推消息。客户端调用接口,即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值