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

如何在Android Studio中使用FCM token向指定设备发送通知

问题根因

你当前的代码核心错误出现在按指定token发送通知的逻辑中,没有读取输入框内填写的目标设备token,而是使用了当前设备本地存储的本机FCM token,所以通知只会发送到本机。

具体修复步骤

1. 修复TestingActivity中的发送逻辑

修改sendToTokenBtn的点击事件,将传入FcmNotificationsSender的token参数改为读取tokenEt输入框的内容:

sendToTokenBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String targetToken = tokenEt.getText().toString().trim();
        if (titleEt.getText().toString().trim().isEmpty() || messageEt.getText().toString().trim().isEmpty() || targetToken.isEmpty()){
            Toast.makeText(TestingActivity.this, "请填写标题、内容和目标token", Toast.LENGTH_SHORT).show();
        } else {
            FcmNotificationsSender notificationsSender = new FcmNotificationsSender(targetToken,titleEt.getText().toString(),
                    messageEt.getText().toString(),getApplicationContext(),TestingActivity.this);
            notificationsSender.SendNotifications();
        }
    }
});

2. 排查其他可能异常

如果修改后目标设备仍然收不到通知,按以下步骤排查:

  • 确认目标设备的App已经正确集成FCM,AndroidManifest.xml中已经正确注册FirebaseMessagingService,且已经授予通知权限(Android 13及以上需要动态申请POST_NOTIFICATIONS权限)
  • 确认目标设备网络可以正常访问Google服务
  • 给FcmNotificationsSender的请求回调添加日志,查看FCM接口返回结果:
    @Override
    public void onResponse(JSONObject response) {
        Log.d("FCM发送结果", response.toString());
    }
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.e("FCM发送失败", error.toString());
    }
    
    如果返回结果中failure为1,说明你填写的目标token无效,确认目标token是否正确、是否已经过期。

内容的提问来源于stack exchange,提问作者Parwez Akhter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:48:03