个推sdk 集成(项目firecommand中的应用)
来源:互联网 发布:华硕访客网络限速 编辑:程序博客网 时间:2024/05/22 00:15
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{
@Overridepublic void onCreate() { super.onCreate(); GTServiceManager.getInstance().onCreate(this);}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); return GTServiceManager.getInstance().onStartCommand(this, intent, flags, startId);}@Overridepublic void onDestroy() { super.onDestroy(); GTServiceManager.getInstance().onDestroy();}@Overridepublic void onLowMemory() { super.onLowMemory(); GTServiceManager.getInstance().onLowMemory();}@Nullable@Overridepublic 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) {
}@Overridepublic 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);
}
}
@Overridepublic void onReceiveOnlineState(Context context, boolean b) {}@Overridepublic 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,以及后续的发送个推消息。客户端调用接口,即可。
- 个推sdk 集成(项目firecommand中的应用)
- 个推SDK的集成
- 如何集成个推sdk,并保证推送正常
- 个推 集成
- ios项目和个推集成,启动报错
- 消息推送 “个推集成”
- 及时推送个推集成
- iOS集成个推推送
- IOS集成个推总结
- Android 监听应用集成的SDK中的 Activity。
- iOS中5+SDK项目升级个推静态库.a为.framework
- 关于Android Studio集成Hbuilder开发个推项目不能获取Clientid的问题说明
- Android开发-个推(getui)透传推送实战项目应用(一)个推注册与官方Demo
- 个推推送 SDK 常见问题检查
- 个推推送 SDK常见问题检查 02
- 个推推送 SDK常见问题检查 03
- 个推SDK看护功能介绍
- iOS集成个推小结
- Memcached 及 Redis 架构分析和比较
- Eclipse中的buildpath详解
- TypeScript设计模式之单例、建造者、原型
- java中volatile关键字的含义
- NDIS PACKET结构,如何COPY?
- 个推sdk 集成(项目firecommand中的应用)
- 17. Letter Combinations of a Phone Number
- iOS开发:移动端与前端交互的一些基本操作
- myeclipse快捷键之前进——Ctrl+Y
- leetcode_middle_87_274. H-Index
- java使用ftp上传文件出现false()
- C++中引用(&)的用法和应用实例
- 字符编码判断
- POJ 3104 Drying (二分)