Messages

RSS for tag

Create app extensions that lets users send text, stickers, media files, and interactive messages using Messages.

Posts under Messages tag

200 Posts

Post

Replies

Boosts

Views

Activity

Collaboration and Send Copy while sharing. How to make it right in Messages?
Hi! I'm working on the app where users can share their content via collaboration or just send copy as a json file. The problem I'm facing is that I cannot make it work correctly in Messages. Having only one option like Collaboration or Send Copy work just fine but with active selector between those two options on share sheet is confuse me a lot. I use ShareLink along with Transferable protocol @ViewBuilder private var control: some View { if let presentation { ShareLink( item: shareItem(for: presentation), preview: preview(for: presentation) ) { label } } else { Button {} label: { label } .disabled(true) } } public static var transferRepresentation: some TransferRepresentation { CKShareTransferRepresentation { item in return item.exportedShare(for: plan) } .exportingCondition { $0.collaborationPlan != nil } FileRepresentation(exportedContentType: .customDocumentType) { item in SentTransferredFile(item.copyFileURL) } } private func exportedShare( for plan: ShareCollaborationPlan ) -> CKShareTransferRepresentation<Self>.ExportedShare { let container = CKContainer(identifier: plan.containerIdentifier) let allowedSharingOptions = LiveCollaborationPermissionPolicy .makeAllowedSharingOptions() switch plan { case let .existing(handle): return .existing( handle.shareForPresentation(title: title), container: container, allowedSharingOptions: allowedSharingOptions ) case .prepare: return .prepareShare( container: container, allowedSharingOptions: allowedSharingOptions ) { [prepareCollaboration] in try await prepareCollaboration().shareForPresentation(title: title) } } } In general this works fine except Messages. When I trying to start Collaboration in Messages, it show an error "Collaboration Not Available" and it is trying to send a file instead of Collaboration link I setup my CKShare like this func shareForPresentation(title: String) -> CKShare { share[CKShare.SystemFieldKey.title] = title if let thumbnailImageData = Self.thumbnailImageData { share[CKShare.SystemFieldKey.thumbnailImageData] = thumbnailImageData } return share } private static let thumbnailImageData: Data? = { #if canImport(UIKit) UIImage(named: "SharePreviewIcon", in: .main, compatibleWith: nil)? .pngData() #else nil #endif }() I have tried to use UIActivityController with NSItemProvider where I use registerCKShare and registerFileRepresentation on the same provider. It works also just fine, except Messages, where it always trying to send Collaboration no matter what I choose Collaboration or Send Copy on share sheet selector. I have tried to use two NSItemProvider's for CKShare and file, this works as I wanted but it messed-up metadata which is I'm not able to setup in the way I want. Please help me to understand how I can setup share where Collaboration and Send Copy work correctly with Messages?
0
0
204
2w
Cannot archive project
Hi, I’m new to Xcode and I’m wanting to publish a sticker app using the template. I have added all the stickers and icons and even tested in simulation, I also have registered the identity and app id but when I try to archive it I encounter two errors: _Communication with Apple failed Your team has no devices from which to generate a provisioning profile. Connect a device to use or manually add device IDs in Certificates, Identifiers & Profiles. https://developer.apple.com/account/ and No profiles for ' ' were found Xcode couldn't find any iOS App Development provisioning profiles matching ' ‘_ my understanding is that I don’t really need to do anything else nor need a physical device. the bundle is identical in the app id.
0
0
98
3w
Multiple MFMessageComposeViewController
Does iOS support launching of 2 MFMessageComposeViewControllers back to back i.e without dismissing the previous one? We are integrating an SDK from a vendor who, inside the SDK is presenting the MFMessageComposeViewController 2 times back to back, and one of the MFMessageComposeViewController is getting dismissed but the other one doesn't, their standalone app does the same but it works there, not inside the SDK, Just wanted to know why the second MFMessageComposeViewController doesn't dismiss, or is it the correct approach to do so.
0
0
407
Aug ’26
iOS 26 Message Filter Extension not invoked after conversation is moved to Spam
We're seeing a behavior change with ILMessageFilterExtension on iOS 26 and would like to confirm whether this is expected or a regression. Environment iOS: 26.x Framework: IdentityLookup Extension type: ILMessageFilterExtension Behavior For a new sender: An incoming SMS arrives. handle(_:context:completion:) is invoked. The extension returns a classification. The conversation is moved to the Spam folder. Subsequent SMS messages in the same conversation are delivered to the Spam folder, but handle(_:context:completion:) is no longer invoked for any new messages. Expected behavior We expected the message filter extension to be invoked for every incoming SMS, regardless of the current conversation folder, allowing the extension to evaluate each message independently. Actual behavior Once the conversation is in the Spam folder, all subsequent messages bypass the extension completely. The extension receives no callback, making it impossible to: Re-evaluate new messages using updated filtering logic. Change the classification if sender reputation changes. Apply cloud-based or dynamic filtering policies on subsequent messages. Questions Is this behavior expected in iOS 26? Has the message filtering pipeline changed so that conversations already classified as Spam no longer invoke ILMessageFilterExtension? Is there any documented API or recommended approach to have the extension evaluate every incoming message for an existing Spam conversation? If this is not expected, is this a known issue? If anyone from Apple or other developers can confirm whether this is by design, it would be greatly appreciated.
1
0
442
Aug ’26
India Post tracking numbers are incorrectly detected as DTDC shipments in Messages App
Device: iPhone 17 iOS Version: Latest public release Steps to Reproduce: Receive an SMS from India Post containing a tracking number (e.g. EU714545174IN). Long-press the tracking number. Select Track Shipment. Expected Result: The shipment should be tracked using India Post or the correct carrier. Actual Result: iOS opens an in-app Safari page for DTDC with an invalid tracking URL. The shipment cannot be tracked because the tracking number belongs to India Post, not DTDC. Additional Information: Tapping the India Post website link in the SMS works correctly. Only the built-in Track Shipment action misidentifies the carrier.
0
0
249
Aug ’26
Limits to Apple Messaging
I’m developing an app (well, Claude Code is doing the Swift work) that has a need to send SMS messages on a regular basis. It’s an app that sends location information to a third party, via SMS, in case the user goes missing. Claude is telling me that the user has to hit send for every message. Claude also says there’s no way for the app to know if a message was successfully sent. It only knows that it was queued in Messenger but not that it was actually successful in sending. In the Android port we don’t have those restriction, apparently. The Android app can send messages without the users involvement (after granting permission ahead of time). The Android app can also query as to whether the send was successful, and optionally retry the send when it wasn’t. The advantage of not having the user needing to hit send ’Send’ and being able to determine if the queued send was successfully sent is an increase in reliable location information being received by the recipient. My questions are whether Claude Code is correct in what iOS allows, and if there’s an alternate approach. I understand the security concern with sending messages the user didn’t explicitly approve for each message but I’m wondering if Apple is considering an implementation mechanism that approaches Android (ie: approve message sending without per-message authorization) and the ability to check if a queued message was successfully sent. Thanks.
0
0
488
Aug ’26
TelephonyMessagingKit drops first SMS at cold launch — race between client XPC handler registration and server pending flush
Hi all, I'm the developer of OV Message, an end-to-end encrypted SMS messaging app already shipped on Google Play (Android, where it natively encrypts SMS content). The iOS port aims to be the default carrier-messaging app, handling SMS, MMS, and RCS through TelephonyMessagingKit with the com.apple.developer.carrier-messaging-app entitlement under the EU programme. While testing the cold-launch flow on iOS 26.x, I've hit a reproducible bug that silently drops the first SMS/MMS/RCS that wakes the app, and I'd like to confirm whether other devs working with this API see the same. The bug When a default carrier-messaging app is force-killed and a message arrives, iOS correctly: Routes the message via CommCenter (IMS in my case — SFR France) Wakes the app in background (state = .background at didFinishLaunchingWithOptions) Acquires a TelephonyMessaging runningboard assertion on the app But CommCenter then pushes the pending message via XPC before the client TMK library has finished registering its messageHandlersByID dictionary. Result: client responds Received unhandled request, server logs TMKXPCError Code=2, message is dropped, never delivered to for await in incomingMessageNotifications. Subsequent messages (with the app warm) work fine. Native log sequence (from idevicesyslog with the Telephony logging profile) T+0.000 CommCenter: SMS arrives via IMS (k3GPP) T+0.003 CommCenter: Default app is set to com.example.app T+0.004 CommCenter: Attempting to launch and acquire process assertion T+0.083 CommCenter: Notifying SMS message received, target: bundleID=... T+0.085 CommCenter(TMK): There are no client connections matching, pending message [~125 ms — app boots] T+0.128 App(TMK): Configuring connection T+0.128 App(TMK): Pinging remote end T+0.130 CommCenter(TMK): Received new connection from PID T+0.130 CommCenter(TMK): New incoming connection, flushing pending messages (1) ← server flushes T+0.130 App(TMK): Received unhandled request ← client not ready T+0.131 CommCenter(TMK): Failed to send pending message: TMKXPCError Code=2 T+0.132 App(TMK): Registered for IncomingMessageNotification (smsReceived) ← ~2 ms too late The race window between Pinging remote end (client) and Registered for IncomingMessageNotification (client) is 2–7 ms across my measurements. CommCenter considers the connection ready as soon as the ping completes, but the client library populates messageHandlersByID slightly after, so the dispatch fails. Minimal reproduction I built a ~50-line Swift app to confirm this isn't specific to OV Message. UIKit AppDelegate, single for await in TelephonyMessagingSession.shared.smsService.incomingMessageNotifications started in didFinishLaunchingWithOptions. No SwiftUI, no other modules, no Darwin notifications. Just TMK. Steps: Build & install on iPhone iOS 26.x with carrier-messaging-app entitlement (auto-provisioned in iOS 26) Settings → Apps → Default Messaging → select the test app Force-kill, then send 2 SMS in rapid succession from another phone Wait 30 s, open the app — log shows only the 2nd SMS Same result: the 1st SMS is gone. I've reproduced this consistently dozens of times. Source code (Swift + xcodegen project.yml): https://gist.github.com/ovmessage/fbc529292a65222191bec6ce5e5a4275 What I've tried Task.detached(priority: .userInitiated) to decouple the for await from main thread scheduling — no effect (race is internal to TMK lib, before our scheduling) Pre-fetching cellularServices synchronously — no effect Subscribing MMS + RCS in parallel — no effect Direct XPCSession/xpc_connection_create_mach_service to com.apple.commcenter.tmk.xpc — Apple has marked these unavailable on iOS for 3rd-party apps (no public way to bypass the lib) I've also done runtime introspection of the TMK framework via Mirror, which confirms the architecture: a single XPCConnection.messageHandlersByID dict shared by smsReceived, mmsReceived, rcsReceivedNotification — all four entries (incl. serviceStatusNotification) are populated after the XPC ping. So the same race affects SMS, MMS, and RCS equally. Suggested fixes (Apple-side) Either: Server (CommCenter): defer flushing pending messages until the client confirms its handlers are registered (extra XPC handshake message) Client (TelephonyMessagingKit): register messageHandlersByID entries before sending Pinging remote end, so they exist when the server starts flushing Buffer client-side: cache messages received before handler registration completes, dispatch on attach Filed in Feedback Assistant FB[YOUR_FB_NUMBER_HERE] Question for fellow devs If you're also building with carrier-messaging-app entitlement (Beeper, Google Messages on iOS, anyone in the EU programme), can you confirm whether you see the same race? Especially interested in whether: It happens with non-IMS carriers (mine is SFR France, IMS-routed via SIP) iOS 26.1 / 26.2 changed the timing Anyone has found a workaround I haven't tried Thanks.
7
1
1.3k
Jul ’26
How to collect statistics for Message Filter Extension and Call Blocking Extension?
Hi everyone, I'm developing an iOS app that includes both a Message Filter Extension and a Call Blocking Extension. I'd like to understand whether there is any supported way to collect or access statistics for these extensions, such as: Number of messages filtered (allowed vs. junk) Number of blocked calls Number of identified calls Extension invocation count Filtering success/failure metrics Any analytics or usage data exposed by the system I understand that these extensions are privacy-sensitive, so I'm not expecting access to user content. I'm specifically looking for aggregate statistics or system-provided metrics that an app can legally and technically access. My questions are: Does iOS expose any APIs or callbacks for collecting usage statistics from a Message Filter Extension? Is there any way to determine how many calls were blocked or identified by a Call Blocking Extension? Are there any recommended Apple-supported approaches for tracking extension usage without violating user privacy? If no APIs are available, is this limitation intentional due to the privacy model of these extensions? I'd appreciate any guidance or best practices from Apple engineers or developers who have worked with these extensions. Thank you!
4
0
873
Jul ’26
Can an iOS app automatically send scheduled SMS using the user’s cellular number?
Hello, I’m investigating an appointment-reminder app for small businesses. The user would explicitly enable the feature and authorize specific clients to receive reminders. At a scheduled time, the app would send an SMS using the iPhone owner’s cellular number and carrier plan, without requiring them to open MFMessageComposeViewController and tap Send. I understand that MFMessageComposeViewController requires user confirmation. I also understand that TelephonyMessagingKit is intended for eligible default carrier-messaging apps. Is there any supported API, entitlement, or approved architecture that permits this use case for a regular App Store app? If not, would an appointment app potentially qualify for any TelephonyMessagingKit entitlement, or is using a server-side SMS provider the only supported way to send unattended reminders? The intended messages would only be sent with the business user’s authorization and the recipient’s consent.
0
0
278
Jul ’26
[iOS 17.1.1 issue] MSMessageLiveLayout not rendering after MSMessagesAppViewController.willBecomeActive in iOS 17.1.1
Hello dear community, I have an iMessage extension running perfectly on iOS 16.4, but on 17.0.1 and 17.1.1 it's having real issues. Messaging in iMessage on the iOS 17.0.1 simulator isn't working at all. MSMessageLiveLayout works perfectly on iOS 16.4, but on iOS 17.1.1 (physical iPhone 15, 14, 13, 12, SE 2020) the MSMessagesAppViewController won't render after didStartSending and subsequent willBecomeActive. The iPhones will just show "Loading...". I debugged through it, couldn't find any issues and works perfectly fine on iOS 16.4 both in the simulator and on a physical device. I'm debugging through the physical devices with XCode, but couldn't find any root cause on why. Has anyone experienced similar issues with MSMessagesAppViewController in iOS 17.1.1? Any ideas on how to fix this? Thanks, Jan
3
1
1k
Jul ’26
Game Center Missing for iMessage Extensions
I have enabled Game Center in App Store Connect, as well as the entitlements in Xcode for both my parent (stub) target and extension target. I call the Game Center authentication function which returns a "Signed in as: [my username]" banner during testing. However, when it is tapped on by the user, it opens the Game Center view where "Now Playing _" shows a blank title and app icon. I have a full size app icon that App Store Connect and even GameKit recognizes (https://games.apple.com/us/game/6757935828) but not when I actually run my iMessage app. When I call the authentication function, it completes (hence the banner), but then says later on Game Center does not recognize my app and that my achievements cannot be reported to Game Center. Is Game Center fully disabled for iMessage apps? Or is there a solution I am missing? My goal is to have achievement banners show up for winning iMessage games and certain gameplay combos.
1
0
980
Jun ’26
Does ILMessageFilterExtension receive callbacks for end-to-end encrypted RCS messages on iOS 26.5?
Hello Apple Developer Support, We are using ILMessageFilterExtension with the IdentityLookup framework to classify carrier messages. We have already verified that the Message Filter extension is invoked for RCS messages. Our remaining question is specifically about end-to-end encrypted RCS messages on iOS 26.5. Could Apple please clarify the expected behavior for RCS E2EE messages? When an RCS conversation is end-to-end encrypted, is ILMessageFilterExtension expected to receive an ILMessageFilterQueryRequest callback? If the extension is invoked for RCS E2EE, does ILMessageFilterQueryRequest.messageBody contain the decrypted message body locally on device? If the extension is not invoked for RCS E2EE, is this expected behavior because the message content is end-to-end encrypted? Is the behavior different based on carrier, region, or RCS encryption availability? Is there any public Apple documentation that explicitly describes IdentityLookup / Message Filter behavior for RCS E2EE messages? Environment: iOS version: 26.5 Framework: IdentityLookup Extension: ILMessageFilterExtension API: ILMessageFilterQueryHandling.handle(_:context:completion:) Confirmed behavior: Message Filter extension is invoked for RCS messages Question: Whether the same behavior applies to end-to-end encrypted RCS messages We need this clarification to finalize expected product behavior and test coverage for RCS E2EE message filtering.
1
0
439
Jun ’26
Sticker Pack App project not working
I started a fresh “Sticker Pack App” project, add one image to it and it wouldn’t show up on emulator or device. From what I remember, there shouldn't be any coding involved, just drag and drop images of the correct format and dimensions and it should work. I tried changing the file format, dimensions etc while consulting with web and AI assistant searches and but still didn’t work. Apple support also didn't reply with anything useful but to post in the forum. I'm guessing I'm missing something trivial where a lot of us here have encountered before. Appreciate your help here, thank you in advance!
4
0
330
May ’26
iMessage login loop after Tahoe 26.5 beta update
iMessage Authentication Loop on macOS Tahoe 26.5 Beta Issue Description: iMessage is stuck in a persistent login/authentication loop after updating to macOS Tahoe 26.5 Beta. The app repeatedly prompts for Apple ID and password. After entering credentials, it briefly attempts to sign in before returning to the login prompt or showing an "unknown error." This issue is isolated to the MacBook Air (M3); iMessage continues to work correctly on iPhone, iPad, and Mac mini. Related Forum Thread: Several other users are reporting identical symptoms here: https://discussions.apple.com/thread/256256620 Troubleshooting Steps Taken (All Failed): Standard Maintenance: Restarted Messages app, rebooted the MacBook Air, and verified Date/Time settings. Credential Management: Changed Apple ID password and attempted sign-in with new credentials. Manual Keychain Cleanup: Attempted to delete iMessage and com.apple.idms entries via Keychain Access UI (entries were persistent and could not be deleted). Terminal-Based Force Deletion: Executed the following commands to target specific registration tokens: security delete-generic-password -s "com.apple.facetime: registrationV1" security delete-generic-password -s "com.apple.imessage: registrationV1" Cache & Identity Purge: Cleared local authentication state and app caches: rm -rf ~/Library/IdentityServices/* rm -rf ~/Library/Caches/com.apple.Messages rm -rf ~/Library/Caches/com.apple.imessage Full Keychain Reset ("Nuclear Option"): Renamed the Keychains folder to force macOS to create a brand-new database: mv ~/Library/Keychains ~/Library/Keychains-old Followed by an immediate system restart. Current Status: Despite a completely fresh Keychain and cleared caches, the "unknown error" and login loop persist, suggesting a regression in the authentication subsystem of build 26.5.
1
0
990
Apr ’26
Unwanted Communication Reporting Extension deletes messages always
I am implementing an Unwanted Communication Reporting Extension (IdentityLookupUI) to allow users to report spam messages to our backend. The extension works perfectly in terms of data collection and network reporting (using ILClassificationExtensionNetworkReportDestination). However, I’ve encountered an issue with the message lifecycle: whenever the user taps "Done" and I return a response, the system automatically moves the reported message to the Recently Deleted folder. I want to report the data but keep the message in its current folder (especially when the user classifies it as "Safe"). I have tried varying the ILClassificationAction, but it seems the system ignores the action in favor of "cleaning up" the thread. Example of my current implementation: override func classificationResponse(for request: ILClassificationRequest) -> ILClassificationResponse { // Even when returning .none or .reportNotJunk let action: ILClassificationAction = (self.type == "spam") ? .reportJunk : .none let response = ILClassificationResponse(action: action) response.userInfo = ["type": self.taggedType, "sender": self.sender] return response } My Questions: Is there a specific ILClassificationAction or userInfo key that tells iOS not to move the message? Is this movement a mandatory "post-report cleanup" behavior of the IdentityLookup framework that cannot be overridden? Does anyone know a workaround to report the communication while maintaining its original location in the Messages app?
0
0
441
Mar ’26
iMessage Extension: didSelect not called when tapping message bubbles on iPad
I'm developing a turn-based Messages game extension and experiencing a persistent issue on iPad where tapping on message bubbles does not reliably trigger lifecycle callbacks after the extension has been used once. The Problem: On iPad, after a player: Opens the extension by tapping a game message Takes their turn (plays a card) Sends the updated game state as a new message Extension collapses When the opponent sends their response and the player taps on the new message bubble, the extension often does not open. The didSelect(_:conversation:) method is not called. The user must refresh the conversation by scrolling away and back or reopening the Messages App before tapping works again. This works perfectly on iPhone - every tap on a message bubble reliably triggers didSelect and opens the extension. What I've Tried: I've implemented every lifecycle method and workaround I could find: swiftoverride func willBecomeActive(with conversation: MSConversation) { super.willBecomeActive(with: conversation) if let message = conversation.selectedMessage, let url = message.url { loadGameState(from: url, message: message, conversation: conversation) } } override func didBecomeActive(with conversation: MSConversation) { super.didBecomeActive(with: conversation) if let message = conversation.selectedMessage, let url = message.url { loadGameState(from: url, message: message, conversation: conversation) } } override func didSelect(_ message: MSMessage, conversation: MSConversation) { // This is NOT called on iPad when tapping message bubbles guard let url = message.url else { return } loadGameState(from: url, message: message, conversation: conversation) } override func didReceive(_ message: MSMessage, conversation: MSConversation) { guard let url = message.url else { return } loadGameState(from: url, message: message, conversation: conversation) } override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) { super.didTransition(to: presentationStyle) // Attempted to reload here as well } I also tried: Observing NSExtensionHostDidBecomeActive and NSExtensionHostWillEnterForeground notifications Forcing UI refresh in viewDidLayoutSubviews Checking conversation.selectedMessage in every lifecycle method Research: I found several Developer Forums threads from 2016 describing this exact issue: Thread 53167: "MSMessagesAppViewController.didSelect not called on message reselect" Thread 60323: "willSelectMessage and didSelectMessage don't fire" An Apple staff member confirmed that didSelect only fires when selecting a different message, similar to UITableView selection behavior. However, on iPad, it seems like messages remain "selected" even after the extension collapses, so tapping a new message doesn't register as a new selection. Questions: Is there a recommended way to detect when a user taps a message bubble on iPad, even if iOS considers a message "already selected"? Is there a way to programmatically deselect the current message (similar to UITableView.deselectRow) so that subsequent taps trigger didSelect? Are there any iPad-specific lifecycle methods or notifications I should be observing? Is this a known limitation of the Messages framework on iPad? Environment: Xcode 16 iOS 18 and 26 Testing on iPad Pro (M4) and iPad Air iPhone works correctly on all tested devices Any guidance would be greatly appreciated. This is blocking our App Store submission as reviewers are flagging the iPad behavior as incomplete functionality.
2
0
293
Feb ’26
Message Filter Extension Not Working on iOS 26.1
Hello, We are using a Message Filter Extension (ILMessageFilterExtension) to classify SMS/iMessage content (junk vs allow) in our app. After testing on iOS 26.1, we want to confirm whether there are any behavioral, performance, or API-level changes that impact message filtering, such as: Changes in how often the filter extension is invoked Differences in classification accuracy or system overrides New privacy, entitlement, or permission-related restrictions Execution time limits or memory constraints Any changes specific to iMessage vs SMS filtering We did not find any explicit mention of Message Filter Extensions in the iOS 26.1 release notes and would like to confirm whether the existing behavior from previous iOS versions remains unchanged. Has Apple introduced any known or undocumented changes in iOS 26.1 that developers should be aware of when supporting Message Filter Extensions? Sometime I also found unpredictable behaviour on iOS version 18.5 or below, like sometime it works but sometimes starts working. Thanks in advance for any guidance.
2
1
847
Feb ’26
Message Filter Extension Not Working on iOS 26.1
Hello, We are using a Message Filter Extension (ILMessageFilterExtension) to classify SMS/iMessage content (junk vs allow) in our app. After testing on iOS 26.1, we want to confirm whether there are any behavioral, performance, or API-level changes that impact message filtering, such as: Changes in how often the filter extension is invoked Differences in classification accuracy or system overrides New privacy, entitlement, or permission-related restrictions Execution time limits or memory constraints Any changes specific to iMessage vs SMS filtering We did not find any explicit mention of Message Filter Extensions in the iOS 26.1 release notes and would like to confirm whether the existing behavior from previous iOS versions remains unchanged. Has Apple introduced any known or undocumented changes in iOS 26.1 that developers should be aware of when supporting Message Filter Extensions? Sometime I also found unpredictable behaviour on iOS version 18.5 or below, like sometime it works but sometimes starts working. Thanks in advance for any guidance.
3
0
599
Feb ’26
Collaboration and Send Copy while sharing. How to make it right in Messages?
Hi! I'm working on the app where users can share their content via collaboration or just send copy as a json file. The problem I'm facing is that I cannot make it work correctly in Messages. Having only one option like Collaboration or Send Copy work just fine but with active selector between those two options on share sheet is confuse me a lot. I use ShareLink along with Transferable protocol @ViewBuilder private var control: some View { if let presentation { ShareLink( item: shareItem(for: presentation), preview: preview(for: presentation) ) { label } } else { Button {} label: { label } .disabled(true) } } public static var transferRepresentation: some TransferRepresentation { CKShareTransferRepresentation { item in return item.exportedShare(for: plan) } .exportingCondition { $0.collaborationPlan != nil } FileRepresentation(exportedContentType: .customDocumentType) { item in SentTransferredFile(item.copyFileURL) } } private func exportedShare( for plan: ShareCollaborationPlan ) -> CKShareTransferRepresentation<Self>.ExportedShare { let container = CKContainer(identifier: plan.containerIdentifier) let allowedSharingOptions = LiveCollaborationPermissionPolicy .makeAllowedSharingOptions() switch plan { case let .existing(handle): return .existing( handle.shareForPresentation(title: title), container: container, allowedSharingOptions: allowedSharingOptions ) case .prepare: return .prepareShare( container: container, allowedSharingOptions: allowedSharingOptions ) { [prepareCollaboration] in try await prepareCollaboration().shareForPresentation(title: title) } } } In general this works fine except Messages. When I trying to start Collaboration in Messages, it show an error "Collaboration Not Available" and it is trying to send a file instead of Collaboration link I setup my CKShare like this func shareForPresentation(title: String) -> CKShare { share[CKShare.SystemFieldKey.title] = title if let thumbnailImageData = Self.thumbnailImageData { share[CKShare.SystemFieldKey.thumbnailImageData] = thumbnailImageData } return share } private static let thumbnailImageData: Data? = { #if canImport(UIKit) UIImage(named: "SharePreviewIcon", in: .main, compatibleWith: nil)? .pngData() #else nil #endif }() I have tried to use UIActivityController with NSItemProvider where I use registerCKShare and registerFileRepresentation on the same provider. It works also just fine, except Messages, where it always trying to send Collaboration no matter what I choose Collaboration or Send Copy on share sheet selector. I have tried to use two NSItemProvider's for CKShare and file, this works as I wanted but it messed-up metadata which is I'm not able to setup in the way I want. Please help me to understand how I can setup share where Collaboration and Send Copy work correctly with Messages?
Replies
0
Boosts
0
Views
204
Activity
2w
IOS App review taking longer then expected
I submitted my app in August 13, 2026. But till today the app is still showing submitted for review. todays marks day 13 waiting for review. Is there anything else I should do other then expedite of which I did today (26 August 2026).
Replies
0
Boosts
0
Views
199
Activity
2w
Cannot archive project
Hi, I’m new to Xcode and I’m wanting to publish a sticker app using the template. I have added all the stickers and icons and even tested in simulation, I also have registered the identity and app id but when I try to archive it I encounter two errors: _Communication with Apple failed Your team has no devices from which to generate a provisioning profile. Connect a device to use or manually add device IDs in Certificates, Identifiers & Profiles. https://developer.apple.com/account/ and No profiles for ' ' were found Xcode couldn't find any iOS App Development provisioning profiles matching ' ‘_ my understanding is that I don’t really need to do anything else nor need a physical device. the bundle is identical in the app id.
Replies
0
Boosts
0
Views
98
Activity
3w
Multiple MFMessageComposeViewController
Does iOS support launching of 2 MFMessageComposeViewControllers back to back i.e without dismissing the previous one? We are integrating an SDK from a vendor who, inside the SDK is presenting the MFMessageComposeViewController 2 times back to back, and one of the MFMessageComposeViewController is getting dismissed but the other one doesn't, their standalone app does the same but it works there, not inside the SDK, Just wanted to know why the second MFMessageComposeViewController doesn't dismiss, or is it the correct approach to do so.
Replies
0
Boosts
0
Views
407
Activity
Aug ’26
iOS 26 Message Filter Extension not invoked after conversation is moved to Spam
We're seeing a behavior change with ILMessageFilterExtension on iOS 26 and would like to confirm whether this is expected or a regression. Environment iOS: 26.x Framework: IdentityLookup Extension type: ILMessageFilterExtension Behavior For a new sender: An incoming SMS arrives. handle(_:context:completion:) is invoked. The extension returns a classification. The conversation is moved to the Spam folder. Subsequent SMS messages in the same conversation are delivered to the Spam folder, but handle(_:context:completion:) is no longer invoked for any new messages. Expected behavior We expected the message filter extension to be invoked for every incoming SMS, regardless of the current conversation folder, allowing the extension to evaluate each message independently. Actual behavior Once the conversation is in the Spam folder, all subsequent messages bypass the extension completely. The extension receives no callback, making it impossible to: Re-evaluate new messages using updated filtering logic. Change the classification if sender reputation changes. Apply cloud-based or dynamic filtering policies on subsequent messages. Questions Is this behavior expected in iOS 26? Has the message filtering pipeline changed so that conversations already classified as Spam no longer invoke ILMessageFilterExtension? Is there any documented API or recommended approach to have the extension evaluate every incoming message for an existing Spam conversation? If this is not expected, is this a known issue? If anyone from Apple or other developers can confirm whether this is by design, it would be greatly appreciated.
Replies
1
Boosts
0
Views
442
Activity
Aug ’26
India Post tracking numbers are incorrectly detected as DTDC shipments in Messages App
Device: iPhone 17 iOS Version: Latest public release Steps to Reproduce: Receive an SMS from India Post containing a tracking number (e.g. EU714545174IN). Long-press the tracking number. Select Track Shipment. Expected Result: The shipment should be tracked using India Post or the correct carrier. Actual Result: iOS opens an in-app Safari page for DTDC with an invalid tracking URL. The shipment cannot be tracked because the tracking number belongs to India Post, not DTDC. Additional Information: Tapping the India Post website link in the SMS works correctly. Only the built-in Track Shipment action misidentifies the carrier.
Replies
0
Boosts
0
Views
249
Activity
Aug ’26
Limits to Apple Messaging
I’m developing an app (well, Claude Code is doing the Swift work) that has a need to send SMS messages on a regular basis. It’s an app that sends location information to a third party, via SMS, in case the user goes missing. Claude is telling me that the user has to hit send for every message. Claude also says there’s no way for the app to know if a message was successfully sent. It only knows that it was queued in Messenger but not that it was actually successful in sending. In the Android port we don’t have those restriction, apparently. The Android app can send messages without the users involvement (after granting permission ahead of time). The Android app can also query as to whether the send was successful, and optionally retry the send when it wasn’t. The advantage of not having the user needing to hit send ’Send’ and being able to determine if the queued send was successfully sent is an increase in reliable location information being received by the recipient. My questions are whether Claude Code is correct in what iOS allows, and if there’s an alternate approach. I understand the security concern with sending messages the user didn’t explicitly approve for each message but I’m wondering if Apple is considering an implementation mechanism that approaches Android (ie: approve message sending without per-message authorization) and the ability to check if a queued message was successfully sent. Thanks.
Replies
0
Boosts
0
Views
488
Activity
Aug ’26
TelephonyMessagingKit drops first SMS at cold launch — race between client XPC handler registration and server pending flush
Hi all, I'm the developer of OV Message, an end-to-end encrypted SMS messaging app already shipped on Google Play (Android, where it natively encrypts SMS content). The iOS port aims to be the default carrier-messaging app, handling SMS, MMS, and RCS through TelephonyMessagingKit with the com.apple.developer.carrier-messaging-app entitlement under the EU programme. While testing the cold-launch flow on iOS 26.x, I've hit a reproducible bug that silently drops the first SMS/MMS/RCS that wakes the app, and I'd like to confirm whether other devs working with this API see the same. The bug When a default carrier-messaging app is force-killed and a message arrives, iOS correctly: Routes the message via CommCenter (IMS in my case — SFR France) Wakes the app in background (state = .background at didFinishLaunchingWithOptions) Acquires a TelephonyMessaging runningboard assertion on the app But CommCenter then pushes the pending message via XPC before the client TMK library has finished registering its messageHandlersByID dictionary. Result: client responds Received unhandled request, server logs TMKXPCError Code=2, message is dropped, never delivered to for await in incomingMessageNotifications. Subsequent messages (with the app warm) work fine. Native log sequence (from idevicesyslog with the Telephony logging profile) T+0.000 CommCenter: SMS arrives via IMS (k3GPP) T+0.003 CommCenter: Default app is set to com.example.app T+0.004 CommCenter: Attempting to launch and acquire process assertion T+0.083 CommCenter: Notifying SMS message received, target: bundleID=... T+0.085 CommCenter(TMK): There are no client connections matching, pending message [~125 ms — app boots] T+0.128 App(TMK): Configuring connection T+0.128 App(TMK): Pinging remote end T+0.130 CommCenter(TMK): Received new connection from PID T+0.130 CommCenter(TMK): New incoming connection, flushing pending messages (1) ← server flushes T+0.130 App(TMK): Received unhandled request ← client not ready T+0.131 CommCenter(TMK): Failed to send pending message: TMKXPCError Code=2 T+0.132 App(TMK): Registered for IncomingMessageNotification (smsReceived) ← ~2 ms too late The race window between Pinging remote end (client) and Registered for IncomingMessageNotification (client) is 2–7 ms across my measurements. CommCenter considers the connection ready as soon as the ping completes, but the client library populates messageHandlersByID slightly after, so the dispatch fails. Minimal reproduction I built a ~50-line Swift app to confirm this isn't specific to OV Message. UIKit AppDelegate, single for await in TelephonyMessagingSession.shared.smsService.incomingMessageNotifications started in didFinishLaunchingWithOptions. No SwiftUI, no other modules, no Darwin notifications. Just TMK. Steps: Build & install on iPhone iOS 26.x with carrier-messaging-app entitlement (auto-provisioned in iOS 26) Settings → Apps → Default Messaging → select the test app Force-kill, then send 2 SMS in rapid succession from another phone Wait 30 s, open the app — log shows only the 2nd SMS Same result: the 1st SMS is gone. I've reproduced this consistently dozens of times. Source code (Swift + xcodegen project.yml): https://gist.github.com/ovmessage/fbc529292a65222191bec6ce5e5a4275 What I've tried Task.detached(priority: .userInitiated) to decouple the for await from main thread scheduling — no effect (race is internal to TMK lib, before our scheduling) Pre-fetching cellularServices synchronously — no effect Subscribing MMS + RCS in parallel — no effect Direct XPCSession/xpc_connection_create_mach_service to com.apple.commcenter.tmk.xpc — Apple has marked these unavailable on iOS for 3rd-party apps (no public way to bypass the lib) I've also done runtime introspection of the TMK framework via Mirror, which confirms the architecture: a single XPCConnection.messageHandlersByID dict shared by smsReceived, mmsReceived, rcsReceivedNotification — all four entries (incl. serviceStatusNotification) are populated after the XPC ping. So the same race affects SMS, MMS, and RCS equally. Suggested fixes (Apple-side) Either: Server (CommCenter): defer flushing pending messages until the client confirms its handlers are registered (extra XPC handshake message) Client (TelephonyMessagingKit): register messageHandlersByID entries before sending Pinging remote end, so they exist when the server starts flushing Buffer client-side: cache messages received before handler registration completes, dispatch on attach Filed in Feedback Assistant FB[YOUR_FB_NUMBER_HERE] Question for fellow devs If you're also building with carrier-messaging-app entitlement (Beeper, Google Messages on iOS, anyone in the EU programme), can you confirm whether you see the same race? Especially interested in whether: It happens with non-IMS carriers (mine is SFR France, IMS-routed via SIP) iOS 26.1 / 26.2 changed the timing Anyone has found a workaround I haven't tried Thanks.
Replies
7
Boosts
1
Views
1.3k
Activity
Jul ’26
How to collect statistics for Message Filter Extension and Call Blocking Extension?
Hi everyone, I'm developing an iOS app that includes both a Message Filter Extension and a Call Blocking Extension. I'd like to understand whether there is any supported way to collect or access statistics for these extensions, such as: Number of messages filtered (allowed vs. junk) Number of blocked calls Number of identified calls Extension invocation count Filtering success/failure metrics Any analytics or usage data exposed by the system I understand that these extensions are privacy-sensitive, so I'm not expecting access to user content. I'm specifically looking for aggregate statistics or system-provided metrics that an app can legally and technically access. My questions are: Does iOS expose any APIs or callbacks for collecting usage statistics from a Message Filter Extension? Is there any way to determine how many calls were blocked or identified by a Call Blocking Extension? Are there any recommended Apple-supported approaches for tracking extension usage without violating user privacy? If no APIs are available, is this limitation intentional due to the privacy model of these extensions? I'd appreciate any guidance or best practices from Apple engineers or developers who have worked with these extensions. Thank you!
Replies
4
Boosts
0
Views
873
Activity
Jul ’26
Can an iOS app automatically send scheduled SMS using the user’s cellular number?
Hello, I’m investigating an appointment-reminder app for small businesses. The user would explicitly enable the feature and authorize specific clients to receive reminders. At a scheduled time, the app would send an SMS using the iPhone owner’s cellular number and carrier plan, without requiring them to open MFMessageComposeViewController and tap Send. I understand that MFMessageComposeViewController requires user confirmation. I also understand that TelephonyMessagingKit is intended for eligible default carrier-messaging apps. Is there any supported API, entitlement, or approved architecture that permits this use case for a regular App Store app? If not, would an appointment app potentially qualify for any TelephonyMessagingKit entitlement, or is using a server-side SMS provider the only supported way to send unattended reminders? The intended messages would only be sent with the business user’s authorization and the recipient’s consent.
Replies
0
Boosts
0
Views
278
Activity
Jul ’26
[iOS 17.1.1 issue] MSMessageLiveLayout not rendering after MSMessagesAppViewController.willBecomeActive in iOS 17.1.1
Hello dear community, I have an iMessage extension running perfectly on iOS 16.4, but on 17.0.1 and 17.1.1 it's having real issues. Messaging in iMessage on the iOS 17.0.1 simulator isn't working at all. MSMessageLiveLayout works perfectly on iOS 16.4, but on iOS 17.1.1 (physical iPhone 15, 14, 13, 12, SE 2020) the MSMessagesAppViewController won't render after didStartSending and subsequent willBecomeActive. The iPhones will just show "Loading...". I debugged through it, couldn't find any issues and works perfectly fine on iOS 16.4 both in the simulator and on a physical device. I'm debugging through the physical devices with XCode, but couldn't find any root cause on why. Has anyone experienced similar issues with MSMessagesAppViewController in iOS 17.1.1? Any ideas on how to fix this? Thanks, Jan
Replies
3
Boosts
1
Views
1k
Activity
Jul ’26
Game Center Missing for iMessage Extensions
I have enabled Game Center in App Store Connect, as well as the entitlements in Xcode for both my parent (stub) target and extension target. I call the Game Center authentication function which returns a "Signed in as: [my username]" banner during testing. However, when it is tapped on by the user, it opens the Game Center view where "Now Playing _" shows a blank title and app icon. I have a full size app icon that App Store Connect and even GameKit recognizes (https://games.apple.com/us/game/6757935828) but not when I actually run my iMessage app. When I call the authentication function, it completes (hence the banner), but then says later on Game Center does not recognize my app and that my achievements cannot be reported to Game Center. Is Game Center fully disabled for iMessage apps? Or is there a solution I am missing? My goal is to have achievement banners show up for winning iMessage games and certain gameplay combos.
Replies
1
Boosts
0
Views
980
Activity
Jun ’26
Does ILMessageFilterExtension receive callbacks for end-to-end encrypted RCS messages on iOS 26.5?
Hello Apple Developer Support, We are using ILMessageFilterExtension with the IdentityLookup framework to classify carrier messages. We have already verified that the Message Filter extension is invoked for RCS messages. Our remaining question is specifically about end-to-end encrypted RCS messages on iOS 26.5. Could Apple please clarify the expected behavior for RCS E2EE messages? When an RCS conversation is end-to-end encrypted, is ILMessageFilterExtension expected to receive an ILMessageFilterQueryRequest callback? If the extension is invoked for RCS E2EE, does ILMessageFilterQueryRequest.messageBody contain the decrypted message body locally on device? If the extension is not invoked for RCS E2EE, is this expected behavior because the message content is end-to-end encrypted? Is the behavior different based on carrier, region, or RCS encryption availability? Is there any public Apple documentation that explicitly describes IdentityLookup / Message Filter behavior for RCS E2EE messages? Environment: iOS version: 26.5 Framework: IdentityLookup Extension: ILMessageFilterExtension API: ILMessageFilterQueryHandling.handle(_:context:completion:) Confirmed behavior: Message Filter extension is invoked for RCS messages Question: Whether the same behavior applies to end-to-end encrypted RCS messages We need this clarification to finalize expected product behavior and test coverage for RCS E2EE message filtering.
Replies
1
Boosts
0
Views
439
Activity
Jun ’26
iOS 27 - iPhone - Message Filter - Transactions Messages deleted
On the new iOS 27 Beta, after updating- the Transactions messages are moved to trash and cannot be recovered
Replies
0
Boosts
0
Views
292
Activity
Jun ’26
Sticker Pack App project not working
I started a fresh “Sticker Pack App” project, add one image to it and it wouldn’t show up on emulator or device. From what I remember, there shouldn't be any coding involved, just drag and drop images of the correct format and dimensions and it should work. I tried changing the file format, dimensions etc while consulting with web and AI assistant searches and but still didn’t work. Apple support also didn't reply with anything useful but to post in the forum. I'm guessing I'm missing something trivial where a lot of us here have encountered before. Appreciate your help here, thank you in advance!
Replies
4
Boosts
0
Views
330
Activity
May ’26
iMessage login loop after Tahoe 26.5 beta update
iMessage Authentication Loop on macOS Tahoe 26.5 Beta Issue Description: iMessage is stuck in a persistent login/authentication loop after updating to macOS Tahoe 26.5 Beta. The app repeatedly prompts for Apple ID and password. After entering credentials, it briefly attempts to sign in before returning to the login prompt or showing an "unknown error." This issue is isolated to the MacBook Air (M3); iMessage continues to work correctly on iPhone, iPad, and Mac mini. Related Forum Thread: Several other users are reporting identical symptoms here: https://discussions.apple.com/thread/256256620 Troubleshooting Steps Taken (All Failed): Standard Maintenance: Restarted Messages app, rebooted the MacBook Air, and verified Date/Time settings. Credential Management: Changed Apple ID password and attempted sign-in with new credentials. Manual Keychain Cleanup: Attempted to delete iMessage and com.apple.idms entries via Keychain Access UI (entries were persistent and could not be deleted). Terminal-Based Force Deletion: Executed the following commands to target specific registration tokens: security delete-generic-password -s "com.apple.facetime: registrationV1" security delete-generic-password -s "com.apple.imessage: registrationV1" Cache & Identity Purge: Cleared local authentication state and app caches: rm -rf ~/Library/IdentityServices/* rm -rf ~/Library/Caches/com.apple.Messages rm -rf ~/Library/Caches/com.apple.imessage Full Keychain Reset ("Nuclear Option"): Renamed the Keychains folder to force macOS to create a brand-new database: mv ~/Library/Keychains ~/Library/Keychains-old Followed by an immediate system restart. Current Status: Despite a completely fresh Keychain and cleared caches, the "unknown error" and login loop persist, suggesting a regression in the authentication subsystem of build 26.5.
Replies
1
Boosts
0
Views
990
Activity
Apr ’26
Unwanted Communication Reporting Extension deletes messages always
I am implementing an Unwanted Communication Reporting Extension (IdentityLookupUI) to allow users to report spam messages to our backend. The extension works perfectly in terms of data collection and network reporting (using ILClassificationExtensionNetworkReportDestination). However, I’ve encountered an issue with the message lifecycle: whenever the user taps "Done" and I return a response, the system automatically moves the reported message to the Recently Deleted folder. I want to report the data but keep the message in its current folder (especially when the user classifies it as "Safe"). I have tried varying the ILClassificationAction, but it seems the system ignores the action in favor of "cleaning up" the thread. Example of my current implementation: override func classificationResponse(for request: ILClassificationRequest) -> ILClassificationResponse { // Even when returning .none or .reportNotJunk let action: ILClassificationAction = (self.type == "spam") ? .reportJunk : .none let response = ILClassificationResponse(action: action) response.userInfo = ["type": self.taggedType, "sender": self.sender] return response } My Questions: Is there a specific ILClassificationAction or userInfo key that tells iOS not to move the message? Is this movement a mandatory "post-report cleanup" behavior of the IdentityLookup framework that cannot be overridden? Does anyone know a workaround to report the communication while maintaining its original location in the Messages app?
Replies
0
Boosts
0
Views
441
Activity
Mar ’26
iMessage Extension: didSelect not called when tapping message bubbles on iPad
I'm developing a turn-based Messages game extension and experiencing a persistent issue on iPad where tapping on message bubbles does not reliably trigger lifecycle callbacks after the extension has been used once. The Problem: On iPad, after a player: Opens the extension by tapping a game message Takes their turn (plays a card) Sends the updated game state as a new message Extension collapses When the opponent sends their response and the player taps on the new message bubble, the extension often does not open. The didSelect(_:conversation:) method is not called. The user must refresh the conversation by scrolling away and back or reopening the Messages App before tapping works again. This works perfectly on iPhone - every tap on a message bubble reliably triggers didSelect and opens the extension. What I've Tried: I've implemented every lifecycle method and workaround I could find: swiftoverride func willBecomeActive(with conversation: MSConversation) { super.willBecomeActive(with: conversation) if let message = conversation.selectedMessage, let url = message.url { loadGameState(from: url, message: message, conversation: conversation) } } override func didBecomeActive(with conversation: MSConversation) { super.didBecomeActive(with: conversation) if let message = conversation.selectedMessage, let url = message.url { loadGameState(from: url, message: message, conversation: conversation) } } override func didSelect(_ message: MSMessage, conversation: MSConversation) { // This is NOT called on iPad when tapping message bubbles guard let url = message.url else { return } loadGameState(from: url, message: message, conversation: conversation) } override func didReceive(_ message: MSMessage, conversation: MSConversation) { guard let url = message.url else { return } loadGameState(from: url, message: message, conversation: conversation) } override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) { super.didTransition(to: presentationStyle) // Attempted to reload here as well } I also tried: Observing NSExtensionHostDidBecomeActive and NSExtensionHostWillEnterForeground notifications Forcing UI refresh in viewDidLayoutSubviews Checking conversation.selectedMessage in every lifecycle method Research: I found several Developer Forums threads from 2016 describing this exact issue: Thread 53167: "MSMessagesAppViewController.didSelect not called on message reselect" Thread 60323: "willSelectMessage and didSelectMessage don't fire" An Apple staff member confirmed that didSelect only fires when selecting a different message, similar to UITableView selection behavior. However, on iPad, it seems like messages remain "selected" even after the extension collapses, so tapping a new message doesn't register as a new selection. Questions: Is there a recommended way to detect when a user taps a message bubble on iPad, even if iOS considers a message "already selected"? Is there a way to programmatically deselect the current message (similar to UITableView.deselectRow) so that subsequent taps trigger didSelect? Are there any iPad-specific lifecycle methods or notifications I should be observing? Is this a known limitation of the Messages framework on iPad? Environment: Xcode 16 iOS 18 and 26 Testing on iPad Pro (M4) and iPad Air iPhone works correctly on all tested devices Any guidance would be greatly appreciated. This is blocking our App Store submission as reviewers are flagging the iPad behavior as incomplete functionality.
Replies
2
Boosts
0
Views
293
Activity
Feb ’26
Message Filter Extension Not Working on iOS 26.1
Hello, We are using a Message Filter Extension (ILMessageFilterExtension) to classify SMS/iMessage content (junk vs allow) in our app. After testing on iOS 26.1, we want to confirm whether there are any behavioral, performance, or API-level changes that impact message filtering, such as: Changes in how often the filter extension is invoked Differences in classification accuracy or system overrides New privacy, entitlement, or permission-related restrictions Execution time limits or memory constraints Any changes specific to iMessage vs SMS filtering We did not find any explicit mention of Message Filter Extensions in the iOS 26.1 release notes and would like to confirm whether the existing behavior from previous iOS versions remains unchanged. Has Apple introduced any known or undocumented changes in iOS 26.1 that developers should be aware of when supporting Message Filter Extensions? Sometime I also found unpredictable behaviour on iOS version 18.5 or below, like sometime it works but sometimes starts working. Thanks in advance for any guidance.
Replies
2
Boosts
1
Views
847
Activity
Feb ’26
Message Filter Extension Not Working on iOS 26.1
Hello, We are using a Message Filter Extension (ILMessageFilterExtension) to classify SMS/iMessage content (junk vs allow) in our app. After testing on iOS 26.1, we want to confirm whether there are any behavioral, performance, or API-level changes that impact message filtering, such as: Changes in how often the filter extension is invoked Differences in classification accuracy or system overrides New privacy, entitlement, or permission-related restrictions Execution time limits or memory constraints Any changes specific to iMessage vs SMS filtering We did not find any explicit mention of Message Filter Extensions in the iOS 26.1 release notes and would like to confirm whether the existing behavior from previous iOS versions remains unchanged. Has Apple introduced any known or undocumented changes in iOS 26.1 that developers should be aware of when supporting Message Filter Extensions? Sometime I also found unpredictable behaviour on iOS version 18.5 or below, like sometime it works but sometimes starts working. Thanks in advance for any guidance.
Replies
3
Boosts
0
Views
599
Activity
Feb ’26