Skip to content

Commit

Permalink
Bubble notification docs (Karn#51)
Browse files Browse the repository at this point in the history
* Updated Advanced Notification Guide to include Bubble notifications.

* String formatting and cleanup

* Switched to 100col width for comments.
  • Loading branch information
Karn authored Oct 16, 2019
1 parent 5847f76 commit baa6201
Showing 1 changed file with 63 additions and 13 deletions.
76 changes: 63 additions & 13 deletions docs/advanced.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,11 @@ Notify
add(Action(
// The icon corresponding to the action.
R.drawable.ic_app_icon,
// The text corresponding to the action -- this is what shows .
// The text corresponding to the action -- this is what shows below the
// notification.
"Clear",
// Swap this PendingIntent for whatever Intent is to be processed when the action is clicked.
// Swap this PendingIntent for whatever Intent is to be processed when the action
// is clicked.
PendingIntent.getService(context,
0,
Intent(context, MyNotificationService::class.java)
Expand All @@ -84,21 +86,69 @@ Notify
title = "New dessert menu"
text = "The Cheesecake Factory has a new dessert for you to try!"
}
// Define the notification as being stackable. This block should be the same for all notifications which
// are to be grouped together.
// Define the notification as being stackable. This block should be the same for all
// notifications which are to be grouped together.
.stackable { // this: Payload.Stackable
// In particular, this key should be the same. The properties of this stackable notification as
// taken from the latest stackable notification's stackable block.
// In particular, this key should be the same. The properties of this stackable
// notification as taken from the latest stackable notification's stackable block.
key = "test_key"
// This is the summary of this notification as it appears when it is as part of a stacked notification. This
// String value is what is shown as a single line in the stacked notification.
// This is the summary of this notification as it appears when it is as part of a
// stacked notification. This String value is what is shown as a single line in the
// stacked notification.
summaryContent = "test summary content"
// The number of notifications with the same key is passed as the 'count' argument. We happen not to
// use it, but it is there if needed.
// The number of notifications with the same key is passed as the 'count' argument. We
// happen not to use it, but it is there if needed.
summaryTitle = { count -> "Summary title" }
// ... here as well, but we instead choose to use to to update the summary for when the notification
// is collapsed.
// ... here as well, but we instead choose to use to to update the summary for when the
// notification is collapsed.
summaryDescription = { count -> count.toString() + " new notifications." }
}
.show()
```
```


#### BUBBLE NOTIFICATIONS

With the release of Android 10, Notify now also supports [Notification Bubbles](https://developer.android.com/guide/topics/ui/bubbles) on devices with the `Notification Bubbles` enabled through the Developer Settings. This new form of notification allows an application to display rich content from an activity at a glance to a user.

Begin by first creating an activity and adding the following permissions to that activity within your `AndroidManifest.xml`:

```xml
<application
...>

<!-- Find the Activity being used for the Bubble Notification -->
<activity
...
<!-- Add the three lines below to the activity being used -->
android:allowEmbedded="true"
android:documentLaunchMode="always"
android:resizeableActivity="true" />
</application>
```

Then you can target that activity from the notification.

```kotlin
Notify.with(context)
.content { // this: Payload.Content.Default
title = "New dessert menu"
text = "The Cheesecake Factory has a new dessert for you to try!"
}
// Define the Notification as supporting a Bubble format. This style can be applied to any
// notification.
.bubblize { // this: Payload.Bubble
// Configure the target Intent for the Notification to launch when it is expanded.
val target = Intent(context, BubbleActivity::class.java)
// Provide a PendingIntent to launch the above target once the Bubble is expanded.
val bubbleIntent = PendingIntent.getActivity(context, 0, target, 0)

// Set the image for the Bubble, this uses the IconCompat class to build the icon being
// shown within the bubble.
bubbleIcon = IconCompat.createWithResource(context, R.drawable.ic_app_icon)
// Set the activity that is being shown when the Bubble is expanded to the PendingIntent
// created above.
targetActivity = bubbleIntent
}
.show()
```

0 comments on commit baa6201

Please sign in to comment.