On iPhone 16 Pro Max (not tested other devices) there's a noticeable jump in the framing of the preview video when you record in the iOS AVCam Sample App. The same jump in camera framing can be observed by switching to the front facing camera and then back to the rear one.
It looks roughly consistent with switching between the 0.5x and 1x camera (but not quite a match for the same viewable area in the Camera app) - and it's only when it's initially loaded, once recording is started it retains the 'closer' image no matter how many times it's stopped/started thereafter.
I'm relatively new to Swift and haven't done anything with the camera before, so odd 'buggy' behaviour in the sample code isn't helping me understand it! :-)
Is there any way to fix this?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Firstly, I'm completely new to native Swift/iOS Development so apologies if this is a simple question that I'm seemingly misunderstanding.
I have an app which has the Multicast Networking entitlement and works fine on my own iPhone, however it only has one interface when I list them (en0)
The multicast networking, however, fails entirely on another test iPhone but this also appears to have one or more 'ipsecX' interfaces both with the IP 192.0.0.6 - I'm guessing but I wonder if this is related to a connection to Apple Watch as I've noticed two devices that have these additional interfaces, and both of them are connected to Apple Watch (with no VPNs configured) and that's the only thing that differentiates them from my own iPhone.
I can reproduce the symptoms on my own iPhone by connecting to a VPN which creates a utunX interface (but in my case disconnecting from the VPN removes this interface and it works as expected)
I expect a solution would be to bind my Multicast Group to the WiFi IP but I've tried a few things without success;
Setting params.requiredInterfaceType = .wifi
Looping through each interface to try and 'find' en0 and bind this way;
let queue = DispatchQueue(label: "En0MonitorQueue")
monitor.pathUpdateHandler = { [weak self] path in
// Find the en0 interface
if let en0 = path.availableInterfaces.first(where: { $0.name == "en0" }) {
monitor.cancel() // Stop monitoring once found
let params = NWParameters.udp
params.allowLocalEndpointReuse = true
params.requiredInterface = en0
guard let multicast = try? NWMulticastGroup(for: [
.hostPort(
host: NWEndpoint.Host(self?.settings.multicastIP ?? "224.224.0.77"),
port: NWEndpoint.Port(rawValue: UInt16(self?.settings.multicastPort ?? 23019))
)
]) else {
print("Failed to Start Multicast Group")
return
}
let group = NWConnectionGroup(with: multicast, using: params)
// previous multicast stuff is here
} else {
print("en0 interface not found, waiting...")
}
}
monitor.start(queue: queue)
Neither seems to work.
I feel I must be missing something simple, because it should not be the case that simply enabling a VPN (or having another interface created by something else) breaks Multicast on en0/WiFi.
That said, I also don't want to limit the user to en0 as they may wish to use Ethernet interfaces, but for now it would be good to make it work to confirm this is the problem.
Topic:
App & System Services
SubTopic:
Networking
I'm attempting (for a niche internal use only, it doesn't need to appear on the App Store and I'm aware there's no way this would pass their checks!) to ignore SSL certificate dates within a WKWebView
I'm completely new to Swift, but not to iOS development, and this is very much a 'solve a problem quickly' rather than a properly designed app.
The Info.plist has Allow Arbitrary Loads in Web Content and Allow Arbitrary Loads both set in the ATS Settings and I found this block of code here https://developer.apple.com/forums/thread/15610
func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
guard let serverTrust = challenge.protectionSpace.serverTrust else { return completionHandler(.useCredential, nil) }
let exceptions = SecTrustCopyExceptions(serverTrust)
SecTrustSetExceptions(serverTrust, exceptions)
completionHandler(.useCredential, URLCredential(trust: serverTrust))
}
Which works as expected for trusting a self-signed certificate, but if the certificate isn't yet valid or has expired it doesn't work.
Is there a way to completely ignore the certificate issue and expiry date?