已注册设备无法接收Pushbots推送通知问题求助
Pushbots API推送无法在设备接收的排查方案
我来帮你梳理下这个推送收不到的问题,结合你给出的代码和配置信息,咱们一步步排查:
1. 先修正初始化代码的时序问题
你当前的初始化代码是同步调用的,但registerForRemoteNotifications()是异步获取设备令牌的操作,直接紧接着设置别名可能导致别名和令牌没有正确绑定——毕竟令牌还没拿到,别名就设置了,Pushbots后台没法把推送关联到你的设备。
建议改成带回调的写法,确保拿到令牌后再绑定别名:
// 初始化Pushbots并监听结果 Pushbots.sharedInstance().init(LoginActivity.this, new PushbotsCallback() { @Override public void onSuccess() { // 初始化成功后再注册推送 Pushbots.sharedInstance().registerForRemoteNotifications(); } @Override public void onFailure(String error) { Log.e("Pushbots", "初始化失败: " + error); } }); // 监听令牌注册和推送接收的回调 Pushbots.sharedInstance().setPushCallback(new PushCallback() { @Override public void onRegistered(String token) { Log.d("Pushbots", "拿到设备令牌: " + token); // 确保令牌到手后再设置别名 Pushbots.sharedInstance().setAlias("admin"); } @Override public void onMessageReceived(String message, JSONObject payload) { // 这里可以看到是否收到推送,方便调试 Log.d("Pushbots", "收到推送内容: " + message); } @Override public void onError(String error) { Log.e("Pushbots", "推送相关错误: " + error); } });
2. 补全Manifest的关键配置
你提供的Manifest内容不完整,Pushbots依赖FCM的核心配置必须补上,否则设备接收不到底层的FCM消息:
- 添加Pushbots的推送服务:
<service android:name="com.pushbots.push.PushService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
- 添加Pushbots的广播接收器(注意替换成你的包名):
<receiver android:name="com.pushbots.push.PushbotsReceiver" android:exported="true"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="project.hermle.linuxbean.swexpress_dm" /> </intent-filter> </receiver>
另外你的Manifest里重复声明了INTERNET权限,删掉其中一个就行。
3. 检查API请求的正确性
既然控制台能发成功,说明Pushbots后台和设备的连通性没问题,那API发送时要确认这几点:
- 请求里的
alias参数严格是admin(大小写敏感,别打错) - API请求的
platform参数要包含android,或者设为all - 确认API使用的密钥和控制台是同一个项目的,别搞混了不同环境的密钥
4. 设备端的基础检查
- 确保测试设备给你的应用开了通知权限,别被系统禁用了
- 暂时关闭设备的省电/Doze模式,这类模式会限制后台推送接收
- 测试设备网络正常,能正常访问Pushbots的服务(可以试着打开Pushbots官网,排除网络拦截)
5. 日志排查辅助
- 去Pushbots控制台的「设备」页面,搜索别名
admin,看看有没有对应的设备令牌存在 - 在Android Studio的Logcat里过滤
Pushbots和FirebaseMessaging标签,查看是否有初始化失败、令牌注册失败的错误日志
按照这些步骤排查下来,应该能定位到问题。如果还是不行,可以补充完整的Manifest内容和Logcat日志,咱们再进一步分析。
内容的提问来源于stack exchange,提问作者Madhura
相关产品推荐
相关产品推荐

