-
Notifications
You must be signed in to change notification settings - Fork 30
User Notifications API #114
Comments
In the case of a user-specified alert, such as jobs matching certain keywords on Hasjob, the unsubscribe link should unsubscribe from that particular alert, not the general notification class. This is a problem because Lastuser doesn't know anything about app preferences. Notification classes could now contain user ids, linking them to a particular user, so that a class can be added for each alert the user signed up for. However, while this works for something like Hasjob alerts, which are a small set per user, it won't work for Funnel comment notifications, where the user could have participated in hundreds of threads and should be able to manage their preferences for each. Approach 1: Insist on user-linked notification classes and figure out the UI to make them manageable Approach 2: Allow apps to override the unsubscribe link with their own version of it. However, given how tricky one-click unsubscribe is, this may not be viable. |
To be considered: allow users to respond to a notification. |
Required: it should be possible to (a) delay a notification and (b) withdraw it. For example, if a proposal is confirmed in Funnel, it may have been accidental, so the "Confirm" button should (a) post a delayed notification (5 min to 1 hour, subject to another discussion) and (b) if the user reverses the action, the notification should be cancelled. Reversal isn't well defined here. Docflow's transition doesn't keep an undo history, so in effect, an undo is a transition in the reverse direction, but is still an independent transition. |
The notification problem described above sounds like it is a problem elsewhere. Funnel shouldn't post a notification until a reasonable timeout has occurred. |
Perhaps delayed notifications do have a place in Lastuser, but cancelling a notification should remain an app problem. To be resolved: What is the "context" for a notification? A destination URL? A (presumably global) object id? How does Lastuser batch notifications when it needs to deliver multiple notifications for the same object? Eg: Facebook's "Your Friend and 19 others commented on your post". Where are "Your Friend" (a user), "19 others" (a count) and "commented" (an action) picked up from? Is the client app responsible for tracking these details, or can Lastuser track subject/verb/object and automatically batch? |
Let's take Funnel comment notifications as an example with four users. Funnel has a "Comment on proposal you are subscribed to" notification class:
|
Another scenario:
For this to work, the original status has to be saved somewhere, unless the app has an explicit "undo" action that deletes notifications. |
These scenarios make clear that:
|
How are batch messages composed? In "User D and two others commented on your proposal", this message requires i18n and cannot be composed by Lastuser. It requires translated strings to be stored in the app. This means batching is now an app concern. It also means the app is responsible for querying Lastuser about the status of notifications and updating unread notifications with new data. |
Verb appears to be the same thing as notification class. Do we still need verbs? The need for subjects is also questionable. Not every notification has a subject, so they should be optional. |
Preferences for a notification class are different from being subscribed to notifications of that class on a given object. UserNotificationPreference should therefore be two parts, preferences for a class and subscription to a class+object. |
In this scenario, preferences for a class could once again be separate for contexts (user or organization) so that there is always a context, defaulting to the user's id but sometimes an organization's id. |
Consider WhatsApp/Telegram groups: Notification classes:
Transports:
Extra:
|
For in-app and in-browser transports, the notification will be delivered by the client app itself, not by Lastuser. Apps also own the UX for a user to manage notifications from and are the logical place for the user to look. Further, in an OS like iOS, notification management is centralised in the OS system settings. There is no scope of a Lastuser notification settings page in a native iOS app. Therefore, should notifications be centralised in Lastuser, or should they be managed by each app, using a common API (and shared library codebase)? |
The deprecation is partially inspired by the Meetup app on Android, which offers fine-grained customisation of in-app notifications per meetup group. (No other app I'm aware of does this.) We cannot possibly implement such functionality if users install a HasGeek app, but notifications are managed by the Lastuser app. |
Lastuser needs to provide a centralised mechanism for controlling notifications sent to users by client apps. The primary purpose of this mechanism is to provide a meaningful "unsubscribe".
Notifications should be modelled on the Growl API, giving us:
For email:
To be considered: Should Lastuser preserve a copy of every notification delivered, or even just a transaction id? This is required for proper bounce detection, etc.
Also related: should the existing notice mechanisms (email verification, password reset) be moved on top of the notification API?
The text was updated successfully, but these errors were encountered: