Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Test Rich Notifications in Simulator

I am able to test the normal notifications in Simulator, but when I tried to test rich notifications nothing happens, event title is not getting updated.

Could you please assist me, how to proceed. Do I need to change any simulator settings? I am using Xcode 11.4

Sample Payload :

{
    "aps": {
        "mutable-content": 1,
        "alert": {
            "body": "Push notification body",
            "title": "Push notification title"
        }
    },
    "media-url": "https://i.imgur.com/t4WGJQx.jpg"
}

NotificationService Extension Method:

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
     self.contentHandler = contentHandler;
     self.bestAttemptContent = [request.content mutableCopy];
    
    self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]",
    self.bestAttemptContent.title];
}
like image 916
dsarathb Avatar asked Jan 01 '23 05:01

dsarathb


1 Answers

EDIT - Xcode 14 fix

Xcode 14 release notes:

Simulator now supports remote notifications in iOS 16 when running in macOS 13 on Mac computers with Apple silicon or T2 processors. Simulator supports the Apple Push Notification Service Sandbox environment. Your server can send a remote notification to your app running in that simulator by connecting to the APNS Sandbox (api.sandbox.push.apple.com). Each simulator generates registration tokens unique to the combination of that simulator and the Mac hardware it’s running on. See User Notifications for more information.

Remote Notifications support more features (like Notification Service Extensions) than locally simulated notifications using .apns payload files or the simctl push command.

OLD Answer

Looking at Xcode 11.4 release notes

Under Known Issues:

Notification Service Extensions do not work in simulated push notifications. The mutable-content key is not honored. (55822721)

I guess your fallback is to just test it by sending a real notification using a tool like PushNotifications where you need:

  • device token
  • bundle identifier
  • certificate or token
  • payload
  • selection of correct environment

I used PushNotifications myself and it worked.

like image 144
mfaani Avatar answered Jan 18 '23 15:01

mfaani