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

    xiaoxiao2021-03-25  112

    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,以及后续的发送个推消息。客户端调用接口,即可。

    转载请注明原文地址: https://ju.6miu.com/read-11218.html

    最新回复(0)