I'm currently finding it impossible to get a text filtering extension to be invoked when there's an incoming text message.
There isn't a problem with the app/extension because this is the same app and code that is already developed, tested, and unchanged since I last observed it working.
I know if there's any history of the incoming number being "known" then the extension won't get invoked, and I used to find this no hindrance to testing previously provided that:
the incoming number isn't in contacts
there's no outgoing messages to that number
there's no outgoing phone calls to the number.
This always used to work in the past, but not anymore.
However, I've ensured the incoming text's number isn't in contacts, in fact I've deleted all the contacts.
I've deleted the entire phone history, incoming and outgoing, and I've also searched in messages and made sure there's no interactions with that number.
There's logging in the extension so I can see its being invoked when turned on from the settings app, but its not getting invoked when there's a message.
The one difference between now and when I used to have no problem with this - the phone now has iOS 18.5 on it.
Its as if in iOS 18.5 there ever was any past association with a text number, its not impossible to remove that association.
Has there been some known change in 18.5 that would affect this call filtering behavior and not being able to rid of the incoming message caller as being "known" to the phone?
Update
I completely reset the phone and then I was able to see the the message filter extension being invoked. That's not an ideal situation though.
What else needs to be done beyond what I mentioned above in order to get a phone to forget about a message's number and thus get an message filtering extension to be invoked when there's a message from that number?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I've got a large and complex app which has several dependencies upon 3rd party libraries (installed as pods).
The app is structured according to Model-View-Controller design and there is a requirement to implement the Model part as an .xcframework so it can be included and used in the original app along with a few new apps.
However, Apple documentation states that umbrella frameworks are not supported (Technical Note TN2435).
The Model code has several dependencies which would be totally unfeasible to replace or remove, for example it uses RealmSwift for database storage. Obviously it would be impossible to write one's own database storage scheme in place of using Realm.
However, if my framework uses Realm as a dependency, then its now become an umbrella framework.
So therefore not supported according to Apple documentation.
So what are options/solutions?
Is it possible for an iOS app to programmatically detect if its built for TestFlight/App Store distribution versus built for development?
The motivation for doing this is so that the app can detect if a push server should send pushes using the Apple production server or the sandbox server - when the app sends the push token to the server, I'd like it to additionally send an indicator to the server so the server knows which of the Apple servers to use.
Is there a way to achieve this?
TIA
Delete me
Is this setup possible / have a solution:
There is a .xcframework F, which uses a 3rd party library, lets call it L.
There is an app which uses the xcframework
The app also uses L
Both the app and F use SPM to integrate L
F is using L for its own internal purposes. F is providing some functionality to the app. How it implements that ideally should be a black box from the app's perspective.
The app also happens to use L for its own purposes.
I can't get this set up working, always get warnings about duplicate symbols when running the App.
This will presumably be due to the fact there are separate copies of L in both F and A.
So how can that be eliminated?
Can F not statically like to L and use the App's version of L at runtime? If so how can Xcode be configured so that F can actually compile?
Or vice versa - can the App not statically link in its own copy of L and use that in the framework? If so, similar questions, how to configure Xcode to set this up?
I can't believe this is an obscure use case, yet after days of searching and reading documentation I can't find any solution.
Note that I was able to get this going when the app and the framework used Cocoapods to integrate L, but I just can't do similarly if the use of Cocoapods is replaced with SMP.
When using cocoapods, within the frameworks Xcode section, the pods framework is set to Do Not Embed. This is probably the vital difference between the working Cocoapods implementation and the not working SPM solution. However, when using SPM Xcode doesn't present any option to either embed nor not embed the dependency. Why not? Can it somehow be set to not embed?
I just noticed this today while building a React Native app.
Anybody else seen this and know what it means/how to track it down/how to fix it
A message filter extension is only forwarded SMSs by the OS for filtering, iMessages aren't.
But what is the situation with RCS messages? Will they be filterable by a message filtering extension?
If an Xcode project has some compiler flags set in Build Phases / Compile Sources, then is it possible to have those enabled if scheme A is selected and disabled if scheme B is selected.
Same question for things in Build Settings, such as Other Compiler Flags.
I suppose it could be achieved by having two targets, one with things enabled and one without, but for a very large complex project, duplicating targets is not necessarily an easy thing to do.
Topic:
Developer Tools & Services
SubTopic:
Xcode
I've got several Xcode iOS projects and in the Editor menu section there are dozen's of options, as in the diagram.
However if I create a new iOX Project (with Xcode 16.2) look at how sparse the Editor menu is. Why is that, why do they appear for other projects but not for a new one and why are the contents different?
If I create an Xcode (version doesn't matter, 16.N )project of type framework then install some dependencies using SPM.
Then within the Frameworks and Libraries section, the Embed part is empty.
This doesn't happen if the project type is app rather than framework.
If I want to set this to embed or not embed then how can this be done if its not even visible, for that matter how can I tell what it is set to even?
I've got an iOS app with lots of extensions, some of them complex and doing a lot of stuff.
After a bug I'd like to be able to use OSLogStore to get a holistic picture of logging for the app and its extensions and send that to a debugging server to retrospectively view logs for the app and its extensions.
The constructor is OSLogStore.init(scope: OSLogStore.Scope), however scope only has one value .currentProcessIdentifier.
Implying if that is called from within the app it can only get access to logging for its process only. I tried it out to confirm this is the case - if I log something in an extension (using Logger), then run the app with code like this:
let logStore = try! OSLogStore(scope: .currentProcessIdentifier)
let oneHourAgo = logStore.position(date: Date().addingTimeInterval(-3600))
let allEntries = try! logStore.getEntries(at: oneHourAgo)
for entry in allEntries {
look at the content of the entry
Then none of the entries are from the extension.
Is there anyway from within the app I can access logging made within an extension?
In Xcode I've:
select Product / Scheme / Edit scheme
tap on Archive on the left hand side of the
select post actions and + to add a new script
Then in there I have added a script I want to run on the archive after its created.
I'd like to be able to see the output the script churns out as it goes along but doesn't seem possible?
If I just add something like echo "hello" to the start of the script then I don't see "hello" visible anywhere when I build an archive (via Product/Archive).
I'm looking in the build navigator. Is there somewhere else to look or is it possible to get the logging into the navigator?
Within Xcode's settings location section is a drop down menu to switch between setting the derived data location to be default, relative or custom.
However its a global setting.
I work on more than one project simultaneously, and for one of them I want the location set to relative, but default for all the others.
Is there any way of achieving that?
If an iOS app gets terminated by watchdog due to, for example, hanging the main thread, is that considered to be a crash or something different.
I'm asking because, according to google and AI, Crashlytics can detect and report these,but in my experience it does not.
If I deliberately cause a watchdog termination by for example sleeping on the main thread for a long time then these never appear in Crashlytics.
I know Apple folks here don't comment on non Apple software, so I'm not asking about Crashlytics, just wondering and interested about watchdog timeout terminations and how they differ from a "regular" crash.
I want to release a Framework F, containing several other frameworks (such as Realm, Appetitive, Cocoalumberjack, PhoneNumberKit) for use by app A.
According to this article: https://medium.com/@bittudavis/how-to-create-an-umbrella-framework-in-swift-ca964d0a2345
They write, without referencing a source: "Although Apple discourage creating umbrella framework".
Is that true, do Apple discourage umbrella frameworks, if so why and is it a very strong discourage or a mild one?
If not discouraged, then how can this be achieved with Xcode 16?
I've been attempting to follow a few tutorial to achieve this, such as https://medium.com/john-lewis-software-engineering/adding-a-third-party-framework-inside-a-first-party-framework-in-xcode-3ba58cfd08da
however so far without any success. This last article mentions the Link Binary With Libraries section, which doesn't exist in Xcode 16.
There's the Frameworks, Libraries, and Embedded Content section where I have been attempting to add the frameworks into my Framework F (choosing Embed without Signing).
I'm able to successfully build Framework F, but when app A attempts to use it (adding F to the Frameworks, Libraries, and Embedded Content section with option embed and sign, or embed and don't sign, makes no difference) then I get run time errors about the umbrellaed frameworks not being able to be found.