Skip to main content

Problem

Push templates (carousel images, background color, font color, and so on) do not display correctly in Push notifications when the Notification Content Extension is not implemented.

Instruction

Perform the following steps:
  1. Create a Notification Content Extension Target. NCE.png
    • Name the Extension Target. Choose a name for the extension target. Swift is recommended as the language as it works seamlessly with Objective-C projects too. name swift.png
    • Add the AppGroupId to the Notification Content Extension’s Signing & Capabilities settings. signing.png
    • Set the minimum deployment iOS version of the Notification Content Extension to match the main app’s iOS version. deployment.png
  2. Integrate the MORichNotification Framework into the Notification Content Extension Target.
    • In your podfile, add the Notification Content Extension as a separate target and install the MORichNotification framework.
      Swift
      target 'MoEngageDemo' do
      use\_frameworks!
      pod 'MoEngage-iOS-SDK'
      end
      target 'MoEngageNotificationService' do
      use\_frameworks! #use use\_frameworks only if included in main target as in above scenario
      pod 'MoEngageRichNotification'
      end
      target 'MoegageRichContent" do
      use\_frameworks! #use use\_frameworks only if included in main target as in above scenario
      pod 'MoEngageRichNotification'
      end
      
  3. Code changes in NotificationViewController.swift file.
    Swift
    import UIKit
    import UserNotifications
    import UserNotificationsUI
    import MoEngageRichNotification
    class NotificationViewController: UIViewController, UNNotificationContentExtension {
        @IBOutlet var label: UILabel?
        
        override func viewDidLoad() {
            super.viewDidLoad()
            MoEngageSDKRichNotification.setAppGroupID("group.com.XXXXXXXXXXXXXXXX")
        }
        
        func didReceive(_ notification: UNNotification) {
            if #available(iOSApplicationExtension 12.0, *) {
                MoEngageSDKRichNotification.addPushTemplate(toController: self, withNotification: notification) 
            } else {
                // Fallback on earlier versions
            }
        }
    }
    
  4. Select MainInterface.storyboard in the Content extension, remove the default label, and set the background color of the View to clear.
main.png
  1. Info.plist changes:
    Swift
    <key>NSExtensionAttributes</key> 
    <dict>
          <key>UNNotificationExtensionCategory</key>
          <string>MOE_PUSH_TEMPLATE</string>
          <key>UNNotificationExtensionDefaultContentHidden</key>
          <true/>
          <key>UNNotificationExtensionInitialContentSizeRatio</key>
          <real>1.2</real>
          <key>UNNotificationExtensionUserInteractionEnabled</key>
          <true/>
    </dict>
    
    NSExtension.png
  2. Check Build Phases in Main App Target.
    • In Embed App Extensions/Embed Foundation Extensions, ensure that Copy only when installing is not selected. copy only.png
  3. Ensure Consistent appGroupId Across Configurations.
    • Verify that the appGroupId is consistent across all schemes and configurations (for example, Debug/Release/QA/UAT) in the project.
  4. Align Build Configuration.
    • When running or archiving the project, make sure that the Build Configuration for the Main Target, Notification Service Extension, and Notification Content Extension Target points to the same scheme/configuration. debug.png target.png duplicate.png