Posts

Post not yet marked as solved
1 Replies
453 Views
I've tried to submit a bug for the Xcode project using Feedback Assistant on macOS 13.4.1 and also via web, three times, and all resulted in a broken feedbacks which can't be viewed in either the Feedback Assistant or web. FB12424944, FB12425488, FB12425504 My colleague has been able to send a feedback for a different project just fine. Instead of trying to file yet another feedback (this time for the Feedback Assistant project), I guess it's better to ask here: how to proceed?
Posted Last updated
.
Post not yet marked as solved
1 Replies
763 Views
I'm working on an iOS widget and it seems @Environment does not work here at all. I tried using @Environment(\.widgetFamily) but always got .systemMedium. So far not one environment value seems to work in my widget: neither the ones provided by the system, nor custom environment values. Example: struct WidgetEntryView : View { @Environment(\.widgetFamily) private var widgetFamily @Environment(\.controlSize) private var controlSize var body: some View { Text("\(String(describing: self.widgetFamily))/\(String(describing: self.controlSize))") } } @main struct MainWidget: Widget { let kind: String = "Widget" var body: some WidgetConfiguration { return IntentConfiguration(kind: kind, intent: MyWidgetIntent.self, provider: MyTimelineProvider()) { (entry) in WidgetEntryView() .controlSize(.large) } .configurationDisplayName("Widget Title") .description("Widget Description") } } Using Xcode 14.0 on an iOS 15.5 device, this always prints "systemMedium/regular", no matter which widget size I use or which control size I manually set. (I can also reproduce this with other views inside my view hierarchy, it's not just affecting the top-level view.) Is this a known problem? Is there a workaround, apart from passing the values I care about as explicit parameters/properties?
Posted Last updated
.
Post marked as solved
5 Replies
853 Views
We're working on Packet Tunnel Provider on iOS and I was wondering about the process life cycle, in particular when a connection is stopped. There's some house-keeping I'd like to do when the connection has stopped, which may take up to a few seconds. It seems on iOS, the Network Extension process is terminated shortly after the completion handler of - stopTunnelWithReason:completionHandler: has been called. Since the house-keeping is not strictly a part of stopping the connection and I would like to allow the user to start a new connection as soon as possible: is there a way to tell the Network Extension to keep the process alive (for a while)? Or do I have to do it before calling the completion handler of - stopTunnelWithReason:completionHandler:? Related question: when there's an error and we need to stop the connection "from within" the NE, we're supposed to call - cancelTunnelWithError:. What's the lifecycle here? Do we need to tear everything down, do the house-keeping, and only then call - cancelTunnelWithError:? Or can we call - cancelTunnelWithError: and then continue to clean everything up?
Posted Last updated
.
Post not yet marked as solved
0 Replies
476 Views
This is about macOS Big Sur. Sometimes, our SysExt seems to get into a "degenerated" state. NETunnelProviderSession.startVPNTunnel(options:) returns without an error, but the call is not "arriving" at the SysExt (we've got logging there), and NETunnelProviderSession.sendProviderMessage(_:,responseHandler:) calls the handler with nil (again, no log on SysExt side about this). (The manager was queried with NETunnelProviderManager.loadAllFromPreferences.) When this happens, sometimes it works by just trying those calls again, but often that doesn't work. During the betas, we found out that simply killing the SysExt with SIGQUIT would respawn the process and everything was fine again. However, that doesn't seem to work any more (or at least not reliably). What are the options when the SysExt process is running but doesn't seem to respond? Would trying to get a fresh manager via NETunnelProviderManager.loadAllFromPreferences help in some way, or is there some way to restart the SysExt process? What can cause this in the first place, apart from us deadlocking some vital thread in the SysExt?
Posted Last updated
.
Post not yet marked as solved
14 Replies
1.9k Views
I just tried to update from Big Sur Developer Beta 3 to Beta 4, but the update is not happening. What happens is that in System Preferences, I get offered the update to Beta 4. I press "Update Now" and the system reboots. I see then normal boot progress bar, except it's slow/seems to be stuck. After a while the login window appears. I login and "About this Mac" says I'm still running Beta 3. System Preferences still offers to update to Beta 4. Tried it again, same result. No error or other message is shown about why the update failed. What can I check/do to install the update?
Posted Last updated
.
Post not yet marked as solved
2 Replies
1.1k Views
We're writing a VPN system extension for use with Big Sur. As far as I know, there may be several instances of our system extension if we're running multiple connections. I've reached a point were I need to set up XPC communication. I managed to get it working like it's demonstrated in the Filtering Network Traffic sample project - https://developer.apple.com/documentation/networkextension/filtering_network_traffic. So far so good, that works fine with one instance running: the UI is able to create an XPCConnection to the system extension, which is then able to communicate back. But how are we supposed to handle multiple system extension instances? All instances would have the same Mach service name as it's hard-coded in Info.plist using the NEMachServiceName entry, right? Thus the only way I see to communicate with a specific instance seems to be sendProviderMessage(_:responseHandler:) - https://developer.apple.com/documentation/networkextension/netunnelprovidersession/1406409-sendprovidermessage. I tried serializing a NSXPCListenerEndpoint in handleAppMessage(_:completionHandler:) - https://developer.apple.com/documentation/networkextension/netunnelprovider/1406545-handleappmessage, but that doesn't work as only NSXPCCoder may encode the endpoint. So, how should I set up bidirectional communication with the System Extension instances? I can also do old-school Mach IPC communication if that's what needs to be done, by the way.
Posted Last updated
.
Post marked as solved
6 Replies
6.7k Views
I'm part of several teams in AppStore Connect and notarizing works fine for team Alice. However, when I try to notarize an app for team Bob, "altool" says I'm not part of the team even though I'm an admin of that team according to the AppStoreConnect homepage. Example:$ xcrun altool --notarization-history -u me@company.com -p '@keychain:Notarization' --asc-provider TeamBobID 2019-07-08 11:28:33.248 altool[32077:2353610] *** Error: Failed to get notarization history: ( "Error Domain=ITunesConnectionOperationErrorDomain Code=1296 \"The username me@company.com is not a member of the provider TeamBobID. Contact your team admin for assistance.\" UserInfo={NSLocalizedRecoverySuggestion=The username my@company.com is not a member of the provider TeamBobID. Contact your team admin for assistance., NSLocalizedDescription=The username me@company.com is not a member of the provider TeamBobID. Contact your team admin for assistance., NSLocalizedFailureReason=Apple Services operation failed.}"I double-checked the team ID for team Bob and am confident it is correct. What can I do/check to resolve this?
Posted Last updated
.