Send communication and Time Sensitive notifications

RSS for tag

Discuss the WWDC21 session Send communication and Time Sensitive notifications.

View Session

Posts under wwdc21-10091 tag

22 Posts
Sort by:
Post not yet marked as solved
0 Replies
268 Views
I am trying to add time sensitive notifications to my task/reminder app, but I am having some difficulty. Here is the code I am using currently: let center = UNUserNotificationCenter.current() let content = UNMutableNotificationContent() content.title = "Productivi" // that's the name of the app content.body = "\(taskObject.content)" //task content content.categoryIdentifier = "TASK_REMINDER" if #available(iOS 15,*) { print("Using ios 15 for set notification") content.interruptionLevel = .timeSensitive } For the adding notification request, that part works, however when the notification shows up, it isn't a time sensitive one. (I was testing in simulator and on my phone both running iOS 15.4) I can't figure out what else there is I have to do in order to enable the feature. I've done everything it says to do, is their an entitlement or capability I have to add. If so, what is it called and can some one please give me detailed steps on how to add that for local notifications in XCODE? Thank you, -Rohan
Posted
by
Post not yet marked as solved
0 Replies
447 Views
Hello, I recently wrote a Notification Service Extension to allow me to specify a "sender-url" and "attachment-url" property with urls from my backend which are then used to display the appropriate icon images in the sent push notification. Below are all the steps I have taken: Created a Notification Service Extension Added the "Push Notifications" and "Communication Notifications" abilities to my main app. Added (Dict) -> "NSUserActivityTypes" (Array) -> "INSendMessageIntent" (String) to my main app's Info.plist. Added the "NSExtensionAttributes" (Dictionary) -> "IntentsSupported" (Array) -> "INSendMessageIntent" (String) to my Notification Service Extension's Info.plist. I have double checked Apple Developer Portal to make sure that my main App has both the "Push Notifications" and "Communication Notifications" Capabilities. My Notification Service Extension works flawlessly for displaying attachment images through the "attachment-url" property but my extension is unable to properly display a Communication Notification with the custom icon. There are no errors thrown in my code and my extension runs flawlessly yet the notification comes through unchanged when attempting to send it as a Communication Notification. I would also like to add that Communication Notifications work perfectly when I send them locally from the app by following this guide: https://gist.github.com/Dexwell/dedef7389eae26c5b9db927dc5588905 so It is clear that the problem is not my code but the fact that the Communication Notification is being initialized through a Service Extension instead of the app itself. The Apple documentation for Communication Notifications is extremely confusing and thus any help regarding this matter would be appreciated. Full Logs
Posted
by
Post not yet marked as solved
0 Replies
281 Views
I was trying to add multiple sender avatars to a group conversation communication notifications but it's not reflecting in UI. Every Sender object has an image property which has an image value but not all images are showing up in the notification avatar. Also, tried to replicate this locally by creating a custom collage and assign it as image but the InImage doesn't take the local images to render and just showing empty avatar. How can we add multiple avatars to communication notifications? And how can we read InImage from local?
Posted
by
Post not yet marked as solved
0 Replies
375 Views
Hi, When receiving provisional user notifications in iOS 15 the "Turn Off..." button works fine, but the "Keep..." button doesn't save the settings. "Deliver Immediately" option doesn't do anything and "Deliver in Scheduled Summary" hides the buttons, but they appear again in next notification. I've noticed this behavior with several different apps, for example Reddit. Does anyone know anything about this? I have also submitted a bug to Apple but no response so far. select Deliver Immediately can not save , my select , nextTime has new notification , let me select Deliver Immediately or Deliver in Scheduled Summary again . xcode 13.1 iphone 15.1
Posted
by
Post marked as solved
1 Replies
440 Views
I build APNs but It show me the logs I guess THERE might be some permissions I haven't configured LaunchServices: store (null) or url (null) was nil: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=264, _LSFunction=-[_LSDReadClient getServerStoreWithCompletionHandler:]} 2021-10-15 19:01:24.734879+0800 CodeNotificationExtension[28603:929180] [default] Attempt to map database failed: permission was denied. This attempt will not be retried. 2021-10-15 19:01:24.734947+0800 CodeNotificationExtension[28603:929180] [db] Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=264, _LSFunction=-[_LSDReadClient getServerStoreWithCompletionHandler:]} 2021-10-15 19:01:24.735022+0800 CodeNotificationExtension[28603:929180] [Intents] +[INAppInfo appInfoWithAppProxy:] Unable to create app info with application record: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=264, _LSFunction=-[_LSDReadClient getServerStoreWithCompletionHandler:]}
Posted
by
Post marked as solved
2 Replies
505 Views
Hi all, I am trying to display the name of the group in the subtitle of the communication notification, like this: Here is my code:     override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {         self.contentHandler = contentHandler         var personNameComponents = PersonNameComponents()         personNameComponents.nickname = "Test Person"         let avatar = INImage(url: URL(string: "https:imageURL")!)         let senderPerson = INPerson(personHandle: INPersonHandle(value: "1233211234", type: .unknown), nameComponents: personNameComponents, displayName: "Test Person", image: avatar, contactIdentifier: nil, customIdentifier: nil, isMe: false, suggestionType: .none)         let mePerson = INPerson( personHandle: INPersonHandle(value: "1233211232", type: .unknown), nameComponents: nil, displayName: nil, image: nil, contactIdentifier: nil, customIdentifier: nil, isMe: true, suggestionType: .none)         let incomingMessagingIntent = INSendMessageIntent(recipients: [mePerson], outgoingMessageType: .unknown, content: "Test", speakableGroupName: INSpeakableString(spokenPhrase: "Test Group"), conversationIdentifier: "Test Group", serviceName: "Test", sender: senderPerson, attachments: nil)         incomingMessagingIntent.setImage(avatar, forParameterNamed: \.sender)         let interaction = INInteraction(intent: incomingMessagingIntent, response: nil)         interaction.direction = .incoming         do {             let newContent = try request.content.updating(from: incomingMessagingIntent) as! UNMutableNotificationContent             contentHandler(newContent)         } catch {             print(error)         }     } I also have tried: Setting the subtitle of the UNMutableNotificationContent Including the subtitle field in the aps remote notification payload When I display the notification as a normal notification the subtitle is displayed as usual. What am I doing incorrectly?
Posted
by
Post not yet marked as solved
2 Replies
1k Views
APNS Content available push not received in iOS 15 device when app builds with Xcode 13.0, iOS 15 SDK. Push payload data with content available:1 not working {"aps":{"content-available":1},"update":"2|1"} but normal notification message push working {"aps":{"alert":"welcome"}} is there any payload or configuration in the header field for the iOS 15 silent push message?
Posted
by
Post marked as solved
2 Replies
603 Views
Hi all, I am trying to implement the communication notification for me app. But the avatar does not show and there is virtually no difference from a normal notification. I also added the Communication Notification capability, and in my Notification Service Extension's Info.plist, added this: NSExtension → NSExtensionAttributes (dictionary) → IntentsSupported (array) → INSendMessageIntent (string) What am I doing wrong? Here is my code: class NotificationService: UNNotificationServiceExtension {     var contentHandler: ((UNNotificationContent) -> Void)?     var bestAttemptContent: UNMutableNotificationContent?     override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {                  var personNameComponents = PersonNameComponents()         personNameComponents.nickname = "Sender Name"         let avatar = INImage(named: "Cover")         let senderPerson = INPerson(personHandle: INPersonHandle(value: "1233211234", type: .unknown), nameComponents: personNameComponents, displayName: "Sender Name", image: avatar, contactIdentifier: nil, customIdentifier: nil, isMe: false, suggestionType: .none)         let mePerson = INPerson( personHandle: INPersonHandle(value: "1233211232", type: .unknown), nameComponents: nil, displayName: nil, image: nil, contactIdentifier: nil, customIdentifier: nil, isMe: true, suggestionType: .none)         let incomingMessagingIntent = INSendMessageIntent(recipients: [mePerson], outgoingMessageType: .outgoingMessageText, content: "Test DUde", speakableGroupName: nil, conversationIdentifier: "uid", serviceName: "caset", sender: senderPerson, attachments: [])         incomingMessagingIntent.setImage(avatar, forParameterNamed: \.sender)         let interaction = INInteraction(intent: incomingMessagingIntent, response: nil)         interaction.direction = .incoming         do {             let newContent = try request.content.updating(from: incomingMessagingIntent)             contentHandler(newContent)         } catch {             print(error)         }     }     override func serviceExtensionTimeWillExpire() {         // Called just before the extension will be terminated by the system.         // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.         if let contentHandler = contentHandler, let bestAttemptContent =  bestAttemptContent {             contentHandler(bestAttemptContent)         }     } }
Posted
by
Post not yet marked as solved
1 Replies
393 Views
I recently added time-sensitive notifications to my iOS / iPadOS App. let content = UNMutableNotificationContent() if #available(iOS 15.0, *) {         content.interruptionLevel = .timeSensitive } The if #available works fine on iOS 15 and it is ignored on iPadOS or older iOS builds, but it's making the (designed for iPad) App crash when running on Apple Silicon Macs. I am getting the following error: Value of type 'UNMutableNotificationContent' has no member 'interruptionLevel' I tried to add another check but it doesn't work either: #if os(iOS)       if #available(iOS 15.0, *) {         content.interruptionLevel = .timeSensitive       } #endif
Posted
by
Post not yet marked as solved
1 Replies
560 Views
I was implementing time sensitive (remote) push notifications for my app. Which works when I delete the previous version and install the new version. However, it does not work when updating the app from the older version to the newer one which supports time sensitive notifications. I have enabled Time Sensitive Notifications in the developer console and the entitlement file looks like this <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>aps-environment</key> <string>development</string> <key>com.apple.developer.usernotifications.time-sensitive</key> <true/> </dict> </plist> This is the content of the notification {"aps":{"alert":"Reward", "sound": "default", "interruption-level": "time-sensitive"}, "type": "reward", "rewardText": "Cool dude", "rewardPoints": 200} Anyone got an idea?
Posted
by
Post not yet marked as solved
1 Replies
475 Views
Hi, We're working on a non-communication app that would like to send important (health related) updates through the local notification system (UserNotifications). We're sure that these notifications could fit into the "time sensitive" category due to their health relevance. However, one important feature that we need is querying if the user has focus mode enabled and if we're allowed to break through the current focus mode set by the user. Apple provides the Intent API to check if there's a current focus mode enabled, however, it is bound to the "Communication Notification" capability. This capability have its intended use just for chat/instant messenger apps. We're wondering if we could leverage this capability for our purposes even without fitting into the "Communication" app category.
Posted
by
Post not yet marked as solved
0 Replies
274 Views
I'm making a command line utility and I'd like to check the Focus (nee do not disturb) status which requires the Communications Notifications entitlement as per https://developer.apple.com/forums/thread/682143 The utility itself is not sandboxed. as there is no app bundle, is there a way to assign or embed the entitlement into the binary so I can get access to things like INFocusStatusCenter.default.focusStatus.isFocused (if indeed that is relevant in macOS 12)
Posted
by
Post not yet marked as solved
2 Replies
954 Views
Based off the Apple documentation, I expected to see that the notification with the highest relevance score was featured in the Notification Summary. However, when sending several notifications from a single app with the new relevance score field, I am consistently seeing the most recent notification be featured in the Summary — not the one with the highest score. I am using Xcode 13 beta 5 and a device running iOS 15 beta 6. This is the sample payload sent via APNs (with the relevance score being updated between sends): { "aps": { "alert": { "title": "Relevance score: 0.4", "body": "body text here." }, "interruption-level" : "active", "relevance-score" : 0.4 } } I have also confirmed that the UNNotificationContent object has the relevance score field populated with the expected double when receiving the push on the device.
Posted
by
Post marked as solved
4 Replies
1.5k Views
I work on a Messaging app. I am trying to update our app so that it will donate communication intents whenever a message is received. The problem is, even though I am successfully creating an INSendMessageIntent, with a sender (INPerson) with an associated INImage, iOS 15 never actually shows the sender's avatar/image. Is there something more I need to do? This is basically what my code does: INImage *senderImage = [INImage imageWithImageData:imageData]; INPerson *const contact = [[INPerson alloc]                   initWithPersonHandle:handle                   nameComponents:components                   displayName:context.notification.content.title                   image:senderImage                   contactIdentifier:nil                   customIdentifier:senderId.stringValue]; INSendMessageIntent *intent = [[INSendMessageIntent alloc]                     initWithRecipients:@[recipient]                     outgoingMessageType:INOutgoingMessageTypeUnknown                     content:messageText                     speakableGroupName:nil                     conversationIdentifier:threadId                     serviceName:@"Instagram Direct"                     sender:contact                     attachments:nil]; nseContentHandler([notifContent contentByUpdatingWithProvider:intent error:&error]); I am doing all of this in the Notification Service Extension. I can see that the image is valid/nonnull and the contentByUpdatingWithProvider:error: method does not set an error, so I am quite confused
Posted
by
Post not yet marked as solved
1 Replies
377 Views
I didn't add the intentsExtension and intentsUIExtension in my app. I added the communication notifications, time sensitive notifications and push notifications capabilities. I tried to call [FocusStatus.defaultCenter requestAuthorizationWithCompletionHandler:nil]; from my main app. The app would crash when xCode executed the function. Even I provide a completion handler block as input of the function, the app would still crash. (1) should I add two of the Intent extensions in order to use this function? (2) If yes, should I call this ^ function inside these two extensions? and can I call it in the main app? (3) should I call the function asynchronously? Thanks!
Posted
by