gpt4 book ai didi

android - [解析][Android] 如何在应用运行时抑制推送通知的显示?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:51 25 4
gpt4 key购买 nike

我需要通过两种方式处理推送通知:

1) 当应用程序处于后台时,接收通知并将其放置在我的 android 客户端的状态栏上;

2) 当我的应用程序处于前台时,接收并处理通知而不在状态栏上显示它;

因为 (1) 很简单,我把并打电话PushService.setDefaultPushCallback(context, classObject);并且通知正确显示在状态栏上。

我的问题是 (2):

  • 我试图创建一个自定义的 BroadCastReceiver,但是 parse 在我之前收到通知并将其显示在状态栏上;
  • 我试着关掉PushService.setDefaultPushCallback(上下文,类对象)通过为 classObject 设置空值在 onStart 方法上,但是当我这样做时,我的接收器从未被调用并且通知没有出现;

我可以做些什么来在解析之前拦截通知,或者我可以做其他事情来解决我的问题吗?

ps:我需要用“alert”从服务器发送消息

谢谢,

最佳答案

如果您在 json 数据中使用“alert”或“title”,com.parse.PushService 将拦截并显示标准通知。

而是创建您自己的 BroadCastReceiver 并发送标题,例如json 中的“标题”。然后,您可以在 onReceive 处理程序中控制显示的时间和内容。

例如

public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver";

@Override
public void onReceive(Context context, Intent intent) {
try {
String action = intent.getAction();
String channel = intent.getExtras().getString("com.parse.Channel");
JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data"));
String title = "New alert!";
if (json.has("header"))
title = json.getString("header");
generateNotification(context, getImg(), title);
} catch (Exception e) {
Log.d(TAG, "JSONException: " + e.getMessage());
}
}

public static void generateNotification(Context context, int icon, String message) {
// Show the notification
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
String title = context.getString(R.string.app_name);
Intent notificationIntent = new Intent(context, SnapClientActivity.class);

// set intent so it does not start a new activity
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, title, message, intent);
notification.vibrate = new long[] { 500, 500 };
notification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

notification.flags =
Notification.FLAG_AUTO_CANCEL |
Notification.FLAG_SHOW_LIGHTS;

notificationManager.notify(0, notification);
}
}

关于android - [解析][Android] 如何在应用运行时抑制推送通知的显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17157277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com