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

QQ登录

只需一步,快速开始

查看: 5853|回复: 10

[分享] 极光推送调试方法及相关代码总结-按别名或者标签发送通知

  [复制链接]

27

主题

77

帖子

450

积分

中级会员

Rank: 3Rank: 3

积分
450
QQ
发表于 2016-6-14 16:56:21 | 显示全部楼层 |阅读模式
极光推送调试方法总结
1.极光推送官网发送消息
官网发送消息可以分为按所有人,设备标签,设备别名,注册id(Registration ID)
按所有人:如果极光推送的相关配置没有问题的话,下载安装app后,即可收到官网的推送消息
设备标签:这里要配合js代码,将标签写入到本机存储中localStorage,然后在官网按照写好的标签发送通知


设备别名:与设备标签类似

注册id:基本上是识别手机的唯一id,通过外卖的案例可以获得这个id的方法


2.真机调试
打调试包,不要勾选发布模式,极光推送的插件配置要正确,生成app,手机安装,并在手机上运行
这样手机上跑的代码都是开发环境的代码,可以随时更改(js和java),随时改,随时看效果


3.打发布包,看最终效果
这个就是最终发布模式了,看最终的实际运行效果



代码示例:

比如说打开app的时候需要登录,在登录成功后,将标签写入localStorage
后台推送消息时,按照标签推送消息
代码示例:在jpush.js中添加方法
注册推送别名和标签:
JPushInstance.prototype.initTagsWithAlias = function(usercode) {
                if (window.plugins && window.plugins.jPushPlugin) {
                        var tag1 = "kaifa";
                        var tag2 = "ceshi";
                        var alias = usercode;
                        var tags = [];
                        if (tag1 != "") {
                                tags.push(tag1);
                        }
                        if (tag2 != "") {
                                tags.push(tag2);
                        }
                        alert(alias);
                        window.plugins.jPushPlugin.setTagsWithAlias(tags, alias);
                        //window.plugins.jPushPlugin.setAlias(alias);
                }
        };

登录成功后调用注册:
jpushInstance.initTagsWithAlias(phoneInput);

发起推送:
justep.Baas.sendRequest({
                                "url" : "/jpush/jpush", // servlet请求地址
                                "action" : "pushAlias", // action
                                "anync": true,
                                //只测试别名
                                "params" : {"registrationId" : id,"alias":"admin"}, // action对应的参数
                                "success" : function(data){
                                        alert(111);
                                } // 请求成功后的回调方法
                        });
java代码:
/**
     * 给别名组发通知
     *
     * @param alias
     * @param key
     * @param secret
     * @return
     * @throws APIConnectionException
     * @throws APIRequestException
     */
    public static ScheduleResult sendPushMessageAlias(String alias, String key,
            String secret) throws APIConnectionException, APIRequestException {
        ClientConfig config = ClientConfig.getInstance();
        Set<String> tags = new HashSet<String>();
        if (alias != null && alias.length() > 0) {
            String[] arrys = alias.split(";");
            for (String str : arrys) {
                tags.add(str);
            }
        }
        jpushClient = new JPushClient(secret, key, 3, null, config);
        PushPayload pushload = PushPayload
                .newBuilder()
                .setPlatform(Platform.all())
                // 向指定的组推送
                .setAudience(Audience.alias(tags))
                .setNotification(Notification.alert("您收到一条农采通知,请查收:-)"))
                .build();
        pushload.resetOptionsTimeToLive(86400);
        pushload.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,
                pushload);
        return result;
    }


12

主题

46

帖子

102

积分

初级会员

Rank: 2

积分
102
发表于 2016-6-15 09:03:46 | 显示全部楼层
我现在的问题是使用自己注册的AppKey,Master Secret和包名不能实现推送,但是使用外卖的AppKey,Master Secret和包名是可以推送的,代码没改过。http://bbs.wex5.com/forum.php?mo ... id=96217&extra=
这是为什么,而且你这个在jpush.js中添加方法 注册推送别名和标签干什么用的?
或者就是为了笑话这个世界
回复 支持 反对

