Getui

一、浏览个推官方文档,注册个推账号

1. http://docs.getui.com/getui/server/java/start/

2. 第一步: 创建个推开发者帐号

访问个推开发者平台http://dev.getui.com 注册个推开发者帐号,如下图所示:

3. 第二步: 获取访问凭

创建账号成功并登录后,可以在应用列表中看到自动生成的【个推App Demo】,然后点击【创建推送】,如下图所示:


然后点击左侧菜单栏【配置管理】--> 【应用配置】,就能看到关于此app的配置信息,这些配置信息就是第五步使用SDK发送消息需要的AppID,AppKey,MasterSecret,如下图所示:

4. 第三步: 安装Demo应用到手

在应用【个推App Demo】点击【下载应用】,下载后安装到手机上,用来接受推送消息:


二、安装个推Java SDK

注:JDK要求

个推Java SDK需要JDK1.6以及之上版本。 可以到后面的网址去下载最新版的JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html

1. Maven方式安装

将下边的依赖放到maven项目的 pom.xml 中:

 

 

2. Jar包安装方式

(1) 下载工具包

下载服务端SDK开发工具包,下载地址为:http://www.getui.com/download/docs/getui/server/GETUI_JAVA_SDK_4.0.1.17.zip

(2) 导入依赖jar

你的工程需要依赖...\GETUI_SERVER_SDK\资源文件”目录下的所有jar包,如果使用Eclipse的话,导入jar包后,如下图所示:

 

(3) 占位

 

三、eclipse中新建一个测试工程

1. New--project--JavaProject --Next--输入project Name--finish

 

 

 

四、测试消息发送,检测软件环境是否安装无误

下面以app推送接口为例来发送消息:

新建类nameAppPush,将以下代码复制到类中,运行后手机App可以收到一条消息推送,如图显示:

import com.gexin.rp.sdk.base.IPushResult;

import com.gexin.rp.sdk.base.impl.AppMessage;

import com.gexin.rp.sdk.http.IGtPush;

import com.gexin.rp.sdk.template.LinkTemplate;

 

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

 

 

public class AppPush {

 

    //定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置

    private static String appId = "";

    private static String appKey = "";

    private static String masterSecret = "";

    private static String url = "http://sdk.open.api.igexin.com/apiex.htm";

 

    public static void main(String[] args) throws IOException {

 

        IGtPush push = new IGtPush(url, appKey, masterSecret);

 

        // 定义"点击链接打开通知模板",并设置标题、内容、链接

        LinkTemplate template = new LinkTemplate();

        template.setAppId(appId);

        template.setAppkey(appKey);

        template.setTitle("欢迎使用个推!");

        template.setText("这是一条推送消息~");

        template.setUrl("http://getui.com");

 

        List<String> appIds = new ArrayList<String>();

        appIds.add(appId);

 

        // 定义"AppMessage"类型消息对象,设置消息内容模板、发送的目标App列表、是否支持离线发送、以及离线消息有效期(单位毫秒)

        AppMessage message = new AppMessage();

        message.setData(template);

        message.setAppIdList(appIds);

        message.setOffline(true);

        message.setOfflineExpireTime(1000 * 600);

 

        IPushResult ret = push.pushMessageToApp(message);

        System.out.println(ret.getResponse().toString());

    }

}

 

五、对单个用户推送消息

向单个clientid或别名用户推送消息。

注:个推使用clientid来标识每个独立的用户,每一台终端上每一个app拥有一个独立的clientid。

import com.gexin.rp.sdk.base.IPushResult;

import com.gexin.rp.sdk.base.impl.SingleMessage;

import com.gexin.rp.sdk.base.impl.Target;

import com.gexin.rp.sdk.exceptions.RequestException;

import com.gexin.rp.sdk.http.IGtPush;

import com.gexin.rp.sdk.template.LinkTemplate;

import com.gexin.rp.sdk.template.style.Style0;

 

public class PushtoSingle {

    //采用"Java SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可以自行替换

    private static String appId = "";

    private static String appKey = "";

    private static String masterSecret = "";

 

    static String CID = "";

  //别名推送方式,需进行绑定操作

   // static String Alias = "";

    static String host = "http://sdk.open.api.igexin.com/apiex.htm";

 

