精华内容
下载资源
问答
  • JPush

    2016-05-30 10:36:10
    调用了JPush的api,使得服务器有消息时,可以推送给app。

    调用了JPush的api,使得服务器有消息时,可以推送给app。

    ————————————————————————————

    推送消息的方式:

             服务器有消息时,推送给app。

    原理:

             集成JPush Android SDK到应用中,JPush Android SDK

    创建到JPush Cloud 的长连接,为app提供永远在线的能力。

    使用:

    调用了JPush的api,使得服务器有消息时,可以推送给app。


    展开全文
  • jpush

    2016-05-06 16:29:03
    添加消息类: /** ...class jpush { private $_masterSecret = ''; private $_appkeys = ''; /** * 构造函数 * @param string $username * @param string $pass

    添加消息类:

    <?php


    /**


     * 极光推送


     */


    class jpush {


    private $_masterSecret = '';


    private $_appkeys = '';


    /**


    * 构造函数


    * @param string $username


    * @param string $password


    * @param string $appkeys


    */


    function __construct($masterSecret = '',$appkeys = '') {


    $this->_masterSecret = $masterSecret;


    $this->_appkeys = $appkeys;


    }


    /**


    * 模拟post进行url请求


    * @param string $url


    * @param string $param


    */


        function request_post($url="",$param="",$header="") {


            if (empty($url) || empty($param)) {


            return false;


            }


            $postUrl = $url;


            $curlPost = $param;


            $ch = curl_init();//初始化curl


            curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页


            curl_setopt($ch, CURLOPT_HEADER, 0);//设置header


            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上


            curl_setopt($ch, CURLOPT_POST, 1);//post提交方式


            curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);


            curl_setopt($ch, CURLOPT_HTTPHEADER,$header);


            // 增加 HTTP Header(头)里的字段 


            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);


            // 终止从服务端进行验证


            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);


            $data = curl_exec($ch);//运行curl


            curl_close($ch);


            return $data;


        }


        /*  $receiver 接收者的信息


            all 字符串 该产品下面的所有用户. 对app_key下的所有用户推送消息


            tag(20个)Array标签组(并集): tag=>array('昆明','北京','曲靖','上海');


            tag_and(20个)Array标签组(交集): tag_and=>array('广州','女');


            alias(1000)Array别名(并集): alias=>array('93d78b73611d886a74*****88497f501','606d05090896228f66ae10d1*****310');


            registration_id(1000)注册ID设备标识(并集): registration_id=>array('20effc071de0b45c1a**********2824746e1ff2001bd80308a467d800bed39e');


        */


        //$content 推送的内容。


        //$extras 附加字段


        //$m_time 保存离线时间的秒数默认为一天(可不传)单位为秒


    //$message_type消息类型,0消息,1通知


        public function pushMessage($title='',$message='',$receiver='all',$message_type=0,$extras=array(),$m_time='86400',$platform='all'){


    $url = 'https://api.jpush.cn/v3/push';


            $base64=base64_encode("$this->_appkeys:$this->_masterSecret");


            $header=array("Authorization:Basic $base64","Content-Type:application/json");


            $data = array();


            $data['platform'] = $platform;          //目标用户终端手机的平台类型android,ios,winphone


            $data['audience'] = $receiver;      //目标用户


            if($message_type == 1){


    $data['notification'] = array(


    //统一的模式--标准模式


    "alert"=>$message,   


    //安卓自定义


    "android"=>array(


    "alert"=>$message,


    "title"=>$title,


    "builder_id"=>1,


    "extras"=> $extras


    ),


    //ios的自定义


    "ios"=>array(


    // "alert"=>$content,


    "badge"=>"1",


    "sound"=>"default",


    // "extras"=>array("type"=>$m_type, "txt"=>$m_txt)


    ),


    );


    }else{


    //苹果自定义---为了弹出值方便调测


    $data['message'] = array(


    "title"=> $title,


    "msg_content" =>$message,


    "extras"=>$extras


    );


    }


            //附加选项


            $data['options'] = array(


                "sendno"=>time(),


                "time_to_live"=>$m_time, //保存离线时间的秒数默认为一天


                "apns_production"=>1,        //指定 APNS 通知发送环境:0开发环境,1生产环境。


            );


            $param = json_encode($data);


    $res = $this->request_post($url, $param,$header);


    if ($res === false) {


    return false;


    }


    $res_arr = json_decode($res, true);


            return $res_arr;


    }


    }

    推送消息视图:pushv.php

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <form id="all" method="post" action="push.php">  
                <p><label>标&nbsp;&nbsp;题:</label>&nbsp;<input type="text" name="n_title"></p>
                <p><label>消息内容:</label>                   
                    <textarea rows="3" name="n_content" cols="105"></textarea>
                <p>
                <p><label>消息类型:</label>&nbsp;&nbsp;
                    通知<input type="radio" name="mes_type" checked="" value="1"/>&nbsp;
                    消息<input type="radio" name="mes_type" value="0"/>
                </p>
                <p><input type="submit" class="send_btn" value="发送"/></p>
            </form> 
        </body>
    </html>

    push.php

    <?php
    require_once("add_message.php");
    $appkeys = '';//写自己的
    $masterSecret = '';
    $jpush = new jpush($masterSecret, $appkeys);
    $title = $_POST['n_title'];
    $message = $_POST['n_content'];
    $message_type = $_POST['mes_type'];
    $receiver = 'all'; //接收者
    $extras = array();
    $jpush->pushMessage($title, $message, $receiver, $message_type, $extras);
    ?>

    展开全文
  • Jpush

    2018-03-02 19:17:00
    2019独角兽企业重金招聘Python工程师标准>>> 1 import cn.jpush.api.JPushClient;... 2 import cn.jpush.api.common.resp.APIConnectionException;... 3 import ... jpush的自定义消息, 162 ...
    1 import cn.jpush.api.JPushClient;
      2 import cn.jpush.api.common.resp.APIConnectionException;
      3 import cn.jpush.api.common.resp.APIRequestException;
      4 import cn.jpush.api.push.PushResult;
      5 import cn.jpush.api.push.model.Message;
      6 import cn.jpush.api.push.model.Options;
      7 import cn.jpush.api.push.model.Platform;
      8 import cn.jpush.api.push.model.PushPayload;
      9 import cn.jpush.api.push.model.audience.Audience;
     10 import cn.jpush.api.push.model.notification.*;
     11  
     12  
     13 public class JpushClientUtil {
     14  
     15     private final static String appKey = "此处为appKey";
     16  
     17     private final static String masterSecret = "此处为masterSecret";
     18  
     19     private static JPushClient jPushClient = new JPushClient(masterSecret,appKey);
     20  
     21     /**
     22      * 推送给设备标识参数的用户
     23      * @param registrationId 设备标识
     24      * @param notification_title 通知内容标题
     25      * @param msg_title 消息内容标题
     26      * @param msg_content 消息内容
     27      * @param extrasparam 扩展字段
     28      * @return 0推送失败,1推送成功
     29      */
     30     public static int sendToRegistrationId( String registrationId,String notification_title, String msg_title, String msg_content, String extrasparam) {
     31         int result = 0;
     32         try {
     33             PushPayload pushPayload= JpushClientUtil.buildPushObject_all_registrationId_alertWithTitle(registrationId,notification_title,msg_title,msg_content,extrasparam);
     34             System.out.println(pushPayload);
     35             PushResult pushResult=jPushClient.sendPush(pushPayload);
     36             System.out.println(pushResult);
     37             if(pushResult.getResponseCode()==200){
     38                 result=1;
     39             }
     40         } catch (APIConnectionException e) {
     41             e.printStackTrace();
     42  
     43         } catch (APIRequestException e) {
     44             e.printStackTrace();
     45         }
     46  
     47          return result;
     48     }
     49  
     50     /**
     51      * 发送给所有安卓用户
     52      * @param notification_title 通知内容标题
     53      * @param msg_title 消息内容标题
     54      * @param msg_content 消息内容
     55      * @param extrasparam 扩展字段
     56      * @return 0推送失败,1推送成功
     57      */
     58     public static int sendToAllAndroid( String notification_title, String msg_title, String msg_content, String extrasparam) {
     59         int result = 0;
     60         try {
     61             PushPayload pushPayload= JpushClientUtil.buildPushObject_android_all_alertWithTitle(notification_title,msg_title,msg_content,extrasparam);
     62             System.out.println(pushPayload);
     63             PushResult pushResult=jPushClient.sendPush(pushPayload);
     64             System.out.println(pushResult);
     65             if(pushResult.getResponseCode()==200){
     66                 result=1;
     67             }
     68         } catch (Exception e) {
     69  
     70             e.printStackTrace();
     71         }
     72  
     73          return result;
     74     }
     75  
     76     /**
     77      * 发送给所有IOS用户
     78      * @param notification_title 通知内容标题
     79      * @param msg_title 消息内容标题
     80      * @param msg_content 消息内容
     81      * @param extrasparam 扩展字段
     82      * @return 0推送失败,1推送成功
     83      */
     84     public static int sendToAllIos(String notification_title, String msg_title, String msg_content, String extrasparam) {
     85         int result = 0;
     86         try {
     87             PushPayload pushPayload= JpushClientUtil.buildPushObject_ios_all_alertWithTitle(notification_title,msg_title,msg_content,extrasparam);
     88             System.out.println(pushPayload);
     89             PushResult pushResult=jPushClient.sendPush(pushPayload);
     90             System.out.println(pushResult);
     91             if(pushResult.getResponseCode()==200){
     92                 result=1;
     93             }
     94         } catch (Exception e) {
     95  
     96             e.printStackTrace();
     97         }
     98  
     99          return result;
    100     }
    101  
    102     /**
    103      * 发送给所有用户
    104      * @param notification_title 通知内容标题
    105      * @param msg_title 消息内容标题
    106      * @param msg_content 消息内容
    107      * @param extrasparam 扩展字段
    108      * @return 0推送失败,1推送成功
    109      */
    110     public static int sendToAll( String notification_title, String msg_title, String msg_content, String extrasparam) {
    111         int result = 0;
    112         try {
    113             PushPayload pushPayload= JpushClientUtil.buildPushObject_android_and_ios(notification_title,msg_title,msg_content,extrasparam);
    114             System.out.println(pushPayload);
    115             PushResult pushResult=jPushClient.sendPush(pushPayload);
    116             System.out.println(pushResult);
    117             if(pushResult.getResponseCode()==200){
    118                 result=1;
    119             }
    120         } catch (Exception e) {
    121  
    122             e.printStackTrace();
    123         }
    124  
    125         return result;
    126     }
    127  
    128  
    129  
    130     public static PushPayload buildPushObject_android_and_ios(String notification_title, String msg_title, String msg_content, String extrasparam) {
    131         return PushPayload.newBuilder()
    132                 .setPlatform(Platform.android_ios())
    133                 .setAudience(Audience.all())
    134                 .setNotification(Notification.newBuilder()
    135                         .setAlert(notification_title)
    136                         .addPlatformNotification(AndroidNotification.newBuilder()
    137                                 .setAlert(notification_title)
    138                                 .setTitle(notification_title)
    139                                 //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
    140                                 .addExtra("androidNotification extras key",extrasparam)
    141                                 .build()
    142                         )
    143                         .addPlatformNotification(IosNotification.newBuilder()
    144                                 //传一个IosAlert对象,指定apns title、title、subtitle等
    145                                 .setAlert(notification_title)
    146                                 //直接传alert
    147                                 //此项是指定此推送的badge自动加1
    148                                 .incrBadge(1)
    149                                 //此字段的值default表示系统默认声音;传sound.caf表示此推送以项目里面打包的sound.caf声音来提醒,
    150                                 // 如果系统没有此音频则以系统默认声音提醒;此字段如果传空字符串,iOS9及以上的系统是无声音提醒,以下的系统是默认声音
    151                                 .setSound("sound.caf")
    152                                 //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
    153                                 .addExtra("iosNotification extras key",extrasparam)
    154                                 //此项说明此推送是一个background推送,想了解background看:http://docs.jpush.io/client/ios_tutorials/#ios-7-background-remote-notification
    155                                 // .setContentAvailable(true)
    156  
    157                                 .build()
    158                         )
    159                         .build()
    160                 )
    161                 //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
    162                 // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
    163                 // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
    164                 .setMessage(Message.newBuilder()
    165                         .setMsgContent(msg_content)
    166                         .setTitle(msg_title)
    167                         .addExtra("message extras key",extrasparam)
    168                         .build())
    169  
    170                 .setOptions(Options.newBuilder()
    171                         //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
    172                         .setApnsProduction(false)
    173                         //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
    174                         .setSendno(1)
    175                         //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
    176                         .setTimeToLive(86400)
    177                         .build()
    178                 )
    179                 .build();
    180     }
    181  
    182     private static PushPayload buildPushObject_all_registrationId_alertWithTitle(String registrationId,String notification_title, String msg_title, String msg_content, String extrasparam) {
    183  
    184         System.out.println("----------buildPushObject_all_all_alert");
    185         //创建一个IosAlert对象,可指定APNs的alert、title等字段
    186         //IosAlert iosAlert =  IosAlert.newBuilder().setTitleAndBody("title", "alert body").build();
    187  
    188         return PushPayload.newBuilder()
    189                 //指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
    190                 .setPlatform(Platform.all())
    191                 //指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
    192                 .setAudience(Audience.registrationId(registrationId))
    193                 //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
    194                 .setNotification(Notification.newBuilder()
    195                         //指定当前推送的android通知
    196                         .addPlatformNotification(AndroidNotification.newBuilder()
    197  
    198                                 .setAlert(notification_title)
    199                                 .setTitle(notification_title)
    200                                 //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
    201                                 .addExtra("androidNotification extras key",extrasparam)
    202  
    203                                 .build())
    204                         //指定当前推送的iOS通知
    205                         .addPlatformNotification(IosNotification.newBuilder()
    206                                 //传一个IosAlert对象,指定apns title、title、subtitle等
    207                                 .setAlert(notification_title)
    208                                 //直接传alert
    209                                 //此项是指定此推送的badge自动加1
    210                                 .incrBadge(1)
    211                                 //此字段的值default表示系统默认声音;传sound.caf表示此推送以项目里面打包的sound.caf声音来提醒,
    212                                 // 如果系统没有此音频则以系统默认声音提醒;此字段如果传空字符串,iOS9及以上的系统是无声音提醒,以下的系统是默认声音
    213                                 .setSound("sound.caf")
    214                                 //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
    215                                 .addExtra("iosNotification extras key",extrasparam)
    216                                 //此项说明此推送是一个background推送,想了解background看:http://docs.jpush.io/client/ios_tutorials/#ios-7-background-remote-notification
    217                                 //取消此注释,消息推送时ios将无法在锁屏情况接收
    218                                 // .setContentAvailable(true)
    219  
    220                                 .build())
    221  
    222  
    223                         .build())
    224                 //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
    225                 // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
    226                 // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
    227                 .setMessage(Message.newBuilder()
    228  
    229                         .setMsgContent(msg_content)
    230  
    231                         .setTitle(msg_title)
    232  
    233                         .addExtra("message extras key",extrasparam)
    234  
    235                         .build())
    236  
    237                 .setOptions(Options.newBuilder()
    238                         //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
    239                         .setApnsProduction(false)
    240                         //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
    241                         .setSendno(1)
    242                         //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天;
    243                         .setTimeToLive(86400)
    244  
    245                         .build())
    246  
    247                 .build();
    248  
    249     }
    250  
    251     private static PushPayload buildPushObject_android_all_alertWithTitle(String notification_title, String msg_title, String msg_content, String extrasparam) {
    252         System.out.println("----------buildPushObject_android_registrationId_alertWithTitle");
    253         return PushPayload.newBuilder()
    254                 //指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
    255                 .setPlatform(Platform.android())
    256                 //指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
    257                 .setAudience(Audience.all())
    258                 //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
    259                 .setNotification(Notification.newBuilder()
    260                         //指定当前推送的android通知
    261                         .addPlatformNotification(AndroidNotification.newBuilder()
    262                                 .setAlert(notification_title)
    263                                 .setTitle(notification_title)
    264                                 //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
    265                                 .addExtra("androidNotification extras key",extrasparam)
    266                                 .build())
    267                         .build()
    268                 )
    269                 //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
    270                 // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
    271                 // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
    272                 .setMessage(Message.newBuilder()
    273                         .setMsgContent(msg_content)
    274                         .setTitle(msg_title)
    275                         .addExtra("message extras key",extrasparam)
    276                         .build())
    277  
    278                 .setOptions(Options.newBuilder()
    279                         //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
    280                         .setApnsProduction(false)
    281                         //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
    282                         .setSendno(1)
    283                         //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
    284                         .setTimeToLive(86400)
    285                         .build())
    286                 .build();
    287     }
    288  
    289     private static PushPayload buildPushObject_ios_all_alertWithTitle( String notification_title, String msg_title, String msg_content, String extrasparam) {
    290         System.out.println("----------buildPushObject_ios_registrationId_alertWithTitle");
    291         return PushPayload.newBuilder()
    292                 //指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
    293                 .setPlatform(Platform.ios())
    294                 //指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
    295                 .setAudience(Audience.all())
    296                 //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
    297                 .setNotification(Notification.newBuilder()
    298                         //指定当前推送的android通知
    299                         .addPlatformNotification(IosNotification.newBuilder()
    300                                 //传一个IosAlert对象,指定apns title、title、subtitle等
    301                                 .setAlert(notification_title)
    302                                 //直接传alert
    303                                 //此项是指定此推送的badge自动加1
    304                                 .incrBadge(1)
    305                                 //此字段的值default表示系统默认声音;传sound.caf表示此推送以项目里面打包的sound.caf声音来提醒,
    306                                 // 如果系统没有此音频则以系统默认声音提醒;此字段如果传空字符串,iOS9及以上的系统是无声音提醒,以下的系统是默认声音
    307                                 .setSound("sound.caf")
    308                                 //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
    309                                 .addExtra("iosNotification extras key",extrasparam)
    310                                 //此项说明此推送是一个background推送,想了解background看:http://docs.jpush.io/client/ios_tutorials/#ios-7-background-remote-notification
    311                                // .setContentAvailable(true)
    312  
    313                                 .build())
    314                         .build()
    315                 )
    316                 //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
    317                 // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
    318                 // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
    319                 .setMessage(Message.newBuilder()
    320                         .setMsgContent(msg_content)
    321                         .setTitle(msg_title)
    322                         .addExtra("message extras key",extrasparam)
    323                         .build())
    324  
    325                 .setOptions(Options.newBuilder()
    326                         //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
    327                         .setApnsProduction(false)
    328                         //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
    329                         .setSendno(1)
    330                         //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
    331                         .setTimeToLive(86400)
    332                         .build())
    333                 .build();
    334     }
    335  
    336 //    public static void main(String[] args){
    337 //        if(JpushClientUtil.sendToAllIos("testIos","testIos","this is a ios Dev test","")==1){
    338 //            System.out.println("success");
    339 //        }
    340 //    }
    341 }
    342  
    343  
    344  
    345 public class Jdpush {  
    346      protected static final Logger LOG = LoggerFactory.getLogger(Jdpush.class);  
    347   
    348      // demo App defined in resources/jpush-api.conf   
    349   
    350     public static final String TITLE = "申通快递";  
    351     public static final String ALERT = "祝大家新春快乐";  
    352     public static final String MSG_CONTENT = "申通快递祝新老客户新春快乐";  
    353     public static final String REGISTRATION_ID = "0900e8d85ef";  
    354     public static final String TAG = "tag_api";  
    355       
    356     public  static JPushClient jpushClient=null;  
    357       
    358     public static void testSendPush(String appKey ,String masterSecret) {  
    359           
    360           
    361           
    362          jpushClient = new JPushClient(masterSecret, appKey, 3);  
    363           
    364         // HttpProxy proxy = new HttpProxy("localhost", 3128);  
    365         // Can use this https proxy: https://github.com/Exa-Networks/exaproxy  
    366          
    367           
    368         // For push, all you need do is to build PushPayload object.  
    369         //PushPayload payload = buildPushObject_all_all_alert();  
    370          //生成推送的内容,这里我们先测试全部推送  
    371         PushPayload payload=buildPushObject_all_alias_alert();  
    372           
    373           
    374         try {  
    375             System.out.println(payload.toString());  
    376             PushResult result = jpushClient.sendPush(payload);  
    377             System.out.println(result+"................................");  
    378               
    379             LOG.info("Got result - " + result);  
    380               
    381         } catch (APIConnectionException e) {  
    382             LOG.error("Connection error. Should retry later. ", e);  
    383               
    384         } catch (APIRequestException e) {  
    385             LOG.error("Error response from JPush server. Should review and fix it. ", e);  
    386             LOG.info("HTTP Status: " + e.getStatus());  
    387             LOG.info("Error Code: " + e.getErrorCode());  
    388             LOG.info("Error Message: " + e.getErrorMessage());  
    389             LOG.info("Msg ID: " + e.getMsgId());  
    390         }  
    391     }  
    392       
    393     public static PushPayload buildPushObject_all_all_alert() {  
    394         return PushPayload.alertAll(ALERT);  
    395     }  
    396       
    397     public static PushPayload buildPushObject_all_alias_alert() {  
    398         return PushPayload.newBuilder()  
    399                 .setPlatform(Platform.all())//设置接受的平台  
    400                 .setAudience(Audience.all())//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到  
    401                 .setNotification(Notification.alert(ALERT))  
    402                 .build();  
    403     }  
    404       
    405     public static PushPayload buildPushObject_android_tag_alertWithTitle() {  
    406         return PushPayload.newBuilder()  
    407                 .setPlatform(Platform.android())  
    408                 .setAudience(Audience.all())  
    409                 .setNotification(Notification.android(ALERT, TITLE, null))  
    410                 .build();  
    411     }  
    412       
    413     public static PushPayload buildPushObject_android_and_ios() {  
    414         return PushPayload.newBuilder()  
    415                 .setPlatform(Platform.android_ios())  
    416                 .setAudience(Audience.tag("tag1"))  
    417                 .setNotification(Notification.newBuilder()  
    418                         .setAlert("alert content")  
    419                         .addPlatformNotification(AndroidNotification.newBuilder()  
    420                                 .setTitle("Android Title").build())  
    421                         .addPlatformNotification(IosNotification.newBuilder()  
    422                                 .incrBadge(1)  
    423                                 .addExtra("extra_key", "extra_value").build())  
    424                         .build())  
    425                 .build();  
    426     }  
    427       
    428     public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {  
    429         return PushPayload.newBuilder()  
    430                 .setPlatform(Platform.ios())  
    431                 .setAudience(Audience.tag_and("tag1", "tag_all"))  
    432                 .setNotification(Notification.newBuilder()  
    433                         .addPlatformNotification(IosNotification.newBuilder()  
    434                                 .setAlert(ALERT)  
    435                                 .setBadge(5)  
    436                                 .setSound("happy")  
    437                                 .addExtra("from", "JPush")  
    438                                 .build())  
    439                         .build())  
    440                  .setMessage(Message.content(MSG_CONTENT))  
    441                  .setOptions(Options.newBuilder()  
    442                          .setApnsProduction(true)  
    443                          .build())  
    444                  .build();  
    445     }  
    446       
    447     public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {  
    448         return PushPayload.newBuilder()  
    449                 .setPlatform(Platform.android_ios())  
    450                 .setAudience(Audience.newBuilder()  
    451                         .addAudienceTarget(AudienceTarget.tag("tag1", "tag2"))  
    452                         .addAudienceTarget(AudienceTarget.alias("alias1", "alias2"))  
    453                         .build())  
    454                 .setMessage(Message.newBuilder()  
    455                         .setMsgContent(MSG_CONTENT)  
    456                         .addExtra("from", "JPush")  
    457                         .build())  
    458                 .build();  
    459     }  
    460 }

    转载于:https://my.oschina.net/u/3788556/blog/1628016

    展开全文
  • jpush官方文档

    2018-03-09 11:17:40
    jpush文档jpush文档jpush文档jpush文档jpush文档jpush文档jpush文档
  • Hbuilder jpush

    2017-11-09 18:41:52
    Hbuilder离线打包继承jpush和map有冲突 so 有个不对
  • JPush demo

    2017-08-10 17:47:48
    主要是C#下JPUSH的推送事例代码,demo是Webservice调用的! JPushShop.cs把自己的appKey,appMasterSecret填充进去即可开始推送! 通俗易懂,调用的接口方法:JPushShop.JPush 简单介绍:...
  • 提供JPush SDK CocoaPods的镜像,由于官方没有提供相应的服务且网上未找到最新版本的CocoaPods Spec镜像,因此做个镜像方便大家使用CocoaPods 管理 JPush SDK 服务的项目 pod 'JPushSDK', '~> 1.8.2' PS:对于旧版本 ...
  • jpush demo

    2013-07-04 20:32:30
    jpush demo
  • 极光 JPush android

    2018-06-07 14:21:44
    极光 JPush android端列子实现 极光 JPush android端列子实现
  • 离子jpushjpush集成的离子演示
  • Jpush API 和包

    2016-08-24 14:38:51
    Jpush API 和包
  • airplake-node-JPush Message Distributing Center (MDC) 专用极光通知消息适配器。 安装 $ npm install --save airplake-node-JPush 使用 配置 在 MDC 配置文件中做好配置,如: { ..., "pubsub": { ..., ...
  • 极光 JPush 后台实现

    2018-06-07 14:36:07
    极光 JPush 后台实现 极光 JPush 后台实现 极光 JPush 后台实现
  • 三分钟集成JPush

    2021-04-04 22:27:34
    CoreJPush,让您五句代码立即搞定JPush,集成到使用只需要3分钟。没错,3分钟! 1.一句代码集成JPush 2.突破空间限制,在您任意想得到推送数据的地方,得到推送数据。 3.注册标签与别名与block回调。 4.全自动badge...
  • JPush GO SDK 极光推送golang sdk。 官方的go sdk就新建了项目,没有文件,故开发本SDK。 使用教程直接参照单元测试代码即可。 功能列表 Push API v3 Report API v3 Device API v3 Schedule API v3 单元测试 添加...
  • jpush服务端 -java

    2017-10-04 23:40:34
    jpush java 服务端
  • JPush极光推送详解

    万次阅读 2016-10-19 22:26:52
    1.JPush的简单介绍 JPush是一种专业而免费的第三方云推送推送平台,又名极光推送,在同行中开发者对JPush较为青睐,哈哈,不仅仅是因为它是免费的,服务也是非常到位的。 2.JPush的集成步骤 1.新建一个工程,复制...

    1.JPush的简单介绍

        JPush是一种专业而免费的第三方云推送推送平台,又名极光推送,在同行中开发者对JPush较为青睐,哈哈,不仅仅是因为它是免费的,服务也是非常到位的。

    2.JPush的集成步骤

    1.新建一个工程,复制自己的应用包名。

    2.登陆极光官网,注册用户并使用第一步中的应用包名创建自己的应用。

    3.然后下载极光SDK,然后根据sdk中的AndroidManifest配置自己工程中的mainfest

    参考开发文档:

    复制备注为 "Required" 的部分(列举部分,凡是备注Required都要复制到位)

    <!-- Required  一些系统要求的权限,如访问网络等-->
    <uses-permission android:name="${applicationId}.permission.JPUSH_MESSAGE"/>
    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    

     

    将备注为替换包名的部分,替换为当前应用程序的包名

    将需要替换成你自己的应用包名换成${application},相当于间接的填写了自己的应用包名

    将AppKey替换为在Portal上注册该应用的的Key

     

    <meta-data
        android:name="JPUSH_APPKEY"
        android:value="00b190c0d9b4deb0e76445ba"/> <!--  </>值来自开发者平台取得的AppKey-->

    这个appkey千万别忘了!

     

    ④配置receive

     

    <receiver
        android:name=".MyReceiver"
        android:enabled="true">
        <intent-filter>
            <action android:name="cn.jpush.android.intent.REGISTRATION" />
            <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
            <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
            <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
            <category android:name="hongda.zhangxing.com.jpushdemo" />
        </intent-filter>
    </receiver>

    好了,manifest的配置就搞定了。

     

    4.将SDK中libs目录中对应复制到自己的工程

    ①将jpush-android-2.2.0.j复制到自己工程的libs下

    ②在app-->src-->main下创建文件夹jniLibs,将SDK中libs目录下除了jar包之外的cpu文件拷贝到jniLibs中

    5.推送的主要代码

    ①MainActivity.java中添加两行代码:

     

    JPushInterface.setDebugMode(true);//测试版为true
    JPushInterface.init(this);

     

    ②创建Receive

    public class MyReceiver extends BroadcastReceiver {
        private static final String TAG = "JPush";
    
        @Override
        public void onReceive(Context context, Intent intent) {
            Bundle bundle = intent.getExtras();
            Log.d(TAG, "onReceive - " + intent.getAction());
    
            if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
            } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
                System.out.println("收到了自定义消息:"+bundle.getString(JPushInterface.EXTRA_MESSAGE));
                // 自定义消息不会展示在通知栏,完全要开发者写代码去处理
            } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
                System.out.println("收到了通知");
                // 在这里可以做些统计,或者做些其他工作
            } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
                System.out.println("用户点击打开了通知");
                // 在这里可以自己写代码去定义用户点击后的行为
                Intent i = new Intent(context, MainActivity.class);  //自定义打开的界面
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(i);
            } else {
                Log.d(TAG, "Unhandled intent - " + intent.getAction());
            }
        }
    }

    现在就阔以实现推送了。

    6.进入极光控制后台:

    点击推送,先发一条通知,编辑内容,进行推送(偷偷告诉你,在可选选项中可以对推送标题进行设置)

    自定义标题:
    推送效果图:

    补充:推送成功logcat会有通知,点击了通知,logcat也会有相应的提示,那么之后的逻辑功能就需要我们强大的程序猿来开发喽!

    这些提示当然是在Receiver中自定义的:

    3.JPush的推送方式

    1.通过标签按类型推送:
     
    ①在MainActivity中添加如下代码:
    //设置Tag
    Set<String> sets = new HashSet<String>() ;
    sets.add("sport");
    sets.add("music");
    JPushInterface.setTags(this, sets, new TagAliasCallback() {
        @Override
        public void gotResult(int i, String s, Set<String> set) {
            Log.d(TAG,"set tag result is"+i);
        }
    });
    ②在进行推送的时候,标明将要推送的Tag
     
    2.通过别名Alias推送
     
    ①在MainActivity中添加如下代码:
    //设置别名Alia
    JPushInterface.setAlias(this, "zhangxing", new TagAliasCallback() {
        @Override
        public void gotResult(int i, String s, Set<String> set) {
            Log.d(TAG,"set Alias result is"+i);
        }
    });
    ②在进行推送的时候,标明将要推送的Alias
    3.通过Register ID推送,不过这个id一般都在极光后台,我们不好获取,这种就免了哈。
     
    补充:这里我再对自定义消息说明一下,自定义消息不像通知一样显示在通知栏,它发生在应用程序内部,需要开发者自己去按需求去展示它高冷的姿态。
    ①点击自定义消息,推送一条自定义消息:
     
     
    ②点击推送后,通知栏并没有啥情况,这是毋庸置疑的,有情况才不正常了,那么可以在logcat中查看自定义消息是否真的被推送成功:
     

    创作不易,莫要白嫖,您的关注及点赞是对于我创作的最大动力与源泉。

     

    展开全文
  • JPush 文档

    千次阅读 2018-01-16 20:10:52
    转自:... JPush iOS ...从上图可以看出,JPush iOS Push 包括 2 个部分,APNs 推送(代理),与 JPush 应用内消息。 红色部分是 APNs 推送,JPush 代理开发者的应用(需要基于开发者提供的应用
  • JPush API client library for Node.js 本 SDK 提供 JPush 服务端接口的 Node 封装,与 JPush Rest API 组件通信。使用时引用该模块即可,可参考附带 Demo 学习使用方法。 Node >= 7.6(async/await 语法支持),若 ...
  • jpush-client-3.2.16

    2017-12-04 17:20:16
    jpush-client-3.2.16 是一个 jpush 的Android客户端库
  • Android Studio集成Jpush

    2016-04-18 18:04:00
    Android Studio集成Jpush实现
  • JPush Library for .NET 由官方支持的 JPush .NET API Client。 注意:Jiguang.JPush 为基于 .NET Standard 的重构版本,API 用法有较大改变,不兼容旧版本(cn.jpush.api),升级前请注意。 项目中的 Example 为 ...
  • JPush极光推送

    2016-03-14 17:23:15
    JPush极光推送 ①官网:https://www.jpush.cn/ ②选择入门指南/实例与代码/服务器端 API 开发包与示例/Java开发包与使用示例/v3.2.8 - 新功能和优化/ 【jpush-client-3.2.8.zip】点击下载。 ③下载下来的压缩包为...
  • JPush-React-Native ChangeLog 从RN-JPush2.7.5开始,重新支持TypeScript 由于RN-JCore1.6.0存在编译问题,从RN-JCore1.7.0开始,还是需要在AndroidManifest.xml中添加配置代码,具体参考 配置-2.1 Android 1. ...
  • jpush-api-go-client 概述 这是JPush REST API 的 go 版本封装开发包,仅支持最新的REST API v3功能。 REST API 文档: 使用 go get github.com/ylywyn/jpush-api-go-client 推送流程 1.构建要推送的平台: ...
  • JPush API Java Library 概述 这是 JPush REST API 的 Java 版本封装开发包,是由极光推送官方提供的,一般支持最新的 API 功能。 对应的 REST API 文档:REST API - Push, REST API - Report. 版本更新:Release...
  • jpush-docs, JPush docs on official website. 极光推送官方文档。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,532
精华内容 3,412
关键字:

jpush