为什么没有回调onRegister的回调

标签: #<Tag:0x00007f657f3e8c30> #<Tag:0x00007f657f3e8ac8> #<Tag:0x00007f657f3e8960> #<Tag:0x00007f657f3e8820>

主要问题是这样的设置别名和标签的时候没有调用回调,上论坛看了很多帖子,说是要在注册成功之后才开始设置别名和标签,比如以下帖子的



但是,问题来了,我对onRegister进行监听,为什么发现没有回调呢?

这个帖子也是同样的问题,但是我还是没有找到答案?

这个回调只有一次,安装的时候第一次 init 成功才会回调,参考测试 demo

回调了一次之后,不论今后程序启动多少次都不会再次调用了吗?
我还在onRegister里的加入了设置了别名和标签的代码的呢,
那我想问问几个问题
(1)设置别名标签也是只要设置一次就行了吗?还是需要每次启动程序都设置吗?
(2)既然onRegister不回调,我怎么样才能保证,别名和标签在初始化成功之后调用?

是,只有一次

不要这样做

1、设置一个即可,你也可以多次设置。
2、只要第一次 init 是成功的,那就已经是初始化成功了的,只需要一次 init,但你可以多次调 init 也没啥影响

所以的我根据你的回复理解是这样的,您看正确吗?
别名和标签只要能成功一次,下一次程序再次启动的时候,只要保证init成功,就可以 能够使用别名标签进行推送了,哪怕第二次并没有调用设置别名和标签的代码,当然调用也可以。
所以为了保证别名标签的设置成功,我直接延迟分钟再进行设置,你看这样可以吗?

1、只要第一次 init 成功了,SDK 就初始化成功了,所有的 API 都可以调用。

2、只要别名标签设置成功了,你没有再删除他,那么就可以对别名标签推送并且他可以收到。
这个时候消息收不收得到的影响因素,只有 长连接是否连接上,断开的可能是网络断了,调了 stoppush,更多的阅读:

3、你别名标签设置之后,是有回调的,如果失败了,可以重新调 API 设置一下。
你可以在第一次 init 后延迟一段时间再做调用,或者是判断下是否初始化成功,调 get方法获取到 registrationID 或者 onRegister 有回调,二者有一个,就可以了。

好的,感谢回答,我困扰了很久,还以为每次初始化之后都要设置标签才能用,现在明白了