我如何完全取消订阅推送通知



在我的应用程序中,我已经实现了推送通知功能。我为用户添加了一个按钮,这使他可以完全关闭通知。但是,当我挖掘出来时它不起作用。这是代码段:

来自MainActivity:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FirebaseMessaging.getInstance().subscribeToTopic("test_topic");
        ((SwitchCompat)findViewById(R.id.notification_switch)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked) {
                    Toast.makeText(MainActivity.this, "Switch activated ", Toast.LENGTH_LONG).show();
                    FirebaseMessaging.getInstance().subscribeToTopic("test_topic");
                }else {
                    Toast.makeText(MainActivity.this, "Switch deactivated ", Toast.LENGTH_LONG).show();
                    FirebaseMessaging.getInstance().unsubscribeFromTopic("test_topic");
                        new Thread(new Runnable() {
                            @Override
                            public void run() {
                                try {
                                    FirebaseInstanceId.getInstance().deleteInstanceId();
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                            }
                        }).start();
                }
            }
        });
}

firebasemessagingservice类处理消息:

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    public static String TAG = MyFirebaseMessagingService.class.getName();
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage){
        super.onMessageReceived(remoteMessage);
        Log.e(TAG, "onMessageReceived() --> " + remoteMessage.getNotification().getTitle());
    }
//    @Override
//    public void onNewToken(String s) {
//        super.onNewToken(s);
//        Log.e(TAG, "onNewToken() --> " + s);
//    }
}

当我尝试使用主题发送通知时,我不会收到任何通知。如果我通过应用程序将通知发送给所有设备,我仍然会收到通知。我如何完全防止我的应用获取通知?

取消注册和取消订阅

客户端应用程序可以用来停止从应用服务器接收消息和/或主题订阅的三种方法:

instanceID deleteToken((将受众设置为应用程序服务器的发件人ID,并将范围设置为GCM。这会从特定的应用程序服务器

停止消息(包括主题消息(

instanceid deleteid((。这会停止所有以前的注册和所有应用服务器的主题订阅的消息

gcmpubsub unsubscribe((。这停止了从应用服务器的特定主题

的主题消息

对于FCM,应该是FirebaseInstanceId。

尝试在FirebaseInstanceId.getInstance().deleteInstanceId()之前设置setAutoInitEnabled(false)。启用后,FCM如果没有有效的一个,并且删除新的令牌,则在应用程序启动上生成注册令牌。/strong>(。此设置在应用程序重新启动中持续存在,并覆盖清单中指定的设置。

默认情况下,FCM自动启动启用

有关更多信息:firebasemessaging

相关内容

  • 没有找到相关文章

最新更新