Not able to see iOS 15 avatar only when I release my app

I’ve faced the following issue, and shortly the notification picture does not show up with iOS 15 under some conditions.

It seems that during INImage processing for INSendMessageIntent, it tries to generate an internal URL with intents-remote-image-proxy if the given source is not a remote URL. But proper URL doesn’t seem to be generated in some cases and the expected image doesn’t show up. 

Here the weirdest part for me is that the problem only happens when I release my app (for example to the TestFlight), and with the XCode debug build my implementation works perfectly.

[This is the error trace when I release the app]

default	16:29:26.149259+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': sender image _uri: (null)

default	16:29:26.149777+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': url created from image's _identifier

default	16:29:26.149823+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': contentURL scheme does not match scheme 'intents-remote-image-proxy'. Attempting to get a corresponding url with 'intents-remote-image-proxy' scheme. contentURL: 'B4BBA163-2F98-AFCC-8A8D-1178AC8399B5'

default	16:29:26.149869+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': Getting proxied image synchronously for content url 'B4BBA163-2F98-AFCC-8A8D-1178AC8399B5'.

*** error	16:29:26.150077+0900	NotificationExt	-[INImageServiceConnection synchronousServiceProxyWithErrorHandler:]_block_invoke Error (from connection <private>; pid: 0) when using image service: Error Domain=NSCocoaErrorDomain Code=4099 UserInfo={NSDebugDescription=<private>}

*** error	16:29:26.150238+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': Error getting proxied image synchronously for content url 'B4BBA163-2F98-AFCC-8A8D-1178AC8399B5' error: Couldn’t communicate with a helper application.

default	16:29:26.150280+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': Final contentURL 'B4BBA163-2F98-AFCC-8A8D-1178AC8399B5' to persist. Finished in: 0.000854 seconds

With XCode debug build, it works perfectly with generating the proper URL with 'intents-remote-image-proxy' scheme.

[This is the trace of the successful case with XCode debug build]

default	18:37:38.366065+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': sender image _uri: (null)

default	18:37:38.366822+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': url created from image's _identifier

default	18:37:38.366879+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': contentURL scheme does not match scheme 'intents-remote-image-proxy'. Attempting to get a corresponding url with 'intents-remote-image-proxy' scheme. contentURL: 'F9EFABF4-3A8F-174A-65E3-BD5B2EBEB2AF'

default	18:37:38.366920+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': Getting proxied image synchronously for content url 'F9EFABF4-3A8F-174A-65E3-BD5B2EBEB2AF'.

default	18:37:38.367166+0900	NotificationExt	Persisting INImage for Intent Type 'INSendMessageIntent': Final contentURL 'intents-remote-image-proxy:?proxyIdentifier=F9EFABF4-3A8F-174A-65E3-BD5B2EBEB2AF.png&storageServiceIdentifier=com.apple.Intents.INImageServiceConnection' to persist. Finished in: 0.000929 seconds

Here is the part of my code snippet.

        let friendImg = INImage(imageData: img.jpegData(compressionQuality: 0.1)!)

        let senderPerson = INPerson(

            personHandle: INPersonHandle(value: nil, type: .unknown),

            nameComponents: nil,

            displayName: “test”,

            image: friendImg,

            contactIdentifier: nil,

            customIdentifier: nil,

            isMe: false,

            suggestionType: .none

        )



        let intent = INSendMessageIntent(

            recipients: nil,

            outgoingMessageType: .outgoingMessageText,

            content: nil,

            speakableGroupName: INSpeakableString(spokenPhrase: “test”),

            conversationIdentifier: nil,

            serviceName: nil,

            sender: senderPerson,

            attachments: nil

        )

        

        intent.setImage(friendImg, forParameterNamed: \.sender)

        

        let interaction = INInteraction(intent: intent, response: nil)

        interaction.direction = .incoming

        interaction.donate(completion: nil)

        

       do {

                content = try content.updating(from: intent) as! UNMutableNotificationContent

            } catch {

                //…

            }
        }

Plus,

  • I’ve added NSExtension → NSExtensionAttributes (dictionary) → IntentsSupported (array) → INSendMessageIntent (string) in Notification Service Extension's Info.plist
  • I’ve Enabled the Communication Notifications capability on my main app target

Any Idea on this issue? Is there anything suspected?

Replies

I have same issue. Did you solve this problem?

Same here. I had it working in Debug builds and TestFlight debug builds. Shipped the app and noticed the avatars did it appear. Confirmed it is not working any more, even in Debug builds. I tried a lot of things, including changing the notification title just to indicate any change at all and got it working for Debug builds. Tried an Ad-Hoc Release build and it back to not working…