使用 FCM Android 推送通知并删除令牌
Posted
技术标签:
【中文标题】使用 FCM Android 推送通知并删除令牌【英文标题】:Push Notification Using FCM Android with deleting the token 【发布时间】:2017-05-02 10:11:59 【问题描述】:我必须在用户登录时显示推送通知。所以当应用程序打开时正在使用 deviceToken。所以它会一直注册到服务器。但是当用户注销时我不想显示推送通知。那我该怎么做呢?
现在我已经完成了检查偏好值,如下面的代码,
public void onMessageReceived(String from, Bundle data)
loginPref = getSharedPreferences("loginPreference", Context.MODE_PRIVATE);
mEditPrefs = loginPref.edit();
userID = loginPref.getString("userId", null);
if(userID!=null)
Bundle bundle = data.getBundle("notification");
Log.d("Bundle123::", bundle + "");
if (bundle != null)
String text = bundle.getString("text");
String body = bundle.getString("body");
String title = bundle.getString("title");
Log.d("text123::", text + "");
Log.d("title123::", title + "");
Intent in = new Intent();
in.setAction("GCM_RECEIVED");
sendBroadcast(in);
sendNotification(title,body);
但是当应用程序后台时,这种情况不起作用。我该怎么做?因为我无法删除令牌,因为在尝试登录时我也必须发送设备令牌..
【问题讨论】:
Firebase Cloud Messaging - Handling logout的可能重复 您可以简单地通过设置某种设置来禁用通知,该设置会在用户注销时自动变为 false(如果为 false,则不显示通知 - 这是假设您的应用将唯一处理通知的人)。除此之外,您必须禁用来自服务器的通知或删除令牌(根据可能的重复帖子)。 如何禁用通知? @AL。它不是重复的。因为我不想使用 deleteInstanceId。我已经在我的问题中提到了 我将其标记为可能的重复项,因为要点是相同的。我在以下评论中提供了其他可能的选项。您可以禁用显示通知,但不能仅从您的应用程序中完全禁用它。您可以设置一个在 SharedPrefs 中检查的变量。如果为 true(默认),则显示通知,否则,不显示通知。 【参考方案1】:虽然注销时间告诉后端将设备令牌设为空。
【讨论】:
以上是关于使用 FCM Android 推送通知并删除令牌的主要内容,如果未能解决你的问题,请参考以下文章
FCM 推送通知在 android 中不起作用(使用 cordova-plugin-fcm 2.1.1 的 Ionic 项目)