    public static void main(String[] args) throws Exception {

        IGtPush push = new IGtPush(host, appKey, masterSecret);

        LinkTemplate template = linkTemplateDemo();

        SingleMessage message = new SingleMessage();

        message.setOffline(true);

        // 离线有效时间,单位为毫秒,可选

        message.setOfflineExpireTime(24 * 3600 * 1000);

        message.setData(template);

        // 可选,1为wifi0为不限制网络环境。根据手机处于的网络情况,决定是否下发

        message.setPushNetWorkType(0);

        Target target = new Target();

        target.setAppId(appId);

        target.setClientId(CID);

        //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) {

            System.out.println(ret.getResponse().toString());

        } else {

            System.out.println("服务器响应异常");

        }

    }

    public static LinkTemplate linkTemplateDemo() {

        LinkTemplate template = new LinkTemplate();

        // 设置APPID与APPKEY

        template.setAppId(appId);

        template.setAppkey(appKey);

 

        Style0 style = new Style0();

        // 设置通知栏标题与内容

        style.setTitle("中圣环境");

        style.setText("测试推送");

        // 配置通知栏图标

        style.setLogo("icon.png");

        // 配置通知栏网络图标

        style.setLogoUrl("");

        // 设置通知是否响铃,震动,或者可清除

        style.setRing(true);

        style.setVibrate(true);

        style.setClearable(true);

        template.setStyle(style);

 

        // 设置打开的网址地址

        template.setUrl("http://39.106.164.173:8080");

        return template;

    }

}

六、对指定列表用户推送消息

上传clientid或别名列表,对列表中所有clientid或别名用户进行消息推送,如果仅对单个用户推送务必使用单推接口,否则会严重影响推送性能,如果对少量甚至几个用户推送同样的消息,建议使用单推实现,性能会更高。

注:个推使用clientid来标识每个独立的用户,每一台终端上每一个app拥有一个独立的clientid。

import java.util.ArrayList;

import java.util.List;

import com.gexin.rp.sdk.base.IPushResult;

import com.gexin.rp.sdk.base.impl.ListMessage;

import com.gexin.rp.sdk.base.impl.Target;

import com.gexin.rp.sdk.http.IGtPush;

import com.gexin.rp.sdk.template.NotificationTemplate;

public class PushList {

    //采用"Java SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可以自行替换

    private static String appId = "";

    private static String appKey = "";

    private static String masterSecret = "";

 

    static String CID1 = "";

    static String CID2 = "";

    //别名推送方式

    // static String Alias1 = "";

    // static String Alias2 = "";

    static String host = "http://sdk.open.api.igexin.com/apiex.htm";

    public static void main(String[] args) throws Exception {

        // 配置返回每个用户返回用户状态,可选

        System.setProperty("gexin_pushList_needDetails", "true");

    // 配置返回每个别名及其对应cid的用户状态,可选

    // System.setProperty("gexin_pushList_needAliasDetails", "true");

        IGtPush push = new IGtPush(host, appKey, masterSecret);

        // 通知透传模板

        NotificationTemplate template = notificationTemplateDemo();

        ListMessage message = new ListMessage();

        message.setData(template);

        // 设置消息离线,并设置离线时间

        message.setOffline(true);

        // 离线有效时间,单位为毫秒,可选

        message.setOfflineExpireTime(24 * 1000 * 3600);

        // 配置推送目标

        List targets = new ArrayList();

        Target target1 = new Target();

        Target target2 = new Target();

        target1.setAppId(appId);

        target1.setClientId(CID1);

   //     target1.setAlias(Alias1);

        target2.setAppId(appId);

        target2.setClientId(CID2);

   //     target2.setAlias(Alias2);

        targets.add(target1);

        targets.add(target2);

        // taskId用于在推送时去查找对应的message

        String taskId = push.getContentId(message);

        IPushResult ret = push.pushMessageToList(taskId, targets);

        System.out.println(ret.getResponse().toString());

    }

    public static NotificationTemplate notificationTemplateDemo() {

        NotificationTemplate template = new NotificationTemplate();

        // 设置APPID与APPKEY

        template.setAppId(appId);

        template.setAppkey(appKey);

 

        Style0 style = new Style0();

        // 设置通知栏标题与内容

        style.setTitle("请输入通知栏标题");

        style.setText("请输入通知栏内容");

        // 配置通知栏图标

        style.setLogo("icon.png");

        // 配置通知栏网络图标

        style.setLogoUrl("");

        // 设置通知是否响铃,震动,或者可清除

        style.setRing(true);

        style.setVibrate(true);

        style.setClearable(true);

        template.setStyle(style);

 

        // 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动

        template.setTransmissionType(2);

        template.setTransmissionContent("请输入您要透传的内容");

        return template;

    }

}

七、对指定应用群推消息

对单个或多个指定应用的所有用户群发推送消息。

注:个推使用AppID来标识每个独立的应用。

public class PushtoAPP {    

    //采用"Java SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可以自行替换

    private static String appId = "";

    private static String appKey = "";

    private static String masterSecret = "";

    static String host = "http://sdk.open.api.igexin.com/apiex.htm";

 

