第三方推送服务:个推服务推送流程

来源:互联网 发布:上海市物业大楼数据 编辑:程序博客网 时间:2024/05/02 01:25

一、使用个推服务向手机端推送数据首先需要具备以下条件:

1、个推账号(个推官网注册)

2、由苹果推送证书生成的.p12文件(ANDROID不需要证书)

3、个推SDK(个推官网下载)


二、以上条件具备后,开始架构推送服务

1、在申请的个推账号上:登记应用→添加.p12证书(IOS)→测试→登记成功

2、在app中集成个推的SDK(个推官网有文档)

3、找到刚才登记的应用→创建推送→填入相关信息→发送


三、使用java后台做数据推送

1、上述条件及架构完成后,在eclipes或myeclipse中新建一个项目

2、在项目中加入jar包(我的下载资源里有):

commons-codec-1.2.jar

commons-configuration-1.6.jar

commons-logging-1.0.3.jar

gexin-rp-sdk-base-4.0.0.2.jar

gexin-rp-sdk-http-4.0.0.2.jar

gexin-rp-sdk-template-4.0.0.2.jar

jackson-all-1.8.5.jar

protobuf-java-2.5.0.jar

3、新建推送类

4、在类中加入以下代码:

package com.push.util;

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

import net.sf.json.JSONObject;

import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.AppMessage;
import com.gexin.rp.sdk.base.impl.ListMessage;
import com.gexin.rp.sdk.base.impl.SingleMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.base.payload.APNPayload;
import com.gexin.rp.sdk.exceptions.RequestException;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.TransmissionTemplate;


/**
 * 使用第三方推送服务:个推
 * @author xueyueyue
 * @version 1.0
 * @since 2015-09-17
 */
public class PushMsgUtil {

//个推服务地址
    static String host = "http://sdk.open.api.igexin.com/apiex.htm";
    
    /**
     * 按CID单个推送
     * 
     * @param appId 由IGetui管理页面生成,是您的应用与SDK通信的标识之一,每个应用都对应一个唯一的AppID
     * @param appKey 预先分配的第三方应用对应的Key,是您的应用与SDK通信的标识之一。
     * @param master 个推服务端API鉴权码,用于验证调用方合法性。在调用个推服务端API时需要提供
     * @param CID 个推业务层中的对外用户标识,用于标识客户端身份,由第三方客户端获取并保存到第三方服务端,是个推SDK的唯一识别号,简称CID。
     * @param obj 需要推送的JSON数据
     * @return  Boolean类型,true:成功,false:失败。
     */
    public static  Boolean pusMsgToSingle(String appId,String appKey,String master,String CID,String obj){
     
    IGtPush push = new IGtPush(host, appKey, master);
//获取透传模板
TransmissionTemplate template = getTemplate(appId, appKey,obj);
SingleMessage message = new SingleMessage();
//是否支持离线推送(true:支持,false:不支持)
message.setOffline(true);
//离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 * 3600 * 1000);
message.setData(template);
//可选。判断是否客户端是否wifi环境下推送,1为在WIFI环境下,0为不限制网络环境。
message.setPushNetWorkType(0);
//设置推送目标 
Target target = new Target();
//根据CID推送(CID和用户别名只能2者选其一)
target.setAppId(appId);
target.setClientId(CID);
//别名推送
// String alias = "张三";
// target.setAlias(alias);

IPushResult ret = null;
try{
   ret = push.pushMessageToSingle(message, target);
}catch(RequestException e){
   e.printStackTrace();
   ret = push.pushMessageToSingle(message, target, e.getRequestId());
}
if(ret != null){
String flag = (String) ret.getResponse().get("result");
if(flag.equals("ok")){
System.out.println(ret.getResponse().toString());
return true;
}
System.out.println(ret.getResponse().toString());
 
}else{
System.out.println("服务器响应异常");
}
return false;
         
    }

    /**
     * 透传模板
     * 
     * @param appId  由IGetui管理页面生成,是您的应用与SDK通信的标识之一,每个应用都对应一个唯一的AppID
     * @param appKey 预先分配的第三方应用对应的Key,是您的应用与SDK通信的标识之一。
     * @param obj JSON字符串
     * @return TransmissionTemplate类型
     */
    
    public static TransmissionTemplate getTemplate(String appId,String appKey,String obj) {
    
TransmissionTemplate template = new TransmissionTemplate();
   template.setAppId(appId);
   template.setAppkey(appKey);
   template.setTransmissionContent(obj);
   template.setTransmissionType(2);
   APNPayload payload = new APNPayload();
   payload.setBadge(1);
   payload.setContentAvailable(1);
   payload.setSound("default");
   payload.setCategory("$由客户端定义");
   template.setAPNInfo(payload);
   return template;
    
    }
    
    
   public static void main(String[] args) {
   String appId = "et3Y5mTvvV5Wthq1cufvy1";
    String appKey = "ImPMrVNUxtAvC1VH3KUsa2";
     String master = "1wbcrbMyls62zvp1vieLm2";
     String CID = "f135c2609e68cb4eab5a30ae6f25c63d"; 
     JSONObject obj = new JSONObject();
     obj.put("title", "个推测试");
obj.put("info", "当你看到我时,说明已经成功了!");

    //单推
    Boolean flag = PushMsgUtil.pusMsgToSingle(appId, appKey, master, CID, obj.toString());
  System.out.println(flag);
}
    

}

四、此条很重要

咳咳...:

1、此文乃俺原创

2、也是饿第一次发帖

3、在此写下鄙人的座右铭:

微笑→_→让生活更美好!

4、祝福看到的你:幸福快乐!(没错就是你,哈哈..)

2 0
原创粉丝点击