Closed Story5 closed 5 years ago
setApplicationIconBadgeNumber 是设置手机端的badge值 setBadge 和 resetBadge 为设置服务端的 badge 值。
以下方法,我都有设置
setApplicationIconBadgeNumber(0);
resetBadge();
但是在ios上,数字还是会在
Xcode打过断点调试
initJPush() {
//极光推送开启
this.sxjpush.init().then(success => {
this.sxjpush.getRegistrationID();
// 每次打开程序清除角标
this.sxjpush. setApplicationIconBadgeNumber(0);
this.sxjpush. resetBadge();
// debug模式
this.sxjpush.setDebugMode(false);
});
}
document.addEventListener("jpush.openNotification",
(event: any) => {
console.log(JPUSH_EVENT_openNotification," success:",JSON.stringify(event));
this.getIOSApplicationIconBadgeNumber().then((badge:number)=>{
let newBadge = badge - 1;
this.sxjpush. setApplicationIconBadgeNumber(newBadge);
this.sxjpush. setBadge(newBadge);
});
observer.next(event);
},false);
监听代码中的 setApplicationIconBadgeNumber 也不起作用?
后面监听里的起作用,可以改变badge. 但是当我调用完init后,在promise里面调用setApplicationIconBadgeNumber不起作用
ionic jpush 你用的什么插件?
就是从这个仓库安装的呀,版本3.5.0
jpush-phonegap-plugin 3.5.0 "JPush" cordova-plugin-jcore 1.2.6 "JCore"
init 方法没有返回 promise 你 .then 也没用啊
有的呀...我看ts声明文件里有的
声明文件我是通过md里面这行命令安装的
npm install --save @jiguang-ionic/jpush
额,这里不应该返回 promise ,cordova 没有传入 success callback。是个定义错误。。
init 方法是个同步接口,你可以直接将 then 内的操作放到 init 方法之后即可。 下个版本会修复这个问题。
我试过在init后就调用,也不行
//极光推送开启
this.sxjpush.init();
// 每次打开程序清除角标
this.sxjpush.setApplicationIconBadgeNumber(0);
jpush 相关 api 有在 platform.ready() 中调用吗?
之前没有,试着移到platform.ready()
中,可以了,多谢
顺便问一下,文档里我没有看到ios 10的清除监听,我应该怎么监听通知的清除事件,然后对我的badge减一
运行环境
期望效果
setApplicationIconBadgeNumber(0)
可以清除ios角标实际效果
未清除,一直有角标存在
重现步骤
背景
以上代码放在了
app.component.ts
的ngOnInit
里Debug logs