I am developing a flutter app that connects the app to the boat VCU through Wi-Fi. In the iOS version of the mobile app, when the device connects to a Wi-Fi network, iOS assumes that all network traffic should route through Wi-Fi. As the connected Wi-Fi network has no internet access, iOS prompts the user with the options: "Use Mobile Data" or "Keep Trying Wi-Fi."
If the user selects "Keep Trying Wi-Fi," mobile data will not be used by other apps on the phone.
If the user selects "Use Mobile Data," the app switches to mobile data while remaining connected to the Wi-Fi network (VCU) without any issues. The issue is we need to find a way to prevent showing that prompt and instead handle this through code. After connecting to VCU, the mobile network is available for a few second but then it switches to wifi and no internet! I checked all the online documentation but there is not any solution for it. So, I need to stay connect to vcc and other apps use mobile data. I tried WiFiForIoTPlugin.forceWifiUsage(false); but didn't work. I tried adding delay that also didn't work. This is the function in my code that handles connecting to Wi-fI: Future connectToWifi() async {
try {
if (Platform.isAndroid) {
isConnected = await WiFiForIoTPlugin.connect(
_vesselData['ssid'],
password: _vesselData['passphrase'],
security: NetworkSecurity.WPA,
// Enable Internet access
withInternet: false,
isHidden: true,
timeoutInSeconds: 10,
joinOnce: true,
);
// Force Android to treat Wi-Fi as the primary network using
await WiFiForIoTPlugin.forceWifiUsage(true);
} else if (Platform.isIOS){
isConnected = await WiFiForIoTPlugin.connect(
_vesselData['ssid'],
password: _vesselData['passphrase'],
security: NetworkSecurity.WPA,
isHidden: true,
timeoutInSeconds: 10,
// Ensures the connection remains persistent, preventing the system from disconnecting the device.
joinOnce: false,
);
}
if (isConnected) {
log("Connected to ${_vesselData['ssid']}");
streamData();
} else {
log("Failed to connect to ${_vesselData['ssid']}");
}
} catch (e) {
log("Error: $e");
}
}
I use :Device Model: iPhone 12 Pro Max
iOS Version: iOS 18.3.1
Xcode Version: Xcode 16.2
Mac Version: macOS Sonoma 14.3
Apple Developers
RSS for tagThis is a dedicated space for developers to connect, share ideas, collaborate, and ask questions. Introduce yourself, network with other developers, and foster a supportive community.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
As explained above only ended up being about to use voice and text
Topic:
Community
SubTopic:
Apple Developers
I’m just trying to find someone who know what the diagnostic logs o my apple watch are for like sysdouagnos and the Bridge Pair Performance obviously I understand what a diagnostic logs are but it’s looks as if I need to download them still why wouldn‘t it already be running
Topic:
Community
SubTopic:
Apple Developers
I have a flutter application with Firebase token and it is working in my local as expected I loaded my application to Appstore but it is not working, can anyone help me for fix the issue.
Thank you
Hi,
We have recently encountered a problem running our App on iPads with A9, A10 chipset. Since recently we have migrated our Network module to swift 6 our app has stoped working on these devices.
Anyone else has noticed that too or if someone know why that is happening only for iPads with specific hardware?
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: Namespace SIGNAL, Code 6 Abort trap: 6
Terminating Process: Microsoft Excel [1618]
Application Specific Information:
stack buffer overflow
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x19da2b720 __pthread_kill + 8
1 libsystem_pthread.dylib 0x19da63f70 pthread_kill + 288
2 libsystem_c.dylib 0x19d97099c __abort + 136
3 libsystem_c.dylib 0x19d961e74 __stack_chk_fail + 96
4 Microsoft Excel 0x106a89f88 0x104bdc000 + 32169864
5 Microsoft Excel 0x106a89b74 0x104bdc000 + 32168820
6 Microsoft Excel 0x106acc2fc 0x104bdc000 + 32441084
7 Microsoft Excel 0x106a98cc4 0x104bdc000 + 32230596
8 Microsoft Excel 0x106a97c04 0x104bdc000 + 32226308
9 Microsoft Excel 0x106a897f4 0x104bdc000 + 32167924
10 Microsoft Excel 0x106a8731c 0x104bdc000 + 32158492
11 Microsoft Excel 0x105d69ac8 0x104bdc000 + 18406088
12 Microsoft Excel 0x1061bea10 0x104bdc000 + 22948368
13 Microsoft Excel 0x104dbc1b4 0x104bdc000 + 1966516
14 Microsoft Excel 0x104d828a8 0x104bdc000 + 1730728
15 Microsoft Excel 0x104d80ff8 0x104bdc000 + 1724408
16 Microsoft Excel 0x104d809b4 0x104bdc000 + 1722804
17 Microsoft Excel 0x104d808e0 0x104bdc000 + 1722592
18 Foundation 0x19ed394e8 __NSFireDelayedPerform + 372
19 CoreFoundation 0x19db66384 CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION + 32
20 CoreFoundation 0x19db66028 __CFRunLoopDoTimer + 1012
21 CoreFoundation 0x19db65b38 __CFRunLoopDoTimers + 356
22 CoreFoundation 0x19db4b520 __CFRunLoopRun + 1856
23 CoreFoundation 0x19db4a724 CFRunLoopRunSpecific + 588
24 HIToolbox 0x1a90a2530 RunCurrentEventLoopInMode + 292
25 HIToolbox 0x1a90a8348 ReceiveNextEventCommon + 676
26 HIToolbox 0x1a90a8508 _BlockUntilNextEventMatchingListInModeWithFilter + 76
27 AppKit 0x1a16b5034 _DPSNextEvent + 660
28 AppKit 0x1a20192d4 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688
29 AppKit 0x1a16a8060 -[NSApplication run] + 480
30 AppKit 0x1a167e854 NSApplicationMain + 888
31 dyld 0x19d6e4274 start + 2840
Thread 1:
0 libsystem_kernel.dylib 0x19da22f54 mach_msg2_trap + 8
1 libsystem_kernel.dylib 0x19da35604 mach_msg2_internal + 80
2 libsystem_kernel.dylib 0x19da2baf8 mach_msg_overwrite + 480
3 libsystem_kernel.dylib 0x19da2329c mach_msg + 24
4 merp 0x108eb7f74 0x108eb4000 + 16244
5 libsys
Topic:
Community
SubTopic:
Apple Developers
Why can’t Apple just release a version that put the most frequent used emoticons in the most left side of the emoticons keyboard???
Each person always uses the same 20 or 30 emoticons.
How this could be reported to developers?
Thx
Topic:
Community
SubTopic:
Apple Developers
Macos15照片app需要点击一下,不能直接进入,点击一次后,还要再点击一下,才能看到照片,希望能修复一下
For 9 Glorious Months, My MacBook Pro & J5 Create JCD543 HUB Were Best Friends… Until I Updated macOS
For nearly a year, my MacBook Pro 14” (2023, M2 Pro, 16GB RAM) worked flawlessly with my J5 Create JCD543 HUB, allowing me to run:
✅ 4 External Displays (Samsung, LG, Insignia, Samsung)
A setup that worked perfectly… until I updated macOS.
Then Came the Update… and the Issues Began
First, I updated last week. Two of my four displays stopped working. No big deal, I thought—I’ve dealt with display quirks before.
Then, like an optimist ignoring red flags, I updated again last night to 15.4 Beta (24E5222f) and… well, now things are completely broken.
My Once-Perfect Setup (Now a Display Disaster)
JCD543 HUB → 2 HDMI displays (not working)
JUD380 HUB → 1 HDMI display (partially working, unstable)
MacBook HDMI port → 1 HDMI display (working, but feeling abandoned)
JCA365 USB-C to Dual HDMI Adapter (Not part of my setup, but tested—also not working)
What I’ve Tried (aka My Troubleshooting Journey)
✔ Restarted my Mac multiple times
✔ Uninstalled and reinstalled J5 drivers
✔ Swapped cables, unplugged/replugged everything, tested known-working HDMI cables (they work fine on other devices)
✔ Deleted /Library/Preferences/com.apple.windowserver.displays.plist (this fixed a similar issue in the past, but the file no longer exists in this update)
The Likely Culprit?
It seems to be a J5 driver issue triggered by the macOS update—and I’m not alone. Others are reporting similar problems.
Apple… Any Fixes?
I just want my four screens back. The setup worked flawlessly for 9 months, so it’s hard to believe it was never meant to work.
If anyone has a workaround, I’m open to testing any solution—whether it’s a driver update, system tweak, or hidden macOS setting that might bring my displays back to life.
Any advice would be greatly appreciated! Thanks in advance.
(P.S. Apple, if you’re reading this—please look into this issue!)
Problem Description: On the iPad 10th tablet, when a USB 2.0 interface extended by a Type - C interface through a USB 2.0 hub is used to connect a keyboard, there is an issue that the keyboard cannot wake up the system when the system version is 18.0 (inclusive) or higher. However, this problem does not occur on systems earlier than 18.0.
Note: To ensure low power consumption of the product, if there is no key press on the keyboard for 10 minutes, the power supply of some functions of the hub will be cut off, but the power supply of the keyboard will remain on. When a key is pressed, the power supply of all functions of the hub will be reconnected.
Topic:
Community
SubTopic:
Apple Developers
xin chào tôi muốn mã sử dụng Testflight hoặc một số trợ giúp để tôi có thể sử dụng testflight
説明ではApple Accountが無くても回答可能とあるが、招待された画面を開きメールアドレスを入力するとApple acountのパスワードを入れるか、新規にacountを作成する画面になる。
Apple Accountが無い人は何も出来ないのか?それともあのパスワード欄は新規にパスワード登録するためのもの?
また、招待を送ったメールアドレスとApple acountのメールアドレスが違う場合はどうなるのだろう?
誰か試した人いますか?
Topic:
Community
SubTopic:
Apple Developers
I have an app that was written in UIKit. It's too large, and it would be much too time consuming at this point to convert it to SwiftUI.
I want to incorporate the new limited contacts into this app. The way it's currently written everything works fine except for showing the limited contacts in the contact picker.
I have downloaded and gone though the Apple tutorial app but I'm having trouble thinking it through into UIKit. After a couple of hours I decided I need help.
I understand I need to pull the contact IDs of the contacts that are in the limited contacts list. Not sure how to do that or how to get it to display in the picker. Any help would be greatly appreciated.
func requestAccess(completionHandler: @escaping (_ accessGranted: Bool) -> Void)
{
switch CNContactStore.authorizationStatus(for: .contacts)
{
case .authorized:
completionHandler(true)
case .denied:
showSettingsAlert(completionHandler)
case .restricted, .notDetermined:
CNContactStore().requestAccess(for: .contacts) { granted, error in
if granted
{
completionHandler(true)
} else {
DispatchQueue.main.async { [weak self] in
self?.showSettingsAlert(completionHandler)
}
}
}
// iOS 18 only
case .limited:
completionHandler(true)
@unknown default: break
}
}
// A text field that displays the name of the chosen contact
@IBAction func contact_Fld_Tapped(_ sender: TextField_Designable)
{
sender.resignFirstResponder()
// The contact ID that is saved to the Db
getTheCurrentContactID()
let theAlert = UIAlertController(title: K.Titles.chooseAContact, message: nil, preferredStyle: .actionSheet)
// Create a new contact
let addContact = UIAlertAction(title: K.Titles.newContact, style: .default) { [weak self] _ in
self?.requestAccess { _ in
let openContact = CNContact()
let vc = CNContactViewController(forNewContact: openContact)
vc.delegate = self // this delegate CNContactViewControllerDelegate
DispatchQueue.main.async {
self?.present(UINavigationController(rootViewController: vc), animated: true)
}
}
}
let getContact = UIAlertAction(title: K.Titles.fromContacts, style: .default) { [weak self] _ in
self?.requestAccess { _ in
self?.contactPicker.delegate = self
DispatchQueue.main.async {
self?.present(self!.contactPicker, animated: true)
}
}
}
let editBtn = UIAlertAction(title: K.Titles.editContact, style: .default) { [weak self] _ in
self?.requestAccess { _ in
let store = CNContactStore()
var vc = CNContactViewController()
do {
let descriptor = CNContactViewController.descriptorForRequiredKeys()
let editContact = try store.unifiedContact(withIdentifier: self!.oldContactID, keysToFetch: [descriptor])
vc = CNContactViewController(for: editContact)
} catch {
print("Getting contact to edit failed: \(self!.VC_String) \(error)")
}
vc.delegate = self // delegate for CNContactViewControllerDelegate
self?.navigationController?.isNavigationBarHidden = false
self?.navigationController?.navigationItem.hidesBackButton = false
self?.navigationController?.pushViewController(vc, animated: true)
}
}
let cancel = UIAlertAction(title: K.Titles.cancel, style: .cancel) { _ in }
if oldContactID.isEmpty
{
editBtn.isEnabled = false
}
theAlert.addAction(getContact) // Select from contacts
theAlert.addAction(addContact) // Create new contact
theAlert.addAction(editBtn) // Edit this contact
theAlert.addAction(cancel)
let popOver = theAlert.popoverPresentationController
popOver?.sourceView = sender
popOver?.sourceRect = sender.bounds
popOver?.permittedArrowDirections = .any
present(theAlert,animated: true)
}
func requestAccess(completionHandler: @escaping (_ accessGranted: Bool) -> Void)
{
switch CNContactStore.authorizationStatus(for: .contacts)
{
case .authorized:
completionHandler(true)
case .denied:
showSettingsAlert(completionHandler)
case .restricted, .notDetermined:
CNContactStore().requestAccess(for: .contacts) { granted, error in
if granted
{
completionHandler(true)
} else {
DispatchQueue.main.async { [weak self] in
self?.showSettingsAlert(completionHandler)
}
}
}
// iOS 18 only
case .limited:
completionHandler(true)
@unknown default: break
}
}
// MARK: - Contact Picker Delegate
extension AddEdit_Quote_VC: CNContactPickerDelegate
{
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact)
{
selectedContactID = contact.identifier
let company: String = contact.organizationName
let companyText = company == "" ? K.Titles.noCompanyName : contact.organizationName
contactNameFld_Outlet.text = CNContactFormatter.string(from: contact, style: .fullName)!
companyFld_Outlet.text = companyText
save_Array[0] = K.AppFacing.true_App
setSaveBtn_AEQuote()
}
}
extension AddEdit_Quote_VC: CNContactViewControllerDelegate
{
func contactViewController(_ viewController: CNContactViewController, shouldPerformDefaultActionFor property: CNContactProperty) -> Bool
{
return false
}
func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?)
{
selectedContactID = contact?.identifier ?? ""
if selectedContactID != ""
{
let company: String = contact?.organizationName ?? ""
let companyText = company == "" ? K.Titles.noCompanyName : contact!.organizationName
contactNameFld_Outlet.text = CNContactFormatter.string(from: contact!, style: .fullName)
companyFld_Outlet.text = companyText
getTheCurrentContactID()
if selectedContactID != oldContactID
{
save_Array[0] = K.AppFacing.true_App
setSaveBtn_AEQuote()
}
}
dismiss(animated: true, completion: nil)
}
}
Dear Apple,
I am sending this review to tell you that with my new update. I am not a fan of the photos set up. I find it very confusing and find myself getting irritated very often and giving up after searching for an image… which is frustrating for many reasons including I need my camera roll for work often. please make adjustments with the newest update… please.
thank you, if anyone took the time to read this.
Ashton, a very sad customer
Topic:
Community
SubTopic:
Apple Developers
I am trying to create a phone app that can receive incoming call notifications using CallKit, as described in Apple's CallKit documentation.
Added the com.apple.developer.calling-app entitlement in my .entitlements file. Implemented CXProvider and set up the delegate methods (provider:perform: and providerDidReset). Added UIBackgroundModes with voip in Info.plist. Configured CXProviderConfiguration to support phone numbers.
I expected to receive incoming call notifications when my app was set as the default calling app. However, I am not receiving any notifications when an incoming call arrives.
How can I properly detect and handle incoming calls in my default calling app? Is there any additional configuration required for iOS 18.2+?
Hello,
I use Navigationstack in the first and second views. In this case, the second view is executed immediately and then disappears.
Is there a solution?
The code is as follows.
device = i-phone
struct ContentView: View {
@State var path: [String] = []
var body: some View {
NavigationStack(path: $path) {
VStack {
Text("Screen1")
Spacer()
Button(action: {
path.append("2nd")
}, label: {
Text("go to 2nd Screen")
})
}
.navigationDestination(for: String.self) { s in
if s == "2nd" {
let _ = print("1st screen nav path(1) = \(path)")
SecondScreen(path: $path)
let _ = print("1st screen nav path(2) = \(path)")
}
}
.onAppear {
print("1st screen on appear")
print("1st screen path = \(path)")
}
.onDisappear {
print("1st screen on disappear")
print("1st screen disa. path = \(path)")
}
.padding()
}
}
}
struct SecondScreen: View {
@State var path2: [String] = []
@Binding var path: [String]
var body: some View {
NavigationStack(path: $path2) {
VStack {
Text("2nd Screen is loaded")
Spacer()
Button(action: {
path2.append("3rd")
}
, label: {
Text("go to 3rd Screen")
})
Button(action: {
path2.removeLast()
}
, label: {
Text("back to 1st Screen")
})
}
.navigationDestination(for: String.self) { s in
if s == "3rd" {
// Text("3rd")
thirdScreen()
} else {
thirdScreen()
}
}
}
.onAppear {
print("2nd screen on appear")
print("2nd screen path = \(path)")
print("2nd screen path2 = \(path2)")
}
.onDisappear {
print("2nd screen on disappear")
print("2nd screen path = \(path)")
print("2nd screen disa. path2 = \(path2)")
}
}
}
struct thirdScreen: View {
var body: some View {
VStack {
Text("3rd Screen")
}
.onAppear {
print("3rd screen on appear")
}
.onDisappear {
print("3rd screen on disappear")
}
}
}
Topic:
Community
SubTopic:
Apple Developers
I updated my Apple Watch Series 6 before Apple withdrew beta 11.4 as an option. I see on forums that I am not alone with this issue. Many series 6 watches are now stuck in a boot loop. I hope Apple can resolve the issue for those of us that pushed the update to our watches before the issue was identified. Support were unable to assist.
Topic:
Community
SubTopic:
Apple Developers
Hello,
I use Navigationstack in the first and second views. In this case, the second view is executed immediately and then disappears. Is there a solution? The code is as follows.
XCode = 15.0
device = i-phone
ContentView.txt
SecondScreen.txt
thirdScreen.txt
I have the following questions that need official answers:
1: Whether the Bluetooth scanning cycle can be controlled through the software level. If it can be controlled, please tell me how to control it.
2: Now the IOS mobile phone scanning strategy, how long is the scanning cycle, and what is the scanning duty cycle in this scanning cycle
Topic:
Community
SubTopic:
Apple Developers
When I use the screenshot feature, I find that the screenshot becomes darker in color compared to the original image, this seems to be a bug in iOS 18. can anyone help me?