使用道具 举报

27

主题

77

帖子

450

积分

中级会员

Rank: 3Rank: 3

积分
450
QQ
 楼主| 发表于 2016-6-15 11:07:41 | 显示全部楼层
260008747 发表于 2016-6-15 09:03
我现在的问题是使用自己注册的AppKey,Master Secret和包名不能实现推送,但是使用外卖的AppKey,Master Se ...

实现向指定的人群推送消息
回复 支持 反对

使用道具 举报

27

主题

77

帖子

450

积分

中级会员

Rank: 3Rank: 3

积分
450
QQ
 楼主| 发表于 2016-6-15 11:09:37 | 显示全部楼层
260008747 发表于 2016-6-15 09:03
我现在的问题是使用自己注册的AppKey,Master Secret和包名不能实现推送,但是使用外卖的AppKey,Master Se ...

http://bbs.wex5.com/forum.php?mod=viewthread&tid=96132
我总结的 你仔细对照一下吧
回复 支持 反对

使用道具 举报

134

主题

417

帖子

844

积分

高级会员

Rank: 4

积分
844
QQ
发表于 2016-7-4 17:03:57 | 显示全部楼层
var tag1 = "kaifa";
var tag2 = "ceshi"
这两个标签是写死的还是随机写一个??还有我登录需要传别名过去么?jpushInstance.initTageWithAlias(phoneInput);这个phoneInput参数是什么??是登录名吗?
回复 支持 反对

使用道具 举报

134

主题

417

帖子

844

积分

高级会员

Rank: 4

积分
844
QQ
发表于 2016-7-4 17:05:21 | 显示全部楼层
var tag1 = "kaifa";
var tag2 = "ceshi"
这两个标签是写死的还是随机写一个??还有我登录需要传别名过去么?jpushInstance.initTageWithAlias(phoneInput);这个phoneInput参数是什么??是登录名吗?
回复 支持 反对

使用道具 举报

134

主题

417

帖子

844

积分

高级会员

Rank: 4

积分
844
QQ
发表于 2016-7-4 17:11:14 | 显示全部楼层
jpushInstance.initTagsWithAlias(phoneInput);我在登录界面写这条语句报错,,jpushInstance is not defined
回复 支持 反对

使用道具 举报

27

主题

77

帖子

450

积分

中级会员

Rank: 3Rank: 3

积分
450
QQ
 楼主| 发表于 2016-7-7 09:26:33 | 显示全部楼层
我是猿 发表于 2016-7-4 17:05
var tag1 = "kaifa";
var tag2 = "ceshi"
这两个标签是写死的还是随机写一个??还有我登录需要传别名过去 ...

这个是按照你的需求随机的 我这是测试用的
回复 支持 反对

使用道具 举报

27

主题

77

帖子

450

积分

中级会员

Rank: 3Rank: 3

积分
450
QQ
 楼主| 发表于 2016-7-7 09:32:39 | 显示全部楼层
我是猿 发表于 2016-7-4 17:03
var tag1 = "kaifa";
var tag2 = "ceshi"
这两个标签是写死的还是随机写一个??还有我登录需要传别名过去 ...

phoneInput 是你想把哪个参数作为别名来推送,比如我的就是吧登录名作为别名来推送
回复 支持 反对

使用道具 举报

134

主题

417

帖子

844

积分

高级会员

Rank: 4

积分
844
QQ
发表于 2016-7-7 09:36:04 | 显示全部楼层
lchniao 发表于 2016-7-7 09:26
这个是按照你的需求随机的 我这是测试用的

您好,您在吗??我碰到一jpush设置别名推送的问题,设置别的时候设置不成功

后面我测试了官网外卖案例的获取 jpushInstance.getRegistrationID().done(function(id)这个方法,,,用真机调试后看了registrationid值为空

您能帮我解决一下吗??我扣扣2065430253,,非常感谢!!!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 06:25 , Processed in 0.100768 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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