Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Introduction

Notifications are an excellent way of giving users external reminders to open the app. While intrinsic motivation to use the app is always preferred, in the early days of usage, external motivation is usually required to build the habit of usage. One scalable form of doing so is by using notifications.

JTBD

  • Jobs To Be Done: As a user, I'd like learn/teach better, which is why I installed the Sunbird app in the first place. However, I would like some help to ensure I continue to use it.
  • User Personas: TeacherStudentRamShyam
  • System or Environment: Mostly at home.

Mobile push notifications overview

The following section primarily deals with setting up of mobile push notifications (specifically on Android, for now).

Mobile notifications - Overall Process Workflow

  1. As a user, I install the application and launch it.
  2. The device registers with Sunbird servers to receive notifications from the latter. Any permissions needed to enable this are requested from the user.
  3. The device requests to listen on particular topics, to receive broadcast notifications.
  4. Whenever the Sunbird instance wishes to broadcast notifications to a topic, all devices subscribed to it are informed.
  5. Whenever the Sunbird instance wishes to send notifications to a target set of devices, only those devices will be informed.
  6. In the cases above, my notifications are maintained in a notifications drawer that I can access at any time from the app.
  7. I also can see a notification banner for every new notification that I'm receiving from the Sunbird service.
  8. From time to time, renewal of device registration with Sunbird servers to receive notifications should be done.

Mobile notifications - As a Sunbird admin, I require to have the latest information to send notifications to the mobile device

When the user launches the app on the mobile device, we need to send any updates to the server in order to send push notifications reliably.

Main Scenario

User launches the mobile app, and updated notification token (if any) is shared with server.

Srl. No.User ActionExpected Result

User launches mobile app

Device checks to see if the token to send notifications has expired, and sends an update accordingly.

The updated token is stored in the device database, in a sufficiently encrypted/protected format.

If the language in app has changed, it is stored in device database.

Alternate Scenario 1 - User doesn't launch the mobile app, and the token expires but the local notification system is still active

When the local notification system is activated, the device checks if the token has expired, and if so sends the update to the server.

Srl. No.User ActionExpected Result

User doesn't act, but receives a local notification to open the app.App wakes up, checks if the notification token has expired, and sends an update to server accordingly.

Exception Scenarios

Srl. No.Error / ExceptionExpected Handling

App launches, but device is offline.The app attempts to send the notification token to server, but since there's no acknowledgement - it remembers to do so when connection is established with the server.

App sends notification token update to the server, but no acknowledgement is received.App waits for a TTL (10 minutes for now - as app session might still be active), and tries again.

Local notification/alarm wakes the app up, but device is offline and update can't be sent.The app waits for a TTL (randomly selected between 12-24 hours) and tries again. Using a random selection, since the server can get flooded with update calls since almost all mobile devices are synced to the right time and the local notification can happen for all devices simultaneously.

App language was sent to server, but no acknowledgement was received.The app waits until it is launched again, and resends the app language to the server.

Wireframes

N/A

For Future Release

Bunching of notifications into a single summary notification to be displayed within the Android notifications drawer.

JIRA Ticket ID

Mobile notifications - As a Sunbird admin, I should be able to broadcast a notification to users

As a Sunbird admin, there might be important information that needs to be broadcast to all users (e.g. Sunbird instance will be down next week between 9-11 AM). I should be able to inform all users about it.

Main Scenario

Sunbird admin sends the broadcast notification to all users.

Srl. No.User ActionExpected Result

Admin uploads parameters for the notification in various supported languages:

  1. Title
  2. Body
  3. Icon (optional)
  4. Banner image (optional)
  5. Action link (optional)
    1. Update app - Play Store link
    2. Course registered/started - Course ID
    3. Try content - Content ID
    4. Book updated - Book ID
    5. FAQ updated - FAQ page(+section ID)
    6. Survey request - Google Form link (EXTERNAL URL)
    7. Informational video - YouTube link (EXTERNAL URL)
Notification (payload) is ready and validated.

Sunbird admin sends broadcast notification on a topic

All devices subscribed to that topic should receive the notification, in their app language.

Exception Scenarios

Srl. No.Error / ExceptionExpected Handling

Notification is sent, but device is offline.No action needed as this is handled automatically by GCM (until expiry of message).

Notification is sent, but sending fails (due to expired message, since device was offline for too long).No action for now. We'll consider handling this in a later release.

