Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Push notification service extension not showing media content

I implemented push notifications earlier using this code. Here is the code I used to push a notification in my app. I did maintain all the procedure as explained. This code triggers the push notification successfully.

private func initPushNotification(_ application: UIApplication) {
    Messaging.messaging().delegate = self
    if #available(iOS 10.0, *) {
        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions,
            completionHandler: {status, error in
                PushNotificationHelper.shared.sendStatus(status)
            })
        // For iOS 10 display notification (sent via APNS)
        UNUserNotificationCenter.current().delegate = self
    } else {
        let settings: UIUserNotificationSettings =
        UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }
    application.registerForRemoteNotifications()
    UIApplication.shared.applicationIconBadgeNumber = 0
}

 func userNotificationCenter(_ center: UNUserNotificationCenter,
                            willPresent notification: UNNotification,
  withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
  
    let userInfo = notification.request.content.userInfo
    Messaging.messaging().appDidReceiveMessage(userInfo)
    completionHandler([.alert, .sound, .badge])
}

// On Click Notification bar
func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) {
    
    let userInfo = response.notification.request.content.userInfo
    Messaging.messaging().appDidReceiveMessage(userInfo)
    
    PushNotificationHelper.shared.handlePushNotification(response)
    
    completionHandler()
}

func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any],
   fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
  Messaging.messaging().appDidReceiveMessage(userInfo)
    
  completionHandler(.noData)
}

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    
}

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    
    Messaging.messaging().apnsToken = deviceToken
            
            #if DEBUG
                PushNotificationHelper.shared.subscribeToTopic(topic: PNServiceTopicKey.debug_all.keyValue)
                PushNotificationHelper.shared.unsubscribeToTopic(topic: PNServiceTopicKey.release_all.keyValue)
                PushNotificationHelper.shared.handleDebugPremiumUser()
            #else
                PushNotificationHelper.shared.subscribeToTopic(topic: PNServiceTopicKey.release_all.keyValue)
                PushNotificationHelper.shared.unsubscribeToTopic(topic: PNServiceTopicKey.debug_all.keyValue)
                PushNotificationHelper.shared.handleReleasePremiumUser()
            #endif

}

But now I want to show the content in my notification. So I did implemented the Notification Content Extension. But still the content is not showing. This only shows the notification with title and body.

func notificationCenter(){
    let notification = UNUserNotificationCenter.current()
    notification.requestAuthorization(options : [.alert , .badge , .sound]) { success, error in
        if success {
            print("Authorization Successful")
            notification.delegate = self
        }else{
            print("Authorization Failed")
        }
    }
    let openButton = UNNotificationAction(identifier: "openButton", title: "Open" , options: .foreground)
    let category = UNNotificationCategory(identifier: "myNotificationCategory", actions: [openButton], intentIdentifiers: [] , options: [])
    notification.setNotificationCategories([category])
}

I am using this payload -

{
 "to" : "/topics/avm_ios_debug_all",
 "content_available": true,
 "category": "content_added_notification",
 "alert" : {
    "title" : "Try our new photo editor",
    "body" : "Your message Here"
    },
    "mutable-content" : "1",
    "category" : "Make your images attractive and colorful",
 "data": {
 "title": "Try our new photo editor",
 "body" : "Make your images attractive and colorful",
 "app-url": "https://apps.apple.com/us/app/example",
 "deep-link": "deeplink://",
 "image" : "https://www.cyberclick.net/hs-fs/hubfs/Banner%20Ads.jpg?width=1200&name=Banner%20Ads.jpg"
 }
}

Here is the Sample Image

like image 450
d0tb0t Avatar asked Oct 11 '25 11:10

d0tb0t


1 Answers

I solved the problem by following the below steps :

  1. Ensure you are pushing the notification using the APNs service.
  2. Use "mutable-content": 1.
  3. Check if the notification category is correct according to the Content Extension Plist.
  4. Can not debug using break point.
  5. And lastly you must ensure your payload is correct.
like image 82
d0tb0t Avatar answered Oct 14 '25 06:10

d0tb0t



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!