    public static void main(String[] args) throws Exception {

 

        IGtPush push = new IGtPush(host, appKey, masterSecret);

 

        LinkTemplate template = linkTemplateDemo();

        AppMessage message = new AppMessage();

        message.setData(template);

 

        message.setOffline(true);

        //离线有效时间,单位为毫秒,可选

        message.setOfflineExpireTime(24 * 1000 * 3600);

        //推送给App的目标用户需要满足的条件

        AppConditions cdt = new AppConditions();

        List<String> appIdList = new ArrayList<String>();

        appIdList.add(appId);

        message.setAppIdList(appIdList);

        //手机类型

        List<String> phoneTypeList = new ArrayList<String>();

        //省份

        List<String> provinceList = new ArrayList<String>();

        //自定义tag

        List<String> tagList = new ArrayList<String>();

 

        cdt.addCondition(AppConditions.PHONE_TYPE, phoneTypeList);

        cdt.addCondition(AppConditions.REGION, provinceList);

        cdt.addCondition(AppConditions.TAG,tagList);

        message.setConditions(cdt);

 

        IPushResult ret = push.pushMessageToApp(message,"任务别名_toApp");

        System.out.println(ret.getResponse().toString());

    }

 

    public static LinkTemplate linkTemplateDemo() throws Exception {

        LinkTemplate template = new LinkTemplate();

        template.setAppId(appId);

        template.setAppkey(appKey);

 

        Style0 style = new Style0();

        // 设置通知栏标题与内容

        style.setTitle("请输入通知栏标题");

        style.setText("请输入通知栏内容");

        // 配置通知栏图标

        style.setLogo("icon.png");

        // 配置通知栏网络图标

        style.setLogoUrl("");

        // 设置通知是否响铃,震动,或者可清除

        style.setRing(true);

        style.setVibrate(true);

        style.setClearable(true);

        template.setStyle(style);

 

        template.setUrl("http://www.baidu.com");

 

        return template;

    }

}

八、定时对指定应用群推消息

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

 

import com.gexin.rp.sdk.base.IPushResult;

import com.gexin.rp.sdk.base.impl.AppMessage;

import com.gexin.rp.sdk.http.IGtPush;

import com.gexin.rp.sdk.template.LinkTemplate;

import com.gexin.rp.sdk.template.NotificationTemplate;

import com.gexin.rp.sdk.template.style.Style0;

 

 

public class PushtoAPP {

    //采用"Java SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可以自行替换

    private static String appId = "";

    private static String appKey = "";

    private static String masterSecret = "";

    static String host = "http://sdk.open.api.igexin.com/apiex.htm";

    public static void main(String[] args) throws Exception {

        IGtPush push = new IGtPush(host, appKey, masterSecret);

        LinkTemplate template = linkTemplateDemo();

        AppMessage message = new AppMessage();

        message.setData(template);

        message.setOffline(true);

        //离线有效时间,单位为毫秒,可选

        message.setOfflineExpireTime(24 * 1000 * 3600);

        //设置推送时间

        message.setPushTime("201710261050");

        //推送给App的目标用户需要满足的条件

        AppConditions cdt = new AppConditions();

        List<String> appIdList = new ArrayList<String>();

        appIdList.add(appId);

        message.setAppIdList(appIdList);

        //手机类型

        List<String> phoneTypeList = new ArrayList<String>();

        //省份

        List<String> provinceList = new ArrayList<String>();

        //自定义tag

        List<String> tagList = new ArrayList<String>();

        cdt.addCondition(AppConditions.PHONE_TYPE, phoneTypeList);

        cdt.addCondition(AppConditions.REGION, provinceList);

        cdt.addCondition(AppConditions.TAG, tagList);

        message.setConditions(cdt);

 

        IPushResult ret = push.pushMessageToApp(message, "任务别名_toApp");

        System.out.println(ret.getResponse().toString());

    }

    public static LinkTemplate linkTemplateDemo() throws Exception {

        LinkTemplate template = new LinkTemplate();

        template.setAppId(appId);

        template.setAppkey(appKey);

 

        Style0 style = new Style0();

        // 设置通知栏标题与内容

        style.setTitle("请输入通知栏标题");

        style.setText("请输入通知栏内容");

        // 配置通知栏图标

        style.setLogo("icon.png");

        // 配置通知栏网络图标

        style.setLogoUrl("");

        // 设置通知是否响铃,震动,或者可清除

        style.setRing(true);

        style.setVibrate(true);

        style.setClearable(true);

        template.setStyle(style);

        template.setUrl("http://www.baidu.com");

        return template;

    }

}

九、别名推送

个推使用clientid来标识每个独立的用户,但clientid不等于开发者应用上的用户名,如果希望将消息发给应用上指定用户名的用户,则需要将用户名指定一个用户别名。

