zoukankan      html  css  js  c++  java
  • java服务端的 极光推送

    项目中用到了极光推送  下面写下笔记

    首先引入jar包   下载地址https://docs.jiguang.cn/jpush/resources/(非maven项目的下载地址)

    <dependency>
    <groupId>cn.jpush.api</groupId>
    <artifactId>jpush-client</artifactId>
    <version>3.3.2</version>
    </dependency>

    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="9a3869c9d2fec8333db*****";//JPush服务器端下发的master_key
        private static final String APP_KEY="0e621306bf07eb4eefc*****";//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());
            }
        }
    }
  • 相关阅读:
    pat00-自测5. Shuffling Machine (20)
    Spiral Matrix
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Best Time to Buy and Sell Stock II
    4Sum
    3Sum Closest
    3Sum
    MySQL存储过程、函数和游标
    Word Ladder
  • 原文地址:https://www.cnblogs.com/cxiang/p/10387478.html
Copyright © 2011-2022 走看看