Skip to content

Rich Push Notifications

LasOri edited this page Jul 29, 2020 · 8 revisions

Contents

What is Rich Notification?

Push notification could show media content and action buttons besides the title and body. Push notifications with these types of contents are called Rich Notifications.

Requirements

  1. Mobile Engage backend is setup for sending push notifications already
  2. application is setup for receiving push notifications already
  3. use Emarsys SDK notification extension as mentioned in documentation

Restrictions and limitations

Note

Only HTTPS image URLs are supported.

Mode Text Image
Notification center collapsed Title is 1 line and it’s truncated if too long. Body is 4 line and it’s truncated if too long. The small image preview is shown on the right side. Title is 1 line and it’s truncated if too long. Body is 4 line and it’s truncated if too long.
Lockscreen collapsed Title is 1 line and it’s truncated if too long. Body is 4 line and it’s truncated if too long. The small image preview is shown on the right side. Title is 1 line and it’s truncated if too long. Body is 4 line and it’s truncated if too long.
Floating collapsed Title is 1 line and it’s truncated if too long. Body is 2 line and it’s truncated if too long. The small image preview is shown on the right side. Title is 1 line and it’s truncated if too long. Body is 2 line and it’s truncated if too long.
Expanded Title is 1 line and it’s truncated if too long. If the body is very long than it will be scrollable. The image is shown at the top. Title is 1 line and it’s truncated if too long. If the body is very long than it will be scrollable.

Setup

1. Add a new Notification Service Extension target to your project.
2. Add the EmarsysNotificationService to this target in the Podfile.
`Podfile`
target "Emarsys Sample" do
  pod 'EmarsysSDK'
end

target "EMSNotificationService" do
  pod 'EmarsysNotificationService'
end
3. Install pods with the "pod install" command.
4. If your selected language is Swift, then create a Bridging-Header for your new target.
`<NameOfYourExtension-Bridging-Header.h>`
```swift
#import <EmarsysNotificationService/EMSNotificationService.h>
```
5. Open the NotificationService class in the target, and
* import the EmarsysNotificationService
* extend the class `EMSNotificationService` instead of `UNNotificationServiceExtension`
```swift
import EmarsysNotificationService

class NotificationService: EMSNotificationService {
}
```
6. Request authorization for push notifications in the AppDelegate application:didFinishLaunchingWithOptions: method, like in our sample application
 application.registerForRemoteNotifications()

 var options: UNAuthorizationOptions = [.alert, .sound, .badge]
 UNUserNotificationCenter.current().requestAuthorization(options: options) { [unowned self] granted, error in
     print(granted, error ?? "no error")
     if (granted) {
         Emarsys.notificationCenterDelegate.eventHandler = self
         UNUserNotificationCenter.current().delegate = Emarsys.notificationCenterDelegate
     }
 }
7. Set an EventHandler for Notifications

In order to react to an event, triggered by a push notification message, you have the following options:

  • If you integrate the Emarsys SDK with the EMSAppDelegate, you just have to override the handleEvent method.
  • Otherwise, you need to implement the EMSEventHandler protocol in your AppDelegate.
8. Use other UNUserNotificationCenterDelegate

In case you need to use other UNUserNotificationCenterDelegate solution, you can set that as a delegate to our Emarsys.notificationCenterDelegate and we call the methods of the delegate when our delegate methods were called.

9. Use EMSNotificationInformationDelegate

In case you need information about the received message, you can set your EMSNotificationInformationDelegate implementation as a delegate to our Emarsys.notificationCenterDelegate and we will call the method of the delegate with a NotificationInformation object.

Objective-C
Emarsys.notificationCenterDelegate.notificationInformationDelegate = <Your EMSNotificationInformationDelegate implementation>;
Swift
Emarsys.notificationCenterDelegate.notificationInformationDelegate = <Your EMSNotificationInformationDelegate implementation>
10. That's it. If you are stuck anywhere, just check our sample application.
Clone this wiki locally