Post

Replies

Boosts

Views

Activity

Is it possible to send pushes through the Apple production server to an app running in Xcode?
I can sucessfully send pushes to an app (which has been installed/run via Xcode) when the pushes are going through the Apple sandbox server. However I want to test the server is configured correctly to send them through the Apple production server. In the Xcode scheme I tried to change the build configuration to release (and ticked debug executable off) ,however the pushes still only work when sent through the sandbox. Is there a way of installing/running the app using Xcode such that its compatible with the push production environment? Does the APS Environment entitlement come into play here? this only ever says development. (The app is on behalf of a 3rd party company, they've added me to their apple developer account but with limited powers, I can't upload to Testflight nor make an ad-hoc release with with to test with)
0
0
295
Jan ’25
Provisioning profile "iOS Team Provisioning Profile: com.xfinity.mobile.spamfilter" doesn't include the currently selected device . But there is no selected/built for device
I'm attempting make to make a distribution build of an app. In the Xcode target the supported destinations has only iPhone and build active architectures only is set to NO. I created an archive, then selected Distribute App/ Debugging, but then got this error: Provisioning profile "iOS Team Provisioning Profile: com.abc.def" doesn't include the currently selected device "DT-iPad-XXXX" (identifier YYYY-YYYYYY). I've no idea what this device is, it's nothing to do with me, somebody must have added it to the provisioning profile. But that should be beside the point shouldn't it? Because this device has never ever been connected to my Mac/Xcode and so can't be "the currently selected device". So I tried again. I changed build active architectures to YES and connected an iPhone to the Mac/Xcode and created an archive again. But it was the exact same error. What's going on, why is Xcode saying this iPad is the currently selected device when attempting to make a distribution?
0
0
649
Jan ’25
Message Filter Extension and multiple servers
In the documentation for a Message Filter Extension it states: If you have servers that can help your app extension determine how to handle a message, you must add the Associated Domains capability to your Xcode project and specify those domains. (https://developer.apple.com/documentation/sms_and_call_reporting/sms_and_mms_message_filtering/creating_a_message_filter_app_extension) The words servers and domains are in the plural. If it's possible to specify multiple servers/domains for a Message Filter Extension then how is that done? There's no documentation nor reference for that. If multiple domains can be added to the info.plist then what is the iOS behavior in that case? Can the extension supply/change which domain is used at run time?
0
0
480
Jan ’25
Does your app provide end-to-end encryption?
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?
9
0
613
Jan ’25
Logging to the Mac's console is totally unreliable, especially with release builds
I've noticed issues with logging in the Mac's console app for a very long time now (from Xcode 15?) but have just spent several hours trying to objectively observe and monitor what's going on and try to set up reliable logging. But I've totally been unable to and my conclusion is that logging just absolutely cannot be relied upon at all, its so chronically bad as to be unusable. If I for example add some logging lines right at the start of didFinishLaunchingWithOptions() and use a variety of logging mechanisms NSLog(), print(),os_log_with_type(), OSLog() (AppDelegate is in Obj-C and calls Obj-C logging, then calls a swift function for Swift logging), then none of them are reliable. If the app is build/installed via Xcode then logging is reliable within Xcode's console and also within the Mac's console app. But then if the app is uploaded/installed via Testflight it's a very different matter. Sometimes, but not very often, the logging is as expected, but more often than not, some of it is missing. How much is missing seems totally random, sometimes its a little, sometimes its a lot, and something else that very very often happens is there's lots of duplicate logging, each logging line will appear 2 or three times. Here's a very simple example to illustrate what happens (in this example for simplicity I'm just showing using NSLog, don't focus on that as I know NSLog is "old", its the exact same result regardless of how the logging is actually performed). - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { appDelegate = self; NSLog(@"Log line 1"); NSLog(@"Log line 2"); NSLog(@"Log line 3"); NSLog(@"Log line 4"); NSLog(@"Log line 5"); When the app is downloaded from Testflight then only very rarely will I see 5 lines of logging, sometimes it'll be 4, sometimes 2, sometimes none. And quite often the logging is duplicated i.e. I might see for example in the Console app: Log line 1 Log line 1 Log line 2 Log line 2 Log line 3 Log line 3 In general it's just totally unusable and unreliable. It just cannot be be used at all. Why is it this bad? What can be done to make logging reliable and useful? I've spent days and days reading the recommended approaches, trying things out, including the new stuff like OSLog etc. But it remains dreadful. What is the recommended approach to make logging 100% reliable? There's never any problem with Xcode's console, it's only with the Mac's console app. However, when an app is being tested which has been installed from Testflight then using Xcode's console can't be used. So If a QA team find problems with a Testflight build and attach the Console log its utterly useless as its contents are effectively random.
1
0
552
Jan ’25
Unable to install an app extension when running it for debugging
I've got an app with several app extensions (call extension, action extension, notification service extension, message filtering extension, notification content extension). If I need to interactively debug these then I can select the scheme and run the extension within Xcode for all of them except for the notification content extension, with that I get an error dialog summary saying: Failed to install the app on the device / The provided item to be installed is not of a type that CoreDevice recognizes. Which when expanded has the blumpf posted below. Why can I not run the notification content extension, when I can run any other type of app extension? Failed to install the app on the device. Domain: com.apple.dt.CoreDeviceError Code: 3002 Failure Reason: The provided item to be installed is not of a type that CoreDevice recognizes. User Info: { DVTErrorCreationDateKey = "2024-12-27 16:39:54 +0000"; IDERunOperationFailingWorker = IDEInstallCoreDeviceWorker; NSURL = "file:///Users/Me/Library/Developer/Xcode/DerivedData/XFinity-celiagrvtevxcagztrguseawvjkl/Build/Products/Debug.Ceq.QA-iphoneos/NotificationContentExtension.appex"; } -- Event Metadata: com.apple.dt.IDERunOperationWorkerFinished : { "device_identifier" = "00008101-00115D623460001E"; "device_isCoreDevice" = 1; "device_model" = "iPhone13,3"; "device_osBuild" = "18.2 (22C152)"; "device_platform" = "com.apple.platform.iphoneos"; "device_thinningType" = "iPhone13,3"; "dvt_coredevice_version" = "397.28"; "dvt_coresimulator_version" = "993.7"; "dvt_mobiledevice_version" = "1759.40.2.100.1"; "launchSession_schemeCommand" = Run; "launchSession_state" = 1; "launchSession_targetArch" = arm64; "operation_duration_ms" = 7; "operation_errorCode" = 3002; "operation_errorDomain" = "com.apple.dt.CoreDeviceError"; "operation_errorWorker" = IDEInstallCoreDeviceWorker; "operation_name" = IDERunOperationWorkerGroup; "param_debugger_attachToExtensions" = 0; "param_debugger_attachToXPC" = 1; "param_debugger_type" = 1; "param_destination_isProxy" = 0; "param_destination_platform" = "com.apple.platform.iphoneos"; "param_diag_113575882_enable" = 0; "param_diag_MainThreadChecker_stopOnIssue" = 0; "param_diag_MallocStackLogging_enableDuringAttach" = 0; "param_diag_MallocStackLogging_enableForXPC" = 1; "param_diag_allowLocationSimulation" = 0; "param_diag_checker_tpc_enable" = 1; "param_diag_gpu_frameCapture_enable" = 0; "param_diag_gpu_shaderValidation_enable" = 0; "param_diag_gpu_validation_enable" = 0; "param_diag_guardMalloc_enable" = 0; "param_diag_memoryGraphOnResourceException" = 0; "param_diag_mtc_enable" = 0; "param_diag_queueDebugging_enable" = 1; "param_diag_runtimeProfile_generate" = 0; "param_diag_sanitizer_asan_enable" = 0; "param_diag_sanitizer_tsan_enable" = 0; "param_diag_sanitizer_tsan_stopOnIssue" = 0; "param_diag_sanitizer_ubsan_enable" = 0; "param_diag_sanitizer_ubsan_stopOnIssue" = 0; "param_diag_showNonLocalizedStrings" = 0; "param_diag_viewDebugging_enabled" = 1; "param_diag_viewDebugging_insertDylibOnLaunch" = 1; "param_install_style" = 2; "param_launcher_UID" = 2; "param_launcher_allowDeviceSensorReplayData" = 0; "param_launcher_kind" = 0; "param_launcher_style" = 0; "param_launcher_substyle" = 2; "param_runnable_appExtensionHostRunMode" = 0; "param_runnable_productType" = "com.apple.product-type.app-extension"; "param_structuredConsoleMode" = 1; "param_testing_launchedForTesting" = 0; "param_testing_suppressSimulatorApp" = 0; "param_testing_usingCLI" = 0; "sdk_canonicalName" = "iphoneos18.2"; "sdk_osVersion" = "18.2"; "sdk_variant" = iphoneos; } -- System Information macOS Version 14.7 (Build 23H124) Xcode 16.2 (23507) (Build 16C5032a) Timestamp: 2024-12-27T08:39:54-08:00
1
0
811
Jan ’25
VPN causes developer cert in keychain to become untrusted
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.
5
1
3.4k
Dec ’24
Symbol not found error running Message Filter Extension on iOS 17.6.1 but no problem with iOS 18.2
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
0
0
509
Dec ’24
The message filtering documentation is offline
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)
0
0
323
Dec ’24
og/signpost messages lost due to high rates in live mode recording.
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>
1
0
685
Dec ’24
Is it possible to add a user to the Apple developer account with app manager status that is restricted to a single app?
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?
0
0
225
Dec ’24
Some questions about Device Check
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?
0
1
396
Dec ’24
Why does a text filter extension receive the ISO Country Code, but not the text server?
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?
2
0
395
Dec ’24