【发布时间】: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);
}
}
但是当应用程序后台时,这种情况不起作用。我该怎么做?因为我无法删除令牌,因为在尝试登录时我也必须发送设备令牌..
【问题讨论】:
-
您可以简单地通过设置某种设置来禁用通知,该设置会在用户注销时自动变为 false(如果为 false,则不显示通知 - 这是假设您的应用将唯一处理通知的人)。除此之外,您必须禁用来自服务器的通知或删除令牌(根据可能的重复帖子)。
-
如何禁用通知?
-
@AL。它不是重复的。因为我不想使用 deleteInstanceId。我已经在我的问题中提到了
-
我将其标记为可能的重复项,因为要点是相同的。我在以下评论中提供了其他可能的选项。您可以禁用显示通知,但不能仅从您的应用程序中完全禁用它。您可以设置一个在 SharedPrefs 中检查的变量。如果为 true(默认),则显示通知,否则,不显示通知。
标签: android firebase push-notification firebase-cloud-messaging