仅在用户启用时发送通知

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅在用户启用时发送通知相关的知识,希望对你有一定的参考价值。

我的应用程序中有一个ToggleButton,用户可以在其中关闭通知。我设法创建了一个类,其中保存了按钮的状态,因此即使关闭应用程序后,最后选择的状态也会显示:

public class SetFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view =  inflater.inflate(R.layout.fragment_set, container, false);

    ToggleButton toggle = view.findViewById(R.id.simpleSwitch);
    toggle.setChecked(readState());


    toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                Log.e("aaaaa","checked");
                // The toggle is enabled
            } else {
                Log.e("aaaaa","not checked");
                // The toggle is disabled
            }
            saveState(isChecked);
        }
    });



    return view;
}


private void saveState(boolean isFavourite) {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
    sharedPreferences.edit().putBoolean("State", isFavourite).apply();
}
private boolean readState() {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
    return sharedPreferences.getBoolean("State", true);
}
}

现在的问题是,如何仅向那些在应用中启用了此选项的用户发送通知?现在我可以将通知发送给所有用户。

我想如果检查我的readState中的MyFirebaseMessagingServiceclass,如果它是真的那么做sendNotification否则什么都不做。

我在想正确的方法吗?

答案

If you are using your own server for push notification.

向推送用户发送推送通知的最佳方式是调用API以在服务器端维护标志。从服务器,您只能向那些从设备启用推送的用户发送推送通知。因此,您无需在android设备端处理任何内容。

If you are using Firebase Dashboard for push notification.

您必须在本地维持推送,或者必须显示推送。但最好的建议是从服务器端维护它。

另一答案

好的,现在我可以确认这是最简单的解决方案。当打开ON按钮时,我使用了FirebaseMessaging.getInstance()。subscribeToTopic(“NEWS”);关闭时,我使用取消订阅。然后通过Postman我发送通知和DATA主题(所以我不需要等待,直到主题出现在Firebase控制台中)。我测试过,工作正常。当我打开时 - 通知出现,关闭,而不是来。感谢大家帮助我。

以上是关于仅在用户启用时发送通知的主要内容,如果未能解决你的问题,请参考以下文章

仅在应用处于后台时调用的静默通知回调方法

当用户启用两步验证时如何接收更新通知?

intent.getParcelableExtra() 仅在第一次发送推送通知时返回空值

Android 错误从通知转到片段

Swift仅在启用位置服务时执行代码

如何正确发送推送通知