如何在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
相关产品推荐
相关产品推荐

