You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已注册设备无法接收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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:50:20