极光推送 使用实例 (一)服务端

               

原文:http://blog.csdn.net/u014733374/article/details/43560983



最近一直在做后台开发,但心里还是总惦记着Android,感觉还是Android有意思。正好项目中要用到极光推送,今天抽空来记录下这两天的研究成果。

         我们知道IOS有自己的推送服务,但很遗憾Android没有原生的推送服务,现在有很多第三方的推送服务,比如个推、极光、亚马逊、百度云、聚能等。今天我们就来研究下极光推送的后台服务器如何实现。

         关键点:

        1.首先最好是把极光官网java后台服务器的demo下载下来,里面有我们需要的jar包,以及example.

        2.极光推送的关键jpushClient = new JPushClient(masterSecret, appKey, 3);就是这个类。其中的参数需要我们从极光官网注册开发者,然后创建具体项目获取相应的两                 个key值。其中appKey值就是我们手机端对应的key值

        3.极光推送给我们提供了很多种推送的方式,我们可以选择某一个平台进行推送(Android ,IOS ,Windows Phone),也可以全部推送;我们可以针对某个特别的用户进行推送(设置alisa),也可以针对特别的群体进行推送(设置tag),第三个参数是设置推送保留的时间,只要在有效时间内上线就可以收到推送信息

        4. 极光推送现在都用https连接,提交请求是post,获取数据为get


        ok 接下来就看服务端的实现(JAVA),JdPush推送方法+一个Servlet

:

[java]  view plain copy
  1. package com.weiwend.jdpush;  
  2.   
  3. import org.slf4j.Logger;  
  4. import org.slf4j.LoggerFactory;  
  5.   
  6. import cn.jpush.api.JPushClient;  
  7. import cn.jpush.api.common.resp.APIConnectionException;  
  8. import cn.jpush.api.common.resp.APIRequestException;  
  9. import cn.jpush.api.push.PushResult;  
  10. import cn.jpush.api.push.model.Message;  
  11. import cn.jpush.api.push.model.Options;  
  12. import cn.jpush.api.push.model.Platform;  
  13. import cn.jpush.api.push.model.PushPayload;  
  14. import cn.jpush.api.push.model.audience.Audience;  
  15. import cn.jpush.api.push.model.audience.AudienceTarget;  
  16. import cn.jpush.api.push.model.notification.AndroidNotification;  
  17. import cn.jpush.api.push.model.notification.IosNotification;  
  18. import cn.jpush.api.push.model.notification.Notification;  
  19.   
  20. public class Jdpush {  
  21.      protected static final Logger LOG = LoggerFactory.getLogger(Jdpush.class);  
  22.   
  23.      // demo App defined in resources/jpush-api.conf   
  24.   
  25.     public static final String TITLE = "申通快递";  
  26.     public static final String ALERT = "祝大家新春快乐";  
  27.     public static final String MSG_CONTENT = "申通快递祝新老客户新春快乐";  
  28.     public static final String REGISTRATION_ID = "0900e8d85ef";  
  29.     public static final String TAG = "tag_api";  
  30.       
  31.     public  static JPushClient jpushClient=null;  
  32.       
  33.     public static void testSendPush(String appKey ,String masterSecret) {  
  34.           
  35.           
  36.           
  37.          jpushClient = new JPushClient(masterSecret, appKey, 3);  
  38.           
  39.         // HttpProxy proxy = new HttpProxy("localhost", 3128);  
  40.         // Can use this https proxy: https://github.com/Exa-Networks/exaproxy  
  41.          
  42.           
  43.         // For push, all you need do is to build PushPayload object.  
  44.         //PushPayload payload = buildPushObject_all_all_alert();  
  45.          //生成推送的内容,这里我们先测试全部推送  
  46.         PushPayload payload=buildPushObject_all_alias_alert();  
  47.           
  48.           
  49.         try {  
  50.             System.out.println(payload.toString());  
  51.             PushResult result = jpushClient.sendPush(payload);  
  52.             System.out.println(result+"................................");  
  53.               
  54.             LOG.info("Got result - " + result);  
  55.               
  56.         } catch (APIConnectionException e) {  
  57.             LOG.error("Connection error. Should retry later. ", e);  
  58.               
  59.         } catch (APIRequestException e) {  
  60.             LOG.error("Error response from JPush server. Should review and fix it. ", e);  
  61.             LOG.info("HTTP Status: " + e.getStatus());  
  62.             LOG.info("Error Code: " + e.getErrorCode());  
  63.             LOG.info("Error Message: " + e.getErrorMessage());  
  64.             LOG.info("Msg ID: " + e.getMsgId());  
  65.         }  
  66.     }  
  67.       
  68.     public static PushPayload buildPushObject_all_all_alert() {  
  69.         return PushPayload.alertAll(ALERT);  
  70.     }  
  71.       
  72.     public static PushPayload buildPushObject_all_alias_alert() {  
  73.         return PushPayload.newBuilder()  
  74.                 .setPlatform(Platform.all())//设置接受的平台  
  75.                 .setAudience(Audience.all())//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到  
  76.                 .setNotification(Notification.alert(ALERT))  
  77.                 .build();  
  78.     }  
  79.       
  80.     public static PushPayload buildPushObject_android_tag_alertWithTitle() {  
  81.         return PushPayload.newBuilder()  
  82.                 .setPlatform(Platform.android())  
  83.                 .setAudience(Audience.all())  
  84.                 .setNotification(Notification.android(ALERT, TITLE, null))  
  85.                 .build();  
  86.     }  
  87.       
  88.     public static PushPayload buildPushObject_android_and_ios() {  
  89.         return PushPayload.newBuilder()  
  90.                 .setPlatform(Platform.android_ios())  
  91.                 .setAudience(Audience.tag("tag1"))  
  92.                 .setNotification(Notification.newBuilder()  
  93.                         .setAlert("alert content")  
  94.                         .addPlatformNotification(AndroidNotification.newBuilder()  
  95.                                 .setTitle("Android Title").build())  
  96.                         .addPlatformNotification(IosNotification.newBuilder()  
  97.                                 .incrBadge(1)  
  98.                                 .addExtra("extra_key""extra_value").build())  
  99.                         .build())  
  100.                 .build();  
  101.     }  
  102.       
  103.     public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {  
  104.         return PushPayload.newBuilder()  
  105.                 .setPlatform(Platform.ios())  
  106.                 .setAudience(Audience.tag_and("tag1""tag_all"))  
  107.                 .setNotification(Notification.newBuilder()  
  108.                         .addPlatformNotification(IosNotification.newBuilder()  
  109.                                 .setAlert(ALERT)  
  110.                                 .setBadge(5)  
  111.                                 .setSound("happy")  
  112.                                 .addExtra("from""JPush")  
  113.                                 .build())  
  114.                         .build())  
  115.                  .setMessage(Message.content(MSG_CONTENT))  
  116.                  .setOptions(Options.newBuilder()  
  117.                          .setApnsProduction(true)  
  118.                          .build())  
  119.                  .build();  
  120.     }  
  121.       
  122.     public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {  
  123.         return PushPayload.newBuilder()  
  124.                 .setPlatform(Platform.android_ios())  
  125.                 .setAudience(Audience.newBuilder()  
  126.                         .addAudienceTarget(AudienceTarget.tag("tag1""tag2"))  
  127.                         .addAudienceTarget(AudienceTarget.alias("alias1""alias2"))  

猜你喜欢

转载自blog.csdn.net/qq_43741569/article/details/84315679
今日推荐