起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2785|回复: 8

[结贴] 极光推送

[复制链接]

13

主题

63

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
发表于 2017-6-1 09:50:51 | 显示全部楼层 |阅读模式
1.前端请求:    params2 = {'className':className ,
                    'stuName' : 'stuName',
                    'flag' : '2'  //接小朋友
                    
                           };
        Baas.sendRequest({
                                "url" : "/concierge/concierge", // 请求地址
                                "action" : "pushTea", // action
                                "params" : params2, // action对应的参数
                                "success" : function(data){
                               
                                 Baas.sendRequest({
                              "method" : "post",
                              "url" : "/concierge/concierge",
                              "action" : "push",
                                                         "params" : {
                                                          alias: data.teacherId//这里写你指定的别名
                                                              }
                               });
2.后台处理
static{
        InputStream configFile = Push.class.getResourceAsStream("jpush.config.xml");
        try{
            SAXReader reader = new SAXReader();
            Document doc = reader.read(configFile);
            Element config = doc.getRootElement();
            appKey = config.elementTextTrim("appKey");
            masterSecret = config.elementTextTrim("masterSecret");
            apnsProduction = (config.elementTextTrim("apnsProduction").equals("true"))?true:false;
        }catch(Exception e){
            e.printStackTrace();
        }
    }
   
    public static JSONObject push(JSONObject params, ActionContext context){
        String alias = params.getString("alias");
     
            try {
                                sendPushMessage(alias, appKey, masterSecret);
                        } catch (APIConnectionException e) {
                                // TODO 自动生成的 catch 块
                                e.printStackTrace();
                        } catch (APIRequestException e) {
                                // TODO 自动生成的 catch 块
                                e.printStackTrace();
                        }
       // pushMessage(msgTitle,msgContent,alias);
        return null;
    }
     public static ScheduleResult sendPushMessage(String alias, String key, String secret) throws APIConnectionException, APIRequestException{
        ClientConfig config = ClientConfig.getInstance();
        HttpProxy proxy = null;
        if (useProxy) {
            proxy = new HttpProxy("http-proxy.system", 3128);
        }
        jpushClient = new JPushClient(masterSecret, appKey, 1);
        PushPayload payload = PushPayload.newBuilder()
        .setPlatform(Platform.all())
        .setAudience(Audience.alias(alias))
        .setNotification(Notification.alert("请到收发室.."))
        .build();
        payload.resetOptionsTimeToLive(86400);
        payload.resetOptionsApnsProduction(apnsProduction);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar nowTime = Calendar.getInstance();
        nowTime.add(Calendar.MINUTE, 1);
        String scheduleTime =sdf.format(nowTime.getTime());
        ScheduleResult result = jpushClient.createSingleSchedule(UUID.randomUUID().toString().replaceAll("-", ""), scheduleTime, payload);
        return result;
    }
①这样写没有实现推送,但是在平台端推送可以接收。②推送端和接收端打包方式一样吗?都需要打包appKey并且在最后添加代理服务器的地址吗?
  

13

主题

63

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2017-6-1 10:55:00 | 显示全部楼层
错误信息:Your request params is invalid. Please check them according to error message.
{}
回复 支持 反对

使用道具 举报

发表于 2017-6-1 10:55:37 | 显示全部楼层
推送请参考外卖案例实现!
http://docs.wex5.com/wex5-app-question-list-2023/
需要得到接收消息的客户端的 id 或 别名

java端 ,设置接收消息客户端的 id 或 别名的消息,将消息发送给推送服务器

最终是推送服务器将消息推送给客户端的!

你先把外卖案例修改一下,跑通了,然后再参考它的实现吧!

打包设置插件的appKey就可以
http://doc.wex5.com/?p=4813
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

13

主题

63

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2017-6-1 13:04:44 | 显示全部楼层
Model.prototype.sendOrderPushMessage = function() {
                jpushInstance.getRegistrationID().done(function(id) {
                        Baas.sendRequest({
                                "method" : "post",
                                "url" : "/jpush/jpush",
                                "action" : "push",
                                "params" : {
                                        registrationId : id
                                }
                        });
                });
        };
id是怎么来的,并传送给push
回复 支持 反对

使用道具 举报

13

主题

63

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2017-6-1 13:49:03 | 显示全部楼层
liangyongfei 发表于 2017-6-1 10:55
推送请参考外卖案例实现!
http://docs.wex5.com/wex5-app-question-list-2023/
需要得到接收消息的客户端 ...

Model.prototype.sendOrderPushMessage = function() {
                jpushInstance.getRegistrationID().done(function(id) {
                        Baas.sendRequest({
                                "method" : "post",
                                "url" : "/jpush/jpush",
                                "action" : "push",
                                "params" : {
                                        registrationId : id
                                }
                        });
                });
        };
id是怎么来的,并传送给push,显示我传入的参数无效!invalid
回复 支持 反对

使用道具 举报

发表于 2017-6-1 14:25:11 | 显示全部楼层
@_lee_@ 发表于 2017-6-1 13:49
Model.prototype.sendOrderPushMessage = function() {
                jpushInstance.getRegistrationI ...

这个id是极光推送的cordova插件自己获取的!
应该是根据手机唯一标识获取的!

你是Android 手机测试的吗??
是测试的外卖案例吗??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

13

主题

63

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2017-6-2 10:48:07 | 显示全部楼层
liangyongfei 发表于 2017-6-1 14:25
这个id是极光推送的cordova插件自己获取的!
应该是根据手机唯一标识获取的!

问题解决,感谢回复,可以结帖
回复 支持 反对

使用道具 举报

11

主题

46

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
QQ
发表于 2017-6-10 11:11:08 | 显示全部楼层
请问这是怎么解决的?遇到类似问题了。
回复 支持 反对

使用道具 举报

767

主题

1914

帖子

3831

积分

论坛元老

Rank: 8Rank: 8

积分
3831
QQ
发表于 2017-6-17 17:35:45 | 显示全部楼层
@_lee_@ 发表于 2017-6-1 13:49
Model.prototype.sendOrderPushMessage = function() {
                jpushInstance.getRegistrationI ...

请问这个ID如果是PC端发给手机端的呢?是没有的啊  怎么弄?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-24 18:21 , Processed in 0.059478 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表