Po uruchomieniu aplikacji wykonuje wywołanie API, a następnie wyświetla powiadomienia na podstawie wyników. To około 10 zaplanowanych powiadomień. Wygląda na to, że problem z sygnaturą czasową wyświetlaną na faktycznym powiadomieniu jest nieprawidłowy.Nieprawidłowy znacznik czasu dla przyszłych powiadomień
Od czasu tworzenia powiadomień, a następnie planowania alarmu za pomocą numeru AlarmManager
, domyślnym czasem powiadomienia będzie czas utworzenia powiadomienia (System.currentTimeMillis()
).
Próbowałem użyć metody .setWhen()
na moim Notification.Builder
, aby ustawić ją na czas, którego używam do zaplanowania wcześniej wspomnianego alarmu. Jest to trochę lepiej, ponieważ powiadomienia nie są dostarczane w określonym czasie, często otrzymuję powiadomienia kilka minut temu.
Dodatkowo, próbowałem ręcznie zmienić pole when
na powiadomienia w moim BroadcastReceiver
, tuż przed .notify()
jest w rzeczywistości nazywa się:
public class NotificationPublisher extends BroadcastReceiver {
public static String NOTIFICATION_ID = "notification_id";
public static String NOTIFICATION = "notification";
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = intent.getParcelableExtra(NOTIFICATION);
notification.when = System.currentTimeMillis();
int id = intent.getIntExtra(NOTIFICATION_ID, 0);
notificationManager.notify(id, notification);
}
}
Jednakże w powyższej sytuacji wydaje się, że .when
jest ignorowany.
Szczerze mówiąc, po prostu szukam sposobu, aby znacznik czasu wyświetlany w powiadomieniu był czasem, w którym jest rzeczywiście wyświetlany.
dzięki @sammy pozwól mi spróbować tego! – xbadal
Thanksyou sammy! pracował idealnie – xbadal
czy możesz mi powiedzieć, jak utworzyć wiele powiadomień.? można to zrobić, dostarczając mNotificationId? to muszę anulować to samo! – xbadal