Post

Replies

Boosts

Views

Activity

NSLog doesn't work on iOS 26 when the app is installed from TestFlight
I've noticed that NSLog() doesn't do anything on iOS 26 when an app is downloaded from TestFlight. I've got an app uploaded with a liberal sprinkling of NSLog lines in it for debugging purposes - if I download that onto an iOS 18 devices, and use Apple Configurator's console or the Mac's console app, then the logging output is verbose and as expected. But if I download that same app onto an iOS 26 handset, there's nothing. Logging is visible in the Xcode console, however sometimes there are situations where you need console logging with a TestFlight build. What happened? Was this an intentional change? Why. This is a major hindrance in diagnosing issues / bugs etc.
3
0
89
1w
How can notification action buttons' text be center aligned?
The iOS documentation shows notification actions buttons with the text center aligned: https://developer.apple.com/documentation/usernotifications/declaring-your-actionable-notification-types But there's no apparent way for an app to control this. The buttons are controlled and rendered by the system and the text is always left aligned. Is there some way to get the text center aligned?
1
0
49
Aug ’25
How to get a phone into a state where it's possible to test text filtering?
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?
0
0
138
Jul ’25
If you have code to package as a framework which has a 3rd party dependency, what can you do given that iOS doesn't support umbrella frameworks
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?
10
0
434
Jun ’25
Can an iOS app programmatically detect if it's built for release or debug?
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
5
0
259
Jun ’25
How can you have a framework which uses a 3rd party dependency and an app that uses the framework and also the same dependency?
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?
0
0
57
Jun ’25
In Xcode's build phases section is it possible to enable/disable compile flags bases on scheme
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.
1
0
61
May ’25
Why is there no Embed section in Xcode's Frameworks & Libraries section
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?
1
0
48
Apr ’25
OSLogStore can't access an app's extensions?
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?
4
0
830
Apr ’25
Is it possible to view Xcode output from a scheme's archive post actions's script
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?
0
0
34
Apr ’25