If I run an app with a Message Filter Extension on a handset with iOS 18.2 then it runs fine, however if I run the exact same app with no changes on a different phone which has iOS 17.6.1 installed then the following error occurs when the extension is enabled within Settings:
dyld[631]: Symbol not found: _$sSo40ILMessageFilterCapabilitiesQueryResponseC14IdentityLookupE21promotionalSubActionsSaySo0abI6ActionVGvs
Post
Replies
Boosts
Views
Activity
Hello the documentation for message filtering has been offline for a few days now, is it possible to get it back, or is there somewhere else it can be viewed in the meanwhile?
https://developer.apple.com/documentation/sms_and_call_reporting/sms_and_mms_message_filtering
(I just chose topic/tags at random, there aren't any relevant for this)
I'm getting literally hundreds and hundreds of these lines appearing in the Xcode console when running the app.
What's the cause? Too much logging? (if so this didn't used to appear with earlier version of Xcode, I'm currently running Xcode 16.2)
How to do this:
"set IDELogRedirectionPolicy to oslogToStdio in the environment of the executable."
And what does doing that do?
<snip>
1 log/signpost messages lost due to high rates in live mode recording. To guarantee delivery of all logs, set IDELogRedirectionPolicy to oslogToStdio in the environment of the executable.
1 log/signpost messages lost due to high rates in live mode recording. To guarantee delivery of all logs, set IDELogRedirectionPolicy to oslogToStdio in the environment of the executable.
<snip>
When a user gets added to the Apple developer account, its possible to specify specific or all apps.
However if they are added as a developer, they don't have access to the certificates/profiles etc. for the app(s).
The only way to do that is to give them app manager status and then its possible to tick the box that grants access to the certs/profiles.
But giving them manager status rather than developer status gives them access to all apps, not a limited sub section.
Is there anyway to add somebody to the developer account with elevated privileges which are restricted to just a single app?
I've got a few questions about device check, and would be grateful if anybody knows the answers:
why is DC not reset when the device transfers between users?
The canonical example of why an app might use DC is if it offers a promotion and to stop user's from getting that promotion multiple times.
However, using the same example scenario yes you've stopped the first user from getting multiple promotions but then if that device is transferred to another user you've stopped them from getting any promotions at all?
how can you test things when the bits can't be reset? If once you've set the bits on a device then you can no longer ever use that device again to test the apps behavior in the situation when the bits are unset.
does the app have complete freedom to set the timestamp to whatever it wants? For example, could the app set a bit with a timestamp of epoch?
if the bits are shared between all apps from the same developer, then supposing that developer have more apps in the App Store then there are bits? If they have 5 apps offering a promotion and a device has previously had 4 apps installed, then the user wants to install a 5th app, but with all 4 bits now then the user will be able to abuse the promotion on the 5th app because the app has no way of recording if the promo has been used or not as the collective bits have been used up?
The documentation for a text filter extension states that receiverISOCountryCode is a field the extension receives
https://developer.apple.com/documentation/sms_and_call_reporting/ilmessagefilterqueryrequest/3979257-receiverisocountrycode
"The ISO Country Code of the receiving phone number"
However, if the extension defers to its text server, then the payload sent to the server doesn't contain the iso country code:
POST /server-endpoint HTTP/1.1
Accept: */*
Content-Type: application/json; charset=utf-8
Content-Length: 148
{
"_version": 1,
"query": {
"sender": "14085550001",
"message": {
"text": "This is a message"
}
},
"app": {
"version": "1.1"
}
}
from: https://developer.apple.com/documentation/sms_and_call_reporting/ilmessagefilterextensioncontext/2880240-deferqueryrequesttonetwork
Why does the payload sent to the text server not contain the country code?
If I define some values in an .xcconfig then I can use those to supply a value to an element within Info.plist, but if I try to do the same for a .plist with any other name then it doesn't work.
Is this some sort of hard-coded constraint?
(I can't move the elements out of the custom .plist into Info.plist as its being read by a 3rd party framework)
I've got a few years old app which was created using an Xcode template type of app.
I'd like to split the model part of the code (model as in model-view-controller) out into a framework.
Removed the view/controller source files to leave the model code is quick and easy, however the model code is large and complex with a couple of hundred of source files.
Rather than create a new Xcode template type of framework and move the source files into there, is it possible to simply just change the template type of the existing project from app to framework?
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.
Over the past few weeks I've seen several people mention pushes sent via the sandbox haven't been getting delivered.
Today I'm also seeing that (though pushes sent via production are fine).
So it would appear to be down again. What's going on recently, any reason it's so unstable these last few weeks?
If a new (iOS) project is created in Xcode then a default set of deployment targets and values gets automatically created and set as follows:
If the iPad, Mac, and Apple Vision supported destinations are deleted from the Xcode general section, these deployment targets still remain.
If the app is then built using Xcode 16 and uploaded to TestFlight/App Store then the following issue is reported:
TMS-90899: Macs with Apple silicon support issue - The app isn‘t compatible with the provided minimum macOS version of 11.0.
Why is XCode populating the macOS deployment target with a value that that results in this issue?
Why is Xcode even populating all 6 of these targets at all when its for an iOS app and hence 5 of them are redundant?
Can the macOS deployment value simply be increased to silence this issue? Or can these that aren't relevant to iOS be deleted (if so how)?
TIA
I've got a bit of code which is making a HTTPS GET request.
On an iPhone it runs as expected, however when running on the simulator there's a HTTP 400 response.
I've logged the url and my http headers that I'm adding, and in both cases they are identical for the simulator and iPhone (there is no http body content).
Therefore, as everything is identical, I'm wondering how it could work with hardware and not with the simulator?
Does the OS append any additional HTTP headers before the request goes out (such as User-Agent for example) and might those be different between iPhone/simulator?
I've got a 2023 M2 MacBook Pro and used to get great battery life out of it (> 6 hours when using it for development purposes).
Now however, all of a sudden, that has dropped off a cliff, and the only thing that has changed is Xcode 16 has appeared.
As I'm compiling a project I can literally see the % amount of the battery charge remaining tick down in front of my eyes as I watch.
I just compiled a project twice and during that time the battery dropped from from %89 to %79 and Xcode is listed as a culprit using significant battery drain.
Anybody else noticed anything similar?
Anything that can be done to to decrease Xcode's battery drain?
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 app with a Message Filter Extension is run on an iPhone with iOS 18 installed then there's no logging output to the console (using print or NSLog), however there is logging in all previous versions of OS.
Being able to view logging at run time for this component is essential as a debugging aid to see, for example, if the extension launches, if a text is handled locally or deferred to the network, to see if there's a network error, to examine the server response etc.
Is there a specific reason it was disabled or is it accidental?
Thank you