为一个或者一批clientid用户定义一个用户别名,通过这个用户别名对一个或一批用户进行推送。目前一个别名最多允许绑定10个clientid。

别名规则说明:

1. 有效的别名组成:字母(区分大小写)、数字、下划线、汉字

2. 任务别名长度限制为 40 字节。( UTF-8 )

3. 一个别名最多允许绑定10个clientid。

4. 一个clientid只能绑定一个别名。

1. 为别名绑定单个CID

import com.gexin.rp.sdk.base.IAliasResult;

import com.gexin.rp.sdk.http.IGtPush;

 

public class AliasFunction {

   //采用"Java SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可以自行替换

   static String appId = "nSJtifqVSI7HkPrKHlxhD6";

   static String appkey = "WlZGdJlcUB8ds32Y2Thn91";

   static String mastersecret = "5vjiwMEaij5VvYf7VhlGM4";

   static String CID = "3e170b169630706f82baf94c8a2b8923";

   static String host = "http://sdk.open.api.igexin.com/apiex.htm";

   static String Alias = "aliastest";

 

   public static void main(String[] args) throws Exception {

      IGtPush push = new IGtPush(host, appkey, mastersecret);

 

      IAliasResult bindSCid = push.bindAlias(appId, Alias, CID);

      System.out.println("绑定结果:" + bindSCid.getResult() + "错误码:" + bindSCid.getErrorMsg());

 

   }

}

2. 为别名绑定多个CID

import java.util.ArrayList;

import java.util.List;

import com.gexin.rp.sdk.base.IAliasResult;

import com.gexin.rp.sdk.base.impl.Target;

import com.gexin.rp.sdk.http.IGtPush;

 

public class AliasFunction1 {

   //采用"Java SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可以自行替换

   static String appId = "nSJtifqVSI7HkPrKHlxhD6";

   static String appkey = "WlZGdJlcUB8ds32Y2Thn91";

   static String mastersecret = "5vjiwMEaij5VvYf7VhlGM4";

   static String host = "http://sdk.open.api.igexin.com/apiex.htm";

 

   public static void main(String[] args) {

      List<Target> Lcids = new ArrayList<Target>();

      Target target1 = new Target();

      Target target2 = new Target();

      target1.setClientId("3e170b169630706f82baf94c8a2b8923");

      target1.setAlias("个推1");

      target2.setClientId("23170b169630706f82baf94c8a2b8923");

      target2.setAlias("个推2");

      Lcids.add(target1);

      Lcids.add(target2);

      IGtPush push = new IGtPush(host, appkey, mastersecret);

      IAliasResult bindLCid = push.bindAlias(appId, Lcids);

      System.out.println(bindLCid.getResult());

      System.out.println(bindLCid.getErrorMsg());

   }

}

// 注:只要有一个cid绑定成功,getResult返回结果就为true

3. queryClientId-根据别名获取clientid信息

import com.gexin.rp.sdk.base.IAliasResult;

import com.gexin.rp.sdk.http.IGtPush;

public class AliasFunction2 {

   //采用"Java SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可以自行替换

   static String appId = "nSJtifqVSI7HkPrKHlxhD6";

   static String appkey = "WlZGdJlcUB8ds32Y2Thn91";

   static String mastersecret = "5vjiwMEaij5VvYf7VhlGM4";

    static String Alias = "个推";

    static String host = "http://sdk.open.api.igexin.com/apiex.htm";

    public static void main(String[] args) throws Exception {

        IGtPush push = new IGtPush(host, appkey, mastersecret);

        IAliasResult queryClient = push.queryClientId(appId, Alias);

        System.out.println("根据别名获取的CID:" + queryClient.getClientIdList());

    }

}

4. queryAlias-通过clientid获取别名信息

import com.gexin.rp.sdk.base.IAliasResult;

import com.gexin.rp.sdk.http.IGtPush;

 

public class AliasFunction3 {

   //采用"Java SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可以自行替换

   static String appId = "nSJtifqVSI7HkPrKHlxhD6";

   static String appkey = "WlZGdJlcUB8ds32Y2Thn91";

   static String mastersecret = "5vjiwMEaij5VvYf7VhlGM4";

    static String CID = "548e1e5a08ce0380d31faba6256e9eb7";

    static String host = "http://sdk.open.api.igexin.com/apiex.htm";

    public static void main(String[] args) throws Exception {

        IGtPush push = new IGtPush(host, appkey, mastersecret);

        IAliasResult queryAlias = push.queryAlias(appId, CID);

        System.out.println("根据CID获取的别名:" + queryAlias.getAlias());

    }

}

十、

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值