This is a dedicated space for developers to connect, share ideas, collaborate, and ask questions. Introduce yourself, network with other developers, and join us in fostering a supportive community.

All subtopics
Posts under Community topic

Post

Replies

Boosts

Views

Activity

Introducing myself
Hello! I just realized thaty I had signed up for this developer account some time ago without making any meaningful attempt to introduce myself other than attending a few of the Apple meetups at NeurIPS and ICML conferences. As a quick introduction I come from a background in open source development, most notably associated with the "Automunge" python library for dataframe encodings / missing data infill. I also have some background supporting Apple in context of volunteering as an executive officer for an IEEE Standards Association working group developing floating point arithmetic / data types for machine learning. Beyond that have been a dedicated user with frequent product feedback to various channels over the years. I am currently self employed and focussing on building an IP portfolio and investing. I am always open to share dialogue as to how to help advance the field, hope that I might get a chance to meet a few more of this communty at some point. Best regards, Nicholas Teague
0
0
55
Mar ’25
Fitbit Google login Issue in WKWebView
I’m developing an app that has a Fitbit login page embedded in a WKWebView. On the Fitbit login page, there is a Google login button. When I try to log in to Fitbit via Google, some devices redirect back to the Fitbit login page even after entering the correct Google credentials. However, it works on the second attempt. I tested the same URL in the default browser, and it works fine when the page is loaded in the browser instead of inside the WebView. I tried the following workarounds but was unable to fix the issue: 1. Enabled JavaScript in WebView. 2. Tried cookie synchronization between WKWebsiteDataStore and HTTPCookieStorage.
1
0
273
Feb ’25
Battery health dropping fast.
Hi!I‘ve bought my iphone in june 2024 and battery health was at 100% untill March this year.Now its April its at 94%.I’ve been always charging my phone to 80% and would never let it drop below 20%. Is this good or bad?
1
0
48
Apr ’25
How to use donated users in your application and display Siri recommended users in Safari's system sharing
The following is my code, which runs successfully and is recommended to succeed, but it still does not show Siri's suggestion to users in the system sharing in Safari import AppIntents import Contacts import CoreSpotlight import Intents import UIKit class TestViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.white DispatchQueue.global().async { self.donateMessageInteraction(recipientName: "张三", phoneNumber: "+8613812345678") } } func donateMessageInteraction(recipientName: String, phoneNumber: String) { INPreferences.requestSiriAuthorization { status in guard status == .authorized else { return } // 1. 创建接收者 let recipientHandle = INPersonHandle(value: phoneNumber, type: .phoneNumber) let recipient = INPerson( personHandle: recipientHandle, nameComponents: nil, displayName: recipientName, image: nil, contactIdentifier: nil, customIdentifier: "com.yourapp.recipient.\(phoneNumber)" ) // 2. 创建发送者(你的应用身份) let senderHandle = INPersonHandle(value: "15210639372@163.com", type: .emailAddress) let sender = INPerson( personHandle: senderHandle, nameComponents: nil, displayName: "我的应用", image: nil, contactIdentifier: nil, customIdentifier: "com.yourapp.sender" ) // 3. 创建消息意图 let intent = INSendMessageIntent( recipients: [recipient], outgoingMessageType: .outgoingMessageText, content: "最近怎么样?", // 常用消息内容 speakableGroupName: nil, // 群组名称(一对一设为nil) conversationIdentifier: "com.yourapp.conversation.\(phoneNumber)", // 唯一会话ID serviceName: "My Chat Service", // 你的消息服务名称 sender: sender, // 发送者身份 attachments: nil ) // 4. 配置意图参数 intent.setImage(INImage(named: "user0"), forParameterNamed: \.sender) // 5. 创建并捐赠交互 let interaction = INInteraction(intent: intent, response: nil) interaction.direction = .outgoing interaction.donate { error in error.map { print("捐赠失败: \($0)") } } print("捐赠代码执行完成") } } }
0
0
376
Feb ’25
Download and Store Custom Notification Sound for Playback in All App States (Foreground, Background, and Terminated)
I want to implement a feature where a custom notification sound file is downloaded from the server when the app is first launched and stored locally on the device. When a push notification arrives, the stored sound should be played in all app states, including foreground, background, and terminated (killed) state. Does anyone have an idea on how to implement this in iOS? Specifically, I am looking for guidance on: 1)Downloading and storing the sound file securely on the device. 2)Using the locally stored file for push notification sounds. 3)Ensuring the sound plays correctly in all states, including when the app is not running.
0
0
114
Apr ’25
Firebase Notification Fails to Dismiss Voip CallKit UI in Background & Terminated Mode
Hi everyone, I am developing a VoIP calling feature in my Flutter app, using: Agora RTC Engine for real-time calls. CallKit & PushKit (VoIP notifications) for iOS call handling. Firebase Cloud Messaging (FCM) for notifications. Problem: CallKit UI Stays on Screen When Caller Hangs Up (Background/Terminated) I am using Firebase notifications to notify the receiver that the call should be dismissed, but it doesn’t work in the following cases: App is in the background – CallKit UI remains stuck even after receiving the Firebase notification. App is terminated – The Firebase notification does not trigger any background execution, so CallKit UI stays forever. Current Implementation I send an FCM notification to inform the receiver to dismiss CallKit UI. When received in the foreground, it works fine (callEnded method is triggered). But in background or terminated state, the notification is not received or doesn’t execute the code.
1
0
384
Feb ’25
BLE ADVERTISE
Dear Apple: The program we developed uses BLE broadcasting to discover devices. The discovered device sends three broadcasts, but when we debug the program, we found that the addresses reported by centralManager::didDiscoverPeripheral for the same device's three broadcasts are actually different CBPeripheral * addresses. I would like to ask how we can identify that these three broadcasts are from the same device? Are there any variables in the peripheral that can identify it as the same device? Thanks。
1
0
239
Feb ’25
Sidecar between macbook and ipad not connecting
Hi, I have a Retina 13 inch 2020 macbook air and an iPad 7. My macbook is updated to macOS sonoma and my iPad is updated to iPadOS 18.3. I want to use the sidecar feature on my mac and project the macbook display onto my iPad. I remember it working around a year ago when I used this feature before, but now it's telling me I have issues connecting due to my iPad's WiFi being 'unavailable.' However, my iPad isn't connecting to hot-spot, my mac isn't sharing the internet connection, they're linked to the same apple ID account, and they're on the same WiFi network. I've tried connecting both wirelessly and wired (and trusted the computer) but no matter how much I troubleshoot it, it won't connect. I'd be really grateful if somebody could help me fix this. Thanks :D
1
0
161
Feb ’25
RxSwift Driver got fatal error in Swift Testing because it is not called form main thread.
Hi, I'm trying the new Swift Testing instead of XCTest for my new project. I am using RxSwift+UIKit. And when I am trying to test my ViewModel that has a Driver in it, it crashes due to the driver is not being called form main thread. Thread 5: Fatal error: `drive*` family of methods can be only called from `MainThread`. Here is the test code: struct PlayerViewModelTest { @Test func testInit_shouldPopulateTable_withEmpty() async throws { // Arrange let disposeBag = DisposeBag() var expectedSongTableCellViewData: [SongTableCellViewData]? // Act let sut = PlayerViewModel(provideAllSongs: { return .just(mockSongList) }, provideSongByArtist: { _ in return .just(mockSongList) }, disposeBag: disposeBag) sut.populateTable .drive(onNext: { expectedSongTableCellViewData = $0 }) .disposed(by: disposeBag) // Assert #expect(expectedSongTableCellViewData != nil, "Should emit something so it should not be nil") #expect(expectedSongTableCellViewData!.isEmpty, "Should emit empty array") } } This never happen in XCTest. So I assume Swift Testing is not being run in the main thread? How do I fix this? Thanks
1
0
143
Mar ’25
iCloud file reading and writing (iOS)
On my first attempt at adding iCloud to my existing app this is how far I've gotten. For reasons that I won't go into, the use case for my app does not need coordination. I have successfully made my app write a file to the Documents directory of iCloud and read back that same file without errors. In testing on a real iPhone 13 and iPhone 7 I have verified that my app can write a file to iCloud from the iPhone 7 and then read back that same file on the iPhone 13, so I know that the file truly exists in the cloud. But when I make my app on the iPhone 13 write to iCloud, my app on the iPhone 7 says the file does not exist. Exactly the same build of my app is running in both phones. This is problem #1. Problem #2 is that none of these files appear in the iCloud section of the Files app on either of these Phones, nor do they appear in the iCloud section of my Mac. All devices are signed in to my same Apple account in iCloud. Also my info.plist file in the app contains: <key>NSUbiquitousContainers</key> <dict> <dict> <key>iCloud.com.{my domain}.{my app}</key> <dict> <key>NSUbiquitousContainerIsDocumentScopePublic</key> <true/> <key>NSUbiquitousContainerSupportedFolderLevels</key> <string>Any</string> <key>NSUbiquitousContainerName</key> <string>{my app}</string> </dict> </dict> </dict> <key>UIFileSharingEnabled</key><true/> The iPhone 7 is running iOS 15.8.4 and the iPhone 13 is running iOS 18.3.2. The code that does the writing to iCloud is: NSFileManager *fman = [NSFileManager defaultManager]; NSURL *urlDrive = [fman URLForUbiquityContainerIdentifier: nil]; NSURL *urlDocs = [urlDrive URLByAppendingPathComponent:@"Documents"]; if(urlDocs.path == nil) { NSLog(@"NULL path"); return; //..big problem } if( ! [fman fileExistsAtPath: urlDocs.path] ) { //..need to create the Docs directory NSError *err00 = nil; @try { [fman createDirectoryAtURL: urlDocs withIntermediateDirectories:true attributes:nil error:&err00]; NSLog(@"created the directory"); } @catch (NSException *except) { NSLog(@"Exception creating directory %@", except); } } //..directory is now created NSLog(@"url=%@", urlDocs); NSURL *urlFile = [urlDocs URLByAppendingPathComponent:txtfname()]; NSData *fdata = [@"Hello world" dataUsingEncoding: NSUTF8StringEncoding]; NSLog(@"file url=%@", urlFile); NSLog(@"file Data=%@", fdata); NSError *errorReturn = nil; Boolean ret = [fdata writeToURL: urlFile options: NSDataWritingAtomic error: &errorReturn]; NSLog(@"returned %1d, error=%@", ret?1:0, errorReturn); And the code that does the reading is: NSFileManager *fman = [NSFileManager defaultManager]; NSURL *urlDrive = [fman URLForUbiquityContainerIdentifier: nil]; NSURL *urlDocs = [urlDrive URLByAppendingPathComponent:@"Documents"]; NSLog(@"url=%@", urlDocs); if(urlDocs.path == nil) { NSLog(@"urlDocs.path is NULL!"); return; //..big problem } if( ! [fman fileExistsAtPath: urlDocs.path] ) { //..need to create the Docs directory NSLog(@"It seems the urlDocs folder does not exist"); } NSURL *urlFile = [urlDocs URLByAppendingPathComponent:txtfname()]; if([fman fileExistsAtPath: urlFile.path]) { NSLog(@"file %@ exists", urlFile); [fman copyItemAtURL: urlFile toURL:<#(nonnull NSURL *)#> error:<#(NSError *__autoreleasing _Nullable * _Nullable)#>]; } else { NSLog(@"file %@ DOES NOT EXIST!", urlFile); }
1
0
117
May ’25
De Syrische vlag met drie sterren in de bèta-update van iOS 18.4
De officiële Syrische vlag met twee sterren is vervangen door de huidige Syrische vlag met drie sterren, wetende dat geen enkel land ter wereld de vlag van het land vervangt zonder deze in de grondwet van het land op te nemen. Daarom is het beter om de Syrische vlag met twee sterren te behouden in de volgende iOS 18.4-release, of beide vlaggen samen te voegen, omdat de meeste Syriërs niet de voorkeur geven aan de vlag met drie sterren.
0
0
229
Mar ’25
IOS 18.5 Beta
Ever since last weeks 18.5 beta update, the Deltek Vision T&E app no longer opens. I did the next update last night, still not working. I've deleted the app, restarted phone, re-installed, still the same behavior. When you open the app, it just spins and nothing ever happens, don't get to login screen or anything.
1
0
142
Apr ’25
Appleインビテーションで招待された人の条件は?
説明ではApple Accountが無くても回答可能とあるが、招待された画面を開きメールアドレスを入力するとApple acountのパスワードを入れるか、新規にacountを作成する画面になる。 Apple Accountが無い人は何も出来ないのか?それともあのパスワード欄は新規にパスワード登録するためのもの? また、招待を送ったメールアドレスとApple acountのメールアドレスが違う場合はどうなるのだろう? 誰か試した人いますか?
0
0
181
Feb ’25
15.4.x breaks softwareupdate --fetch-full-installer --full-installer-version
Hi, looks like 15.4.x has broken softwareupdate --verbose --fetch-full-installer --full-installer-version for all versions (still works in 15.3.1) softwareupdate --verbose --list-full-installers Finding available software Software Update found the following full installers: * Title: macOS Sequoia, Version: 15.4.1, Size: 15244333KiB, Build: 24E263, Deferred: NO * Title: macOS Sequoia, Version: 15.4, Size: 15243957KiB, Build: 24E248, Deferred: NO * Title: macOS Sequoia, Version: 15.3.2, Size: 14890483KiB, Build: 24D81, Deferred: NO * Title: macOS Sequoia, Version: 15.3.1, Size: 14891477KiB, Build: 24D70, Deferred: NO * Title: macOS Sequoia, Version: 15.3, Size: 14889290KiB, Build: 24D60, Deferred: NO * Title: macOS Sequoia, Version: 15.2, Size: 14921025KiB, Build: 24C101, Deferred: NO * Title: macOS Sonoma, Version: 14.7.5, Size: 13337289KiB, Build: 23H527, Deferred: NO * Title: macOS Sonoma, Version: 14.7.4, Size: 13332546KiB, Build: 23H420, Deferred: NO * Title: macOS Sonoma, Version: 14.7.3, Size: 13334287KiB, Build: 23H417, Deferred: NO * Title: macOS Sonoma, Version: 14.7.2, Size: 13333067KiB, Build: 23H311, Deferred: NO * Title: macOS Ventura, Version: 13.7.5, Size: 11916960KiB, Build: 22H527, Deferred: NO * Title: macOS Ventura, Version: 13.7.4, Size: 11915317KiB, Build: 22H420, Deferred: NO * Title: macOS Ventura, Version: 13.7.3, Size: 11915737KiB, Build: 22H417, Deferred: NO * Title: macOS Ventura, Version: 13.7.2, Size: 11916651KiB, Build: 22H313, Deferred: NO * Title: macOS Monterey, Version: 12.7.4, Size: 12117810KiB, Build: 21H1123, Deferred: NO * Title: macOS Big Sur, Version: 11.7.10, Size: 12125478KiB, Build: 20G1427, Deferred: NO * Title: macOS Catalina, Version: 10.15.7, Size: 8055650KiB, Build: 19H15, Deferred: NO * Title: macOS Catalina, Version: 10.15.7, Size: 8055522KiB, Build: 19H2, Deferred: NO * Title: macOS Catalina, Version: 10.15.6, Size: 8055450KiB, Build: 19G2021, Deferred: NO softwareupdate --verbose --fetch-full-installer --full-installer-version 15.4 Scanning for 15.4 installer Install failed with error: Update not found https://discussions.apple.com/thread/256042015
1
0
131
Apr ’25
Navigation
I am having trouble passing custom data in an array with a navigation stack. I want to display a subview with the same data structure (title, headline, picture placement etc), with different data attached for each of my list view items
0
0
56
Apr ’25
CarPlay music sound output from iPhone after enabled Enhanced Siri
With CarPlay communication plugin R18.1, I followed these steps to integrate Enhance siri, the music sound was output from carplay and there is no option for output to Car. ============================================ Enhanced Siri Declare supported audioFormats for the AuxIn and AuxOut streams Since the AuxIn and AuxOut streams for Siri do not have to be both active at the same time, the accessory must claim audio formats support for AuxIn Audio and AuxOut audio independently. The audio formats for each stream can differ from each other (48KHz for AuxOut and 16KHz for AuxIn). The new audio types represent these new streams - AuxIn/speechRecognition & AuxOut/speechRecognition. Check if connected device supports the feature AirPlayReceiverSessionHasFeatureEnhancedSiri() Claim support in the Setup Response message if device supports the feature Add kAirPlayKeyAccessoryEnabledFeature_EnhancedSiri key through the AirPlayReceiverServer delegate AirPlayReceiverServerCopyProperty_f function for the kAirPlayKey_AccessoryEnabledFeatures key. Helper function: CFArrayAppendValue() Add Enhanced Siri parameters dictionary in the INFO message Add dictionary through the AirPlayReceiverServer delegate AirPlayReceiverServerCopyProperty_f function for the kAirPlayKey_EnhancedSiriInfo key. kAirPlayKey_EnhancedSiriInfo dictionary parameters: Voice activation of Siri - kAirPlayKey_EnhancedSiriVoice Current language of voice model - kAirPlayKey_VoiceModelCurrentLanguage Supported languages of voice model - kAirPlayKey_VoiceModelSupportedLanguages Enhanced Button activation of Siri - kAirPlayKey_EnhancedSiriButton Supported zone(s) if any - kAirPlayKey_SupportedSiriTriggerZones Update AudioStream Get state of the AuxIn state by providing an implementation of AudioStreamUpdateState() - Off, local buffering, or streaming to device. Decouple input streams from output streams. AuxIn is an independent input stream only. The property kAudioStreamProperty_Direction will provide the necessary information if the stream is input, output or input & output. Provide a handler for the AirPlayReceiverSessionDelegate setEnhancedSiriParams_f This will provide additional information: Activation type Setting the language of the voice model Invoke the Communication Plugin to start buffering Once the activation type has been specified, the accessory can request the plugin to start buffering using AirPlayReceiverSessionAuxInStart(). Use the new APIs to trigger Siri: AirPlayReceiverSessionRequestSiriActionWithLatency() AirPlayReceiverSessionRequestSiriVoiceActivationWithLatency() AirPlayReceiverSessionRequestSiriVoiceActivationWithSample() Button presses and voice activations should use this new APIs which adds a timestamp of the activation. These APIs allow a choice of a latency or a sample for button and voice activations. If there is a delay between the user pressing the button to notifying the device on the button press, this latency value should represent this time. If the accessory can determine which zone activated, it can provide the zone with the request. Invoke the Communication Plugin to stop buffering You may need to invoke the plugin to stop buffering (AirPlayReceiverSessionAuxInStop()) if exclusive access to the microphone is necessary. Such instances may include but not limited to: Native voice recognition session Telephony Another stream function which uses the microphone starts modesChanged notification can be used to determine if a resource is being used Note, if the session ends, the plugin will automatically stop buffering
0
0
289
Mar ’25
CarPlay Driving Task App Start/Stop NAvigation
Hi you all, I wrote an CarPlay Driving Task App that can start Navigation to a well defined target. This works as expected (navigation app is started to the destination), but sometime, for any important reason, my application receives updates about current destination. I should interrupt current navigation to current destination and update to the new destination. I'm not able to interrnupt/update. Have you any idea if this is possible? Thanls in advance!
1
0
332
Feb ’25