AsteroidOS / AsteroidOSSync

Android application to synchronize a phone with a watch running asteroid-btsyncd.
GNU General Public License v3.0
100 stars 37 forks source link

Text notifications getting lost #35

Open KorakSilvercloud opened 6 years ago

KorakSilvercloud commented 6 years ago

Once I connect the watch I will get the first text notification, every text after the first though will not trigger a notification on the watch.

This is with the stock Messaging app on LineageOS.

FlorentRevest commented 6 years ago

Could you please try again with AsteroidOSSync 0.9 ? It should be available on F-Droid in the upcoming days.

FlorentRevest commented 6 years ago

@KorakSilvercloud, AsteroidOSSync 0.10 has now been released on F-Droid. Could you give it a try? The feedback on notifications has been very positive so far.

ainola commented 5 years ago

I'm having the same issue as @KorakSilvercloud

Running 0.11 on lineageos 14.1. I do have privacyguard enabled by default and thought that was it but it doesn't seem like that was it.

LarksTonguesInAspic commented 5 years ago

This is an issue for me as well under 0.13 sync. The issue persists across multiple messaging apps. I am using Republic Wireless for my carrier on an Android One moto x4.

jrtberlin commented 5 years ago

I played a bit around with messaging apps. The issue seems to be only with apps that update their notification instead of sending a new one. We have onNotificationPosted() and onNotificationRemoved().

I think we're missing an onNotificationUpdated() method.

LarksTonguesInAspic commented 5 years ago

Well, this is exciting progress! 🤓

I am ever-so-slightly familiar with Java. Could a third method simply loop back to the onNotificationPosted() to make the watch recognize every notification as a new one, even if the app sending the notification sees it as an update to an extant notification?

jrtberlin commented 5 years ago

@LarksTonguesInAspic you would probably have to send a remove request followed by the new notification. I haven't checked if an update event value option is built into AsteroidOS like the posted and removed event value. Before changing anything: I'm checking another theory right now. So don't over-engineer a solution yet :D

jrtberlin commented 5 years ago

NLService.java is definitely getting the second message and broadcasting the intent including the second/updated notification.

Debugging

body of the first intent extra: body="Name:Message 1"

body of the second intent extra: body="Name:Message 2\nName:Message 1"

Conculsion

The bug is, instead of what I thought before, probably not in NLService.java. Maybe the Watch does not update the notification if a second one comes in with the same identifier ("id")?

FlorentRevest commented 5 years ago

@jrtberlin maybe you can use "notificationtool" to try to update a notification and see if lipstick/asteroid-launcher do this correctly https://asteroidos.org/wiki/useful-commands/#notifications (it has a --id option as well)

asteroid-btsyncd should already have code to update notifications https://github.com/AsteroidOS/asteroid-btsyncd/blob/master/notificationservice.cpp#L75

jrtberlin commented 5 years ago

I get 2 distinct notifications for 2 with the same id.

root@dory:ceres# notificationtool -o add -i=1337 --application="Super App"  "Great Title" "Amazing content 1"
root@dory:ceres# notificationtool -o add -i=1337 --application="Super App"  "Great Title" "Amazing content 2"

@FlorentRevest any idea how to log the notification stack on the watch?

FlorentRevest commented 5 years ago

@jrtberlin notificationtool just issues a Notify dbus function call sorta following the freedesktop notifications standard. The Notify dbus call ends up here in lipstick: https://github.com/AsteroidOS/lipstick/blob/master/src/notifications/notificationmanager.cpp#L234 You will most likely have to recompile lipstick with debugging messages to trace what's going on from there.

asteroid-launcher directly gets notifications from the NotificationListModel https://github.com/AsteroidOS/lipstick/blob/master/src/notifications/notificationlistmodel.cpp https://github.com/AsteroidOS/asteroid-launcher/blob/master/qml/notifications/NotificationsPanel.qml#L44

LarksTonguesInAspic commented 5 years ago

Well, some Linux user I am; I just thought to turn on the Developer Mode in AsteroidOS, and can ssh in fine now. XD

I am sending myself some texts and trying to find some logging thereof in /var/log/messages. What should the standard logging of a notification look like in AsteroidOS?

One more item: I have had MAC address randomization set to On in my Android developer settings. I noticed these lines of the logs which may be related(?): Jun 10 12:44:24 dory daemon.warn systemd-udevd[257]: Could not generate persistent MAC address for ifb0: No such file or directory Jun 10 12:44:24 dory daemon.warn systemd-udevd[303]: Could not generate persistent MAC address for ifb1: No such file or directory Is this useful troubleshooting or should I just leave this to the people who know better than me? XD

LarksTonguesInAspic commented 5 years ago

Okay, I think I found the specific logging of a text notification: `): notification begin from name=:1.38 owner=:1.38 pid=403 uid=1000 gid=1000 priv=0 cmd= /usr/bin/asteroid-launcher -plugin evdevtouch:/dev/input/event1

Jun 10 13:02:15 dory daemon.notice mce[280]: tklock.c: tklock_datapipe_exceptionstate cb(): exception_state = none -> notif

Jun 10 13:02:15 dory daemon.notice mce[280]: tklock.c: tklock_uiexcept_rethink(): displ ay state req: ON

Jun 10 13:02:15 dory daemon.notice mce[280]: modules/display.c: mdy_display_state_leave (): current display state = POWER_UP

Jun 10 13:02:15 dory daemon.info asteroid-launcher[403]: unsleepDisplay

Jun 10 13:02:15 dory daemon.notice mce[280]: modules/display.c: mdy_display_state_enter (): current display state = ON

Jun 10 13:02:15 dory daemon.info statefs[301]: Display: "on"

Jun 10 13:02:21 dory daemon.notice mce[280]: tklock.c: tklock_dbus_notification_end_cb( ): notification end from name=:1.38 owner=:1.38 pid=403 uid=1000 gid=1000 priv=0 cmd=/u sr/bin/asteroid-launcher -plugin evdevtouch:/dev/input/event1

Jun 10 13:02:21 dory daemon.notice mce[280]: tklock.c: tklock_datapipe_exceptionstate cb(): exception_state = notif -> linger

Jun 10 13:02:22 dory daemon.notice mce[280]: tklock.c: tklock_datapipe_exceptionstate cb(): exception_state = linger -> none `

matbgn commented 1 year ago

Hi guys,

Any news on this particular issue?