极光推送的代码实现

一:去官网下载SDK或者直接在maven项目中进行相应配置

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>cn.jpush.api</groupId>
        <artifactId>jpush-client</artifactId>
        <version>3.2.17</version>
    </dependency>
  </dependencies>

二:按照API文档示例进行相应的修改添加

进行推送的关键在于构建一个 PushPayload 装载对象。

推送的话大致分为:

  1. 对所有平台所有设备上的进行推送
  2. 对所有平台指定推送目标进行推送
  3. 对Android平台上的指定设备进行推送
  4. 对IOS平台上的指定设备进行推送
  5. 对Android+IOS平台上的指定设备进行推送
  6. 给指定设备发送SMS信息

接下来我们需要在SDK的基础之上设置合适的调用参数进行取用

package com.test.push.messagepush01;

import java.util.Map;

import cn.jiguang.common.ClientConfig;
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Message;
import cn.jpush.api.push.model.Options;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.SMS;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.audience.AudienceTarget;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;

public class PushTest{

    private static final String MASTER_SECRET="9a3869c9d2fec8333db84a2e";//JPush服务器端下发的master_key
    private static final String APP_KEY="0e621306bf07eb4eefc49e66";//JPush服务器端下发的app_key

    /**
     * 构建推送对象:对所有平台,所有设备,内容为 alert的通知
     * @param alter
     * @return
     */
    public static PushPayload buildPushObject_all_all_alert(String alter) {
        return PushPayload.alertAll(alter);
    }
    /**
     * 所有平台,推送目标是别名为 "alias",通知内容为 alert
     * @param alias
     * @param alert
     * @return
     */
    public static PushPayload buildPushObject_all_alias_alert(String alias,Object alert) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.all())
                .setAudience(Audience.alias(alias))
                .setNotification(Notification.alert(alert))
                .build();
    }
    /**
     * 构建推送对象:平台是 Android,目标是 tag的设备,通知内容是alert,并且标题为title。
     * @param tag
     * @param alert
     * @param title
     * @param extras
     * @return
     */
    public static PushPayload buildPushObject_android_tag_alertWithTitle(String tag,String alert,String title,Map<String, String> extras) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.android())
                .setAudience(Audience.tag(tag))
                .setNotification(Notification.android(alert, title, extras))
                .build();
    }
    /**
     * 构建推送对象:平台是 iOS,推送目标是 tags(可以是一个设备也可以是多个设备),推送内容同时包括通知与消息 - 通知信息是alert,消息内容是 msgContent,角标数字为badge(应用程序左上角或者右上角的数字),通知声音为sound,并且附加字段 from = "JPush"。
     * 通知是 APNs 推送通道的,消息是 JPush 应用内消息通道的。
     * APNs 的推送环境是“生产”(如果不显式设置的话,Library 会默认指定为开发)
     * @param alert
     * @param msgContent
     * @param badge
     * @param sound
     * @param tags
     * @return
     */
    public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage(Object alert,String msgContent,int badge,String sound,String...tags) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.ios())
                .setAudience(Audience.tag_and(tags))
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(IosNotification.newBuilder()
                                .setAlert(alert)
                                .setBadge(badge)
                                .setSound(sound)
                                .addExtra("from", "JPush")
                                .build())
                        .build())
                 .setMessage(Message.content(msgContent))
                 .setOptions(Options.newBuilder()
                         .setApnsProduction(true)
                         .build())
                 .build();
    }
    /**
     * 构建推送对象:平台是 Andorid 与 iOS,推送的设备有(推送目标为tags和推送目标别名为aliases),推送内容是 - 内容为 msg_content的消息,并且附加字段 from = JPush。
     * @param msg_content
     * @param tags
     * @param aliases
     * @return
     */
    public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras(String msg_content,String[] tags,String[] aliases) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.android_ios())
                .setAudience(Audience.newBuilder()
                        .addAudienceTarget(AudienceTarget.tag(tags))
                        .addAudienceTarget(AudienceTarget.alias(aliases))
                        .build())
                .setMessage(Message.newBuilder()
                        .setMsgContent(msg_content)
                        .addExtra("from", "JPush")
                        .build())
                .build();
    }
    /**
     * 构建推送对象:推送内容包含SMS信息
     * @param title
     * @param sendSMSContent
     * @param delayTime
     * @param aliases
     */
    public static void testSendWithSMS(String title,String sendSMSContent,int delayTime,String... aliases) {
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        try {
            SMS sms = SMS.content(sendSMSContent, delayTime);
            PushResult result = jpushClient.sendAndroidMessageWithAlias(title, sendSMSContent, sms, aliases);
            System.out.println("Got result - " + result);
        } catch (APIConnectionException e) {
            System.out.println("Connection error. Should retry later. "+e);
        } catch (APIRequestException e) {
            System.out.println("Error response from JPush server. Should review and fix it. "+e);
            System.out.println("HTTP Status: " + e.getStatus());
            System.out.println("Error Code: " + e.getErrorCode());
            System.out.println("Error Message: " + e.getErrorMessage());
        }
    }

    public static void main(String[] args) {
        String master_secret=PushTest.MASTER_SECRET;
        String app_key=PushTest.APP_KEY;
        JPushClient jpushClient = new JPushClient(master_secret,app_key, null, ClientConfig.getInstance());
        PushPayload payload = PushTest.buildPushObject_all_all_alert("消息推送");
        //PushPayload payload=PhicommPush.buildPushObject_android_tag_alertWithTitle("tag1", "123", "123", null);

        try {
            PushResult result = jpushClient.sendPush(payload);
            System.out.println("Got result - " + result);

        } catch (APIConnectionException e) {
            // Connection error, should retry later
            System.out.print("Connection error, should retry later "+e);

        } catch (APIRequestException e) {
            // Should review the error, and fix the request
            System.out.println("根据返回的错误信息核查请求是否正确"+e);
            System.out.println("HTTP 状态信息码: " + e.getStatus());
            System.out.println("JPush返回的错误码: " + e.getErrorCode());
            System.out.println("JPush返回的错误信息: " + e.getErrorMessage());
        }
    }
}

