• I've run into two possibly-related issues with the handling of notifications for AntennaPod:

    1. Playing any episode, pausing, then resuming after a minute or so results in a Loading. If this does not go away, play any episode and contact us. notification showing on Bangle.js, however my phone never shows this notification

      • That notification does not go away without me actually deleting the message from the Message GUI

    2. Refreshing podcasts and downloading episodes result in the watch buzzing for every percentage change despite AntennaPod specifying setOnlyAlertOnce()

    I tried filing an issue on AntennaPod's repository, suggesting that download notifications should not be forwarded to wearables, but the developer responded saying some folks may expect download notifications, which I s'pose makes sense - e.g. if you have a slow download, you could monitor it from your watch/computer via KDE Connect/etc.

    I'm not sure if this is a Gadgetbridge problem, a Bangle.js problem, or something else…?

    Device details

    • Pixel 4 XL (LineageOS 20 + GApps, Gadgetbridge 0.74.0-banglejs)
    • Bangle.js 2 (firmware 2v18)

    Apps:

    antonclk (0.11), gpsautotime (0.04), locale (0.17), launch (0.20), about (0.14), clkinfosunrise (0.03), widlock (0.08), agpsdata (0.06), circlesclock (0.25), info (0.03), qcenter (0.04), messageicons (0.05), widbat (0.11), weather (0.25), sched (0.22), widminbt (0.01), alarm (0.41), health (0.23), widmessages (0.05), widalarmeta (0.10), owmweather (0.03), loadingscreen (0.01), kbswipe (0.08), notify (0.13), boot (0.58), setting (0.61), messages (0.60), mylocation (0.10), clock_info (0.06), android (0.29), rescalc (0.03), messagegui (0.73), multitimer (0.04), agenda (0.14), quicklaunch (0.15)
    
  • Well that's interesting... I know things like Google Maps notifications don't normally show up because they're treated as 'Local' notifications... I don't know if the developer could just do that?

    But also, maybe I'm wrong here but I was pretty sure that just 'modifying' a notification didn't push the changes to Bangle.js. Is it possible the developer is dismissing the old notification and creating a new one rather than just doing https://developer.android.com/develop/ui/views/notifications/build-notification#Updating ?

  • Yeah, that's actually what I suggested to the AntennaPod devs on GitHub - specifying "setLocalOnly(true)" on the download and service notifications.

    The counterpoint I was given is that folks may want to see download progress on other devices. And with setAlertOnlyOnce(true) as documented on the page you linked to, presumably Gadgetbridge and/or Bangle.js should not be repeatedly showing the notification, only updating it.

    From what I can tell, AntennaPod does reuse the notification ID to update the notification (rather than deleting and recreating)…

    There is updateNotifications(), which is called by NotificationUpdater which specifies a fixed notification ID:

        private class NotificationUpdater implements Runnable {
            public void run() {
                Notification n = notificationManager.updateNotifications(downloads);
                if (n != null) {
                    NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                    nm.notify(R.id.notification_downloading, n);
                }
            }
        }
    

    (This notification ID and others are defined in the resources.)

    Based on code elsewhere in the same file, this notification is updated once a second:

        /**
         * Schedules the notification updater task if it hasn't been scheduled yet.
         */
        private void setupNotificationUpdaterIfNecessary() {
            if (notificationUpdater == null) {
                Log.d(TAG, "Setting up notification updater");
                notificationUpdater = new NotificationUpdater();
                notificationUpdaterFuture = notificationUpdateExecutor
                        .scheduleAtFixedRate(notificationUpdater, 1, 1, TimeUnit.SECONDS);
            }
        }
    
  • Ok, thanks - that sounds a lot like a Gadgetbridge issue then - maybe it's making new notifications for each one? I did have a branch where I tried to create an onNotificationChanged event rather than showing a new notification, but this never made it in.

    Do you actually need AntennaPod notifications? If not it'd be easy enough to just tap the top-right on the notification on the watch and then Ignore. The media playback buttons should still work even without that.

  • Sure thing! Your musings make sense. I haven't looked into Gadgetbridge's handling yet, but if I notice anything in potential future code-spelunkings, I'll let you know.

    And, nah, I don't need AntennaPod notifications. It'd merely be nice to have, and I figured this might impact other folks too so I should report an issue. I had considered toggling the app off in Gadgetbridge then changing it to handle media notifications before the app blocklist; I'm glad to know the watch option handles similarly.

  • Yes, the watch basically sets the blocklist in Gadgetbridge for you (rather than implementing a different way of blocking notifications).

    Thanks for reporting this - if it turns out it's happening with multiple different apps I'll definitely try and look into it a bit more, it's just a tricky one as it's a Gadgetbridge issue - and if I start making changes to the way Gadgetbridge handles notifications there's potentially a big impact on all the other devices Gadgetbridge supports, so it might be a hard change for me to be able to push back into the main Gadgetbridge repository

  • Maybe AntennaPod supports notification channels? That way you could just disable e.g. "download" notifications

  • Noted! I didn't realize the watch could update Gadgetbridge's settings, that's rather handy. (I initially avoided this as I didn't want to have two separate collections of notification ignoring settings.)

    And sure thing! I understand this is a high risk area to mess with, and I'll keep an eye out for any other apps that trigger this issue.

    (I am surprised that the LineageOS system updater does not cause this given it frequently posts notification updates on download/installation progress. A quick glance at the source code doesn't find any setLocalOnly() calls.)

  • AntennaPod does support notification channels, but I don't see a way to hide a specific notification channels in Gadgetbridge.

    However, I now see that there is a way to filter on specific words in the notification, which I had not noticed and likely can work around this issue. (Ideally, Gadgetbridge itself would be fixed, but if that's too complicated I'd understand.)

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Messages app/Gadgetbridge notifications broken by AntennaPod download/playback?

Posted by Avatar for digitalcircuit @digitalcircuit

Actions