-
Notifications
You must be signed in to change notification settings - Fork 20
Rich Push Notifications
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.
- Mobile Engage backend is setup for sending push notifications already
- application is setup for receiving push notifications already
- use Emarsys SDK notification extension as mentioned in documentation
Note
Only HTTPS image URLs are supported.
Mode | Text | Image |
---|---|---|
Notification center collapsed | Title is 1 line and it’s truncated if too long. Character limit ~ 32. Body is 4 line and it’s truncated if too long. Character limit ~ 175 without picture. | The small image preview is shown on the right side. Title: 1 line and it’s truncated if too long. Character limit ~ 32. Body: 4 line and it’s truncated if too long. Character limit ~ 140. |
Lockscreen collapsed | Title is 1 line and it’s truncated if too long. Character limit ~ 32. Body is 4 line and it’s truncated if too long. Character limit ~ 175 without picture. | The small image preview is shown on the right side. Title: 1 line and it’s truncated if too long. Character limit ~ 32. Body: 4 line and it’s truncated if too long. Character limit ~ 140. |
Floating collapsed | Title is 1 line and it’s truncated if too long. Character limit ~ 32. Body is 4 line and it’s truncated if too long. Character limit ~ 175 without picture. | The small image preview is shown on the right side. Title: 1 line and it’s truncated if too long. Character limit ~ 32. Body: 4 line and it’s truncated if too long. Character limit ~ 140. |
Expanded | Title: 1 line and it’s truncated if too long. If the body is very long then it will be scrollable. Character limitations for title ~ 960 and for the body ~ 174 | The image is shown at the bottom. Title is 1 line and it’s truncated if too long. If the body is very long then the notification will be scrollable. The title can be ver long, up to ~1000 characters, the body can be ~256 characters long. |
Note
Exceeding text in the expanded message is always cropped, not appearing.
`Podfile`
target "Emarsys Sample" do
pod 'EmarsysSDK'
end
target "EMSNotificationService" do
pod 'EmarsysNotificationService'
end
`<NameOfYourExtension-Bridging-Header.h>`
```swift
#import <EmarsysNotificationService/EMSNotificationService.h>
```
* 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
}
}
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 set the eventHandlerBlock on EMSAppDelegate.
- Otherwise, you need to set an EMSEventHandlerBlock on
Emarsys.push
.
Emarsys.push.notificationEventHandler = ^(NSString *eventName, NSDictionary<NSString *, id> *payload) {
};
Emarsys.push.notificationEventHandler = { eventName, payload in
}
In case you need to use other UNUserNotificationCenterDelegate
solution, you can set that as a delegate to our Emarsys.push.delegate
and we call the methods of the delegate when our delegate methods were called.
In case you need information about the received message, you can set your EMSNotificationInformationBlock
implementation as a delegate to our Emarsys.push.notificationInformationBlock
and we will call the block with a NotificationInformation
object.
Emarsys.push.notificationInformationBlock = <Your EMSSilentNotificationInformationBlock>;
Emarsys.push.notificationInformationBlock = <Your EMSSilentNotificationInformationBlock>