After not happening to me for a few months, this issue has started hitting me again with currently %100 reproducability.
If turn on VPN on my Mac then instantly the developer certificates within the keychain become untrusted.
But that's not all, if VPN is then turned off the certificates do not revert to their trusted status but remain untrusted.
The consequence of this is that if VPN is turned on and then a build is perform, it fails, and the only way to fix things is to delete the cert(s) from they keychain and re-install them.
As a remote worker, having this happen several or even dozens of times a day is incredibly annoying and frustrating.
This issue has been occurring for literally years, sometimes it occurs very often, others while its quiet for a while, and has spanned multiple versions of Xcode and Mac OS. So whatever the cause is its endemic. It doesn't just affect myself, but all the members in my development team.
I'm currently using Xcode 14.1 RC 2 and Monterey but I've seen this issue occur with many versions of Xcode and Mac. (I'm using Cisco AnyConnect Secure Mobility Client).
If the VPN is somehow interfering/affecting the connectivity aspect when an attempt is made by Xcode to validate the certificate, then why does it not rectify itself after turning off VPN?
This is so so so so annoying.
Can somebody please comment on why this happens and if there's a way to prevent it.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I have a lot of phones and constantly switch between them, its very very annoying that when a phone is connected via cable, and then swapped out with another one, then Xcode will continue to install/run with the phone that's just been switched out, not the one that's just been connected by cable.
This is because Connect via network it turned on and there's no way to turn it off.
In previous versions of Xcode you could turn this on/off as you wished, not so with Xcode 15, it decides to turn it on for you and won't let you turn it off because its always disabled.
If I upload a build to Testflight using Xcode 14 that offers the option to upload the app symbols. Xcode 15 doesn't offer this option, so presumably it does so automatically.
However I've got several builds in TF, built with both Xcode 14 and 15 but the option to download dSYMs isn't available in the Metadata section.
There defiantly are dSYMs though - they are present in the archive.
How can I download them for apps in Testflight and in the AppStore if the option isn't appearing in the Metadata section?
In the documentation for the example Live Caller ID server (https://swiftpackageindex.com/apple/live-caller-id-lookup-example/main/documentation/pirservice/testinginstructions) there is an example service-config.json. file shown (without thorough documentation).
That config file, and the whole of the instructions, center around there being two datasets of numbers: block and identity.
My question is - is it possible for more than one dataset to be specified i.e. for block1 and block2 to be specified?
The use case for this would be - suppose the Live Caller ID server has a set of numbers it has identified as being nuisance callers and so it lists these in the block section. However user A might want all these nuisance callers to be blocked but user B does not. Therefore the Live Caller ID extension on the handset would need to use a different dataset on the server so that user A's calls from a set of numbers is blocked, but user B's are not.
Note that I'm not suggesting that the Caller ID server should be capable of storing individual user's preferences. All that would be required would be two data sets: one where blocked content is none and and one where blocked content is some. Then a user/app could switch between them as indicated by the user.
Is that possible?
If the database structure and service-config.json etc. is not configured to permit that, then could two different servers be set up to achieve this instead? i.e. so the server url specified in the app's extension can be set at run time and not at compile time?
With the Live Caller ID example server, the caller lookup dataset is defined in an input.txtpd and processed by running a ConstructDatabase command which creates a block.binpb and an identity.binpb file.
In other words, a static input file is being processed into static block and identity files.
However, in the real world, the data content for identified and blocked numbers is something which is in a constant state of flux and evolution, as new numbers becoming available, old ones become stale, numbers which were initially considered safe change into being considered malicious etc. etc.
Is the example server just that, merely an example using fixed datasets, and an actual production server is able to use live every changing data to formulate its response back to the iPhone OS query?
Here's a concrete use case - suppose it's a requirement to permit US nanp numbers but to block anything else. The total number of non US nanp numbers is so large and ever changing that it would be unfeasible to attempt to capture them in an input.txtpd file and then process that, and then to re-capture and re-process it endlessly. Instead what would be required is the ability for the Live Caller ID server to evaluate at query time, using a regular expressions for example, if a number is nanp or not.
Is this possible?
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 I run the following code in didFinishLaunchingWithOptions()
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
if granted {
DispatchQueue.main.async {
application.registerForRemoteNotifications()
}
}
}
Then the result is that didRegisterForRemoteNotificationsWithDeviceToken() gets called.
However if I change the code to be just:
DispatchQueue.main.async {
application.registerForRemoteNotifications()
}
Or as as its already running on main in this scenario, then just
application.registerForRemoteNotifications()
Then didRegisterForRemoteNotificationsWithDeviceToken() does NOT get called, but also neither does didFailToRegisterForRemoteNotificationsWithError().
Obtaining a push token is supposed to be independent of the user granting notifications permissions, so why am I not observing that behavior?
I only observe this behavior when running on hardware, when running on the simulator both forms of the code work.
Yet its nothing to do with my phone not being able to contact the Apple servers etc. - if I change the code back and forth back and forth between the two then if 100% works when using requestAuthorization() and 100% doesn't when not using it.
There's nothing additional or out of the ordinary with the code, its standard app delete template stuff.
Why isn't it getting a push token when requestAuthorization() isn't used?
(I've tried adding an async delay to calling registerForRemoteNotifications(), but it made no difference).
We have an app which is using CTSubscriber.simInserted (using the carrier entitlement com.apple.CommCenter.fine-grained).
In iOS 18, simInserted returns false for every sim (where it should instead be returning true).
Presumably this just is a temporary bug in 18 beta?
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
I received the email from Apple entitled
"Final reminder: Answer the updated age ratings questions."
However if I login to App Connect, or click on the link in the email to go directly to App Connect, there are no questions.
There are 6 tabs/sections in App Connect, flicking through them, there are no questions about age ratings.
Even if I could find these questions, if there are no apps actually released to the App Store (and no plans to release any) is answering these questions necessary?
The Apple email sounds quite threatening in its tone, hinting at consequences if you don't comply, but I can't comply because no questions in App Connect are being presented.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
Mac App Store
TestFlight
A couple of days ago I changed laptops from an Intel/Big Sur to a MacBook Pro M1/Monterey.
Since then I've encountered endless endless problems building in Xcode (for iOS).
The very first attempt at building my project after setting up the laptop was successful, but since then builds just fail randomly without making any code changes. i.e. make a build and its successful, change nothing whatsoever and it fails.
Once a build fails it takes an eternity to get it building successfully again, doing a clean, delete derived data, quit/re-launch Xcode doesn't necessarily fix the problem, it might be necessary to do this 3 or 4 times before the build succeeds again. But that build success will only be temporary before it fails again.
The failures are different each time, but one thing they seem to have in common is a Killed: 9 message, here's an example
Script-00DD1BFF1BD5951E006B06BC.sh: line 5: 22679 Killed: 9 ../node_modules/@sentry/cli/bin/sentry-cli react-native xcode ../node_modules/react-native/scripts/react-native-xcode.sh
Command PhaseScriptExecution failed with a nonzero exit code
I've had about 6 or 7 different random failures in different places, but they all say Killed: 9 Command PhaseScriptExecution failed with a nonzero exit code.
The project used to build fine on the old laptop, its the exact same project/code, the only variable here is the laptop itself and the MacOS.
I've been struggling with this for the last 3 days, the problems are just endless. The build failures are random, like I mentioned a build will work fine one time, then just stop for no reason. They could occur at any random moment in any random component of the project or its dependencies.
Its utterly impossible to proceed like this, I'm the first in my company out of about 100 employees who are going to upgrade their laptops from Intel to Silicon. I will be telling our IT department we absolutely cannot make that switch as things are just unusable and its impossible to proceed with this combination of laptop|OS|Xcode.
I'm on Monterey 12.2.1 | Xcode 13.2.1, but the problem was also present with Monterey 12.0.1|Xcode 13.2.1
Opening Xcode with Rosetta makes no difference to the problems.
Using the newly released Xcode 14 to upload an app to App Store Connect results in several warnings saying "The app references non-public selectors in ....."
This does not occur when uploading if the archive is built using Xcode 13
Is this a re-emergence of an Apple bug:
https://developer.apple.com/forums/thread/127678?answerId=715975022#715975022
Which has the response: "The issue has been resolved on the app validation backend. Please try resubmitting. Sorry for the trouble." Apple Developer Tools Engineer
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
iOS
App Store Connect
Xcode
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
I've followed the instructions to configure and launch a live caller id test service (https://swiftpackageindex.com/apple/live-caller-id-lookup-example/main/documentation/pirservice/testinginstructions)
i.e. I've constructed a database, built and installed the PIRService etc.
Additionally I have created a test app with a Live Caller ID Extension.
The problem I'm facing is when turning on the Live Caller ID feature on an iPhone (the Settings|Apps|Phone|Call Blocking & Identification|Live CallerID Lookup switch) with iOS 18 Beta 4 is the phone logs:
"The request timed out." UserInfo={NSLocalizedDescription=The request timed out., NSErrorFailingURLKey=http://MacBook-Pro.local:8080/.well-known/private-token-issuer-directory
The configuration notes say:
"When running things locally on your Mac, and your testing device is on the same network, then you can use mDNS to let the device find your Mac. Let’s assume that your Mac’s hostname is Tims-MacBook-Pro.local. Then we should use the following value for the URLs: http://Tims-Macbook-Pro.local:8080. Thanks to the mDNS protocol your device should be able to resolve your hostname to the actual IP address of your Mac and make the connection."
My Mac hostname is "MacBook-Pro" therefore the Live Caller ID Extension is configured as:
LiveCallerIDLookupExtensionContext(
serviceURL: URL(string: "http://MacBook-Pro.local:8080")!,
tokenIssuerURL: URL(string: "http://MacBook-Pro.local:8080")!,
userTierToken: Data(base64Encoded: "BBBB")!
)
And the service-config.json is configured as:
{
"issuerRequestUri": "http://MacBook-Pro.local:8080",
"users": [
<snip>
(I've also tried excluding the issuerRequestUri as the instructions say "This value can be omitted from the configuration. Setting this explicitly will not be required for devices using iOS 18.0 beta 4 or later.")
And the PIR Service is started on the Mac as:
PIRService --hostname 0.0.0.0 service-config.json
And it starts and runs.
The iPhone and Mac are on the same Wifi network and connected by usb cable.
As far as I can tell, everything has been set up in accordance with the Testing Live Caller ID instructions, yet I get the error when attempting to enable the extension on the iPhone.
Is there something missing/incorrectly configured?
One of the questions Apple ask regarding iOS apps is
"Does your app provide end-to-end encryption?"
But without defining exactly what they mean by end-to-end encryption specifically.
Isn't HTTPS basically etee? Therefore any app that contacts a server using https provides end-to-end encryption?
Or does the question mean something additional above and beyond https?