- 
                Notifications
    You must be signed in to change notification settings 
- Fork 22
How to display messages when app is running in the foreground?
        Andrey Kadochnikov edited this page Jan 11, 2018 
        ·
        22 revisions
      
    In order to display incoming messages (both pushed by APNs and pulled from the server) while your application is running in the foreground, you have to:
- 
Subscribe to MMNotificationMessageReceivednotification://Objective-C [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleNewMessageReceivedNotification:) name: MMNotificationMessageReceived object: nil]; //Swift NotificationCenter.default.addObserver(self, selector: #selector(self.handleNewMessageReceivedNotification(_:)), name: NSNotification.Name(rawValue: MMNotificationMessageReceived), object: nil) 
- 
Handle the notifications: //Objective-C -(void)handleNewMessageReceivedNotification:(NSNotification *)notification { // Display the message only if the application is in the foreground if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) { id messagePayload = notification.userInfo[MMNotificationKeyMessage]; if ([messagePayload isKindOfClass:[MTMessage class]]) { MTMessage * message = messagePayload; // here comes your custom UI, i.e. standard UIAlertController: UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"New message" message:message.text preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction: [UIAlertAction actionWithTitle:@"Dismiss" style:UIAlertActionStyleCancel handler:nil]]; UIViewController * presentingVC = [UIApplication sharedApplication].keyWindow.rootViewController; [presentingVC presentViewController:alertController animated:YES completion:nil]; } } } //Swift @objc func handleNewMessageReceivedNotification(_ notification: NSNotification) { // Only display the message if the application is in the foreground guard UIApplication.shared.applicationState == .active, let userInfo = notification.userInfo, let message = userInfo[MMNotificationKeyMessage] as? MTMessage else { return } // here comes your custom UI, i.e. standard UIAlertController: let alertController = UIAlertController(title: "New message", message: message.text, preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "Dismiss", style: .cancel, handler: nil)) if let presentingVC = UIApplication.shared.keyWindow?.rootViewController { presentingVC.present(alertController, animated: true, completion: nil) } } 
If you have any questions or suggestions, feel free to send an email to [email protected] or create an issue.