使用 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 项目)

使用离子电容器的 FCM 推送通知在 IOS 中不起作用

通过 FCM 发送推送通知时何时使用 iOS 设备令牌?

Android FCM 推送日志

Firebase 推送通知 - 如何跟踪用户 FCM 令牌?

推送通知的 Amazon SNS android 设备令牌限制