时间: 2024-10-29 10:46:23

极光推送的代码实现的相关文章

极光推送java代码

package com.zheng.cms.web.jpush.util; import cn.jpush.api.JPushClient; import cn.jpush.api.common.APIConnectionException; import cn.jpush.api.common.APIRequestException; import cn.jpush.api.push.PushResult; import cn.jpush.api.push.model.Message; imp

用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)

这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送的官方API以及帮助文档都在这里:http://docs.jpush.cn/display/dev/Index 其中服务端的接口以及示例代码都在这里:http://docs.jpush.cn/display/dev/Server-SDKs 大家有兴趣的可以看看,因为这次我做的不是客户端APP,所以一

在ionic/cordova中使用极光推送插件(jpush)

Stpe1:创建一个项目(此处使用的是tab类型的项目,创建方式可参照我前一篇如何离线创建Ionic1项目) Stpe2:修改项目信息 打开[config.xml]修改下图内容: Stpe3:创建极光项目 注册极光开发者账号,并新建项目并获取AppKey如下图: Stpe4:安装极光推送cordova插件(jpush-phonegap-plugin) 检查你的项目plugin目录中是否有[cordova-plugin-device]目录.若存在,建议先卸载他.卸载命令:ionic plugin

[APICloud教程] 极光推送(ajpush)demo

注意:使用极光推送,必须到官网编译正式版本并且勾选极光推送模块,apploader中目前暂时未包含极光推送模块,所以无法在apploader中直接使用,通常会报类似:cannot call method 'init' of undefind at xxx.html 的错误. 官方版极光推送模块各个api的简单代码示例. 使用前请将config中的appkey换成你的app的. 使用步骤: 1.在APICloud云端新建app并获取应用包名:预览->端开发->证书->获取ios和andro

关于极光推送Jpush的demo

关于极光推送Jpush 推送是手机app必不可少的一样功能,这次由于公司项目需要研究了一下.由于推送一般写于服务端,所以对于不会Android的javaweb程序员要写出一个完整的demo是一件很头痛的事情.所以我就在这里从头到尾写一个例子以示参考.由于我也不懂Android 只是由于项目需要百度了一个demo,当中有很多不足的地方忘各位大神指正. 一.首先先简单的介绍一下什么是极光推送 ①为什么需要推送:为了解决数据同步的问题,在手机平台上,常用的方法有2种.一种是定时去服务器上查询数据,也叫

React Native 之极光推送jpush-react-native 手把手配置

这是 react native 配置极光推送使用的组件,比较常用https://github.com/jpush/jpush-react-native 先把组件地址贴出来,方便大家使用参考.如果这个大家不能配置成功,欢迎大家一起入坑交流,有问题联系 QQ379038610(添加备注说明原因) 不扯没用的,还要洗洗睡觉,直接把自己配置iOS极光的步骤给大家贴出来 1,首先大家项目环境,签名证书什么都配置完毕,开始集成推送的前提下 在项目当前目录执行: npm install jpush-react

iOS: 极光推送

之前做过环信和友盟的推送,照着官方文档集成其实挺简单的,今天公司需要,特地做了一下极光推送.不用不知道,原来极光推送集成如此简单,不得不说说了. 当然做推送钱需要做一些准备工作了,就是推送必须的p12推送证书:开发环境(开发时测试需要的推送证书).生产环境(发布到AppStore时需要的推送证书),因为xcode已经升级到了7.0以上,所以一些真机测试的配置文件证书就不需要自己手动去创建了,只要有Apple ID,真机测试时,就能自动生成,免费测试: 制作证书的过程就不啰嗦了,详细看官方文档或者

关于Android端配置极光推送

因为业务需要,android客户端需要加推送,原来采用的百度推送,但是小米手机有时候收不到,后来换成了极光推送,极光的话所有设备都能收到推送,但是在高峰的时候会推迟,博主说的免费版的,收费的没用过,也不错评论 博主用的android studio开发的,.so文件放置的位置啥的可能和eclipse有点不同,感觉用android studio开发jni一类的真的好费劲,博主现在老腻歪了,唉,废话不多说,进入正题: 首先,去极光推送官网注册一系列流程,不过貌似不用认证,老长时间注册的了,忘得差不多了

极光推送开发(一)

网上面关于极光推送的文章不多,再此写一篇文章进行说明. 极光推送的官方网站:https://www.jpush.cn/common/ (一)准备工作 在官方网站中,它已经对极光推送如何开发进行了详细的说明,照着上面的步骤是不难把极光推送应用到自己开发的客户端中的. 极光推送官方网站的说明文档链接: http://docs.jpush.io/guideline/android_guide/ 点击打开如图所示: 在这里详细介绍了集成的步骤. 首先到资源下载处下载客户端SDK,本文主要讲解androi