设置别名成功但收不到消息


#1

请问你是用哪个插件呢,为什么我可以window.plugins.jPushPlugin.getRegistrationID,但是window.plugins.jPushPlugin.setTagsWithAlias或者window.plugins.jPushPlugin.setAlias都执行不了


Cordova设置标签和别名不成功
#2

报了什么错,看日志和方法回调,需要在取到 regIstrationID之后再去设置别名和标签。


#3

发送是成功了,但是客户端没收到


#4

提供该消息的msgid 和你收不到消息的设备的regIstrationID(必须提供,客户端获取)


#5

什么意思,是说在客户端获取这两个id,才能收到?


#6

给我提供上述信息,我来查。

  • 推送请求成功,而你们认为客户端没有收到

  • 请优先根据总结自行排查一下
    Android 收不到消息排查
    iOS 收不到消息排查

  • 排查无果,需要官方协助查询,请说明你根据排查步骤已确认有哪些信息是正确的,并务必提供如下两个信息,缺一不可:

    • Message ID(调用 API 请求成功后会返回 msgid ,官网 - 推送历史 - 操作 - i 详情里面也可以查看该信息,如果查不到历史请注意筛选条件 web/api ,历史只保存 30 天)
    • 测试设备的 registrationID(不管是广播、别名、标签还是其他方式推送,均必须提供该信息),该信息只能在客户端调 API 获取,服务端无法取到,服务端若需存储请让客户端获取后上传 。
      iOS 的 registrationID 获取方法点我
      Android 的 registrationID 获取方法点我

#7

你所提供的regIstrationID 只设置了别名,没有设置 tag,请检查。


#8

“msg_id”:“2720061386”,麻烦帮我查一下这个有设置成功吗


#9

是检查客户端别名或标签设置成功了没有,不是你这条消息设置成功了没有。你上述消息因为同时传了别名和标签,代表推送的目标是取别名标签的交集,而你设备只设置了别名,不满足条件

别名/标签推送失败,请检查「推送消息的当时」该App是否有设置别名/标签成功
客户端需要看callback回调:code为0且返回别名/标签值
服务端查询别名绑定关系: https://docs.jiguang.cn/jpush/server/push/rest_api_v3_device/
新版本SDK提供的新接口已支持在客户端进行增删改查


#10

为什么代码是这样,会只设置到别名,如果单独设置别名又会报1011错误


(Hevin) #11

用的插件版本是多少?


#12

版本是3.4.1


(3s誓言) #13

试试这个?

setTags(tags) {
        let promise = new Promise(function (resolve, reject) {
            window.JPush.setTags({ sequence: 1, tags: tags }, function (result) {
                AppConfig.JPushConfig.isSetTags = true;
                console.log("set tags:");
                console.log(result.tags);
                resolve(result);
            }, function (error) {
                console.log(error);
                reject(error);
            });
        })
        return promise;
    }

setAlias(alias) {
    let promise = new Promise(function (resolve, reject) {
        window.JPush.setAlias({ sequence: 2, alias: alias }, function (result) {
            // Success callback
            AppConfig.JPushConfig.isSetAlias = true;
            console.log("set alias:");
            console.log(result.alias);
            resolve(result);
        }, function (error) {
            console.log(error);
            reject(error);
        });
    })
    return promise;
}

#14

可以了,谢谢