Notification is sent, but sending fails (due to expired token)No action for now. Device sends updated token at next launch, and notifications after that should work fine.

Wireframes

For Future Release

N/A

JIRA Ticket ID

Mobile notifications - As a Sunbird admin, I should be able to target notifications to a set of users

As a Sunbird admin, there might be important information that needs to be broadcast to a subset of users (e.g. Specific tenant users can now access Courses from dd-mmm). Only these users should be informed.

Main Scenario

Sunbird admin sends the broadcast notification to all users.

Srl. No.User ActionExpected Result

Sunbird admin opens the Notifications UI.

Admin sees the various filters that can be applied.


Admin selects applicable filters, under the following categories:

  1. Origin
    1. User account that uses this device
      1. Board
      2. Medium
      3. Class
      4. User-type
        1. Guest
          1. Teacher
          2. Student
        2. SignedIn
          1. Teacher
          2. Others
        3. State Signed In
    2. Geolocation
  2. Dates
    1. First seen date (age of device)
    2. Last seen date
Admin sees count of devices that match such a criteria.

Admin uploads parameters for the notification in various supported languages (similar to broadcast notification popup).Notification (payload) is ready and validated.

Sunbird admin sends notification to target devices.All target devices should receive the notification.

Exception Scenarios

Srl. No.Error / ExceptionExpected Handling

Profile on device had other details, but wasn't synced as device was offline.Notification is delivered anyway. The profile details are updated when new telemetry is received at server.

Same logged in profile / guest profile is seen on multiple devices.Latest device where user profile is seen receives the message.

Wireframes

For Future Release

Automatic setting up of push notifications to target devices (E.g. sending notifications on day after install / one week after install)

JIRA Ticket ID

Mobile notifications - As a user, I should receive a notification on my device

As a user, I would like to be notified when there's an important update from the Sunbird instance I use. I might also welcome the occasional nudges to try out new and exciting content, or information about new app versions that are available.

Main Scenario

User receives a notification from server.

Srl. No.User ActionExpected Result

(Optional) User notices new notification in mobile notifications drawer. This can include:

  • Icon
  • Text
  • Banner image
  • Action Bar (<Action>, DETAILS)

User taps on notification.


User taps on:

  1. General notification body
  2. Action bar (<Action> button)
  3. Action bar (DETAILS button)

As per action:

  1. User is taken to the notification panel inside app, and the corresponding notification is highlighted.
  2. User is directly taken to the action (e.g. App on Play Store page, content details page, courses page, External URL etc.)

If the user doesn't arrive via the device notifications drawer, then the user launches the app.User sees the notification icon highlighted.

User taps on notification icon.

User sees the latest new notifications.

Whenever user closes the notification panel, all indications of new notifications are removed and they are marked as read.


User taps on a notification that has an action associated (or directly on the action itself)User takes the action (e.g. goes to Play Store, content details/courses page, External URL etc.)

Exception Scenarios

Srl. No.Error / ExceptionExpected Handling

User receives multiple notifications with the same contentOnly the latest version should be kept.

User receives an erroneous notification (assume spelling mistake), and later receives the correct notification (I'm assuming we have some sort of notification IDs to fix old notifications).The updated notification is only kept on the device.

User sends a notification by mistake, and then sends a blank notification (with the same notif ID) to remove it.The notification doesn't show up in the app's notification drawer.

User receives an erroneous notification, then goes offline (during which the corrected notification arrives).

User sees the erroneous notification.

When they go online, they will see an updated notification in their notification panel - which shows the corrected notification (erroneous notification has been updated).

Wireframes

https://zpl.io/VqlB7Qm

For Future Release

N/A

JIRA Ticket ID

Localization Requirements

UI ElementDescriptionLanguage(s)/ Locales Required
NotificationNotification title, message, action items, iconRelevant languages supported by Sunbird instance.



Telemetry Requirements

Event NameDescriptionPurpose

Non-Functional Requirements

Performance / Responsiveness RequirementsLoad/Volume RequirementsSecurity / Privacy Requirements
Push notification messages should not expire upto 2 weeks (~95% of devices come online within 2 weeks).Platform should be able to handle upto 10% of total active installs coming online within an hour.Push notification tokens to be sufficiently encrypted as these constitute personal information.



Impact on other Products/Solutions

Product/Solution ImpactedImpact Description


Impact on Existing Users/Data 

User/Data ImpactedImpact Description


Key Metrics

Srl. No.MetricPurpose of Metric




  • No labels