您的位置:首页 > 移动开发 > Android开发

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

2015-09-24 15:20 911 查看
一、使用个推服务向手机端推送数据首先需要具备以下条件:

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、祝福看到的你:幸福快乐!(没错就是你,哈哈..)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java ios android 手机 苹果