Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

Title: CoreFoundation CFRelease Crash on iOS 18
Hi everyone, I'm experiencing crashes that consistently occur on iOS 18 devices, which seem to share a common root cause. I'm hoping for some guidance. Here are the details of the crashes as received from Xcode Organizer: Crash Trace 1: 0 CoreFoundation 0x0000000192c50e54 CF_IS_OBJC + 76 (CFRuntime.c:461) 1 CoreFoundation 0x0000000192c4dd3c CFRelease + 60 (CFRuntime.c:1202) 2 CoreFoundation 0x0000000192d015e0 _signalEventSync + 252 (CFStream.c:636) 3 CoreFoundation 0x0000000192d53050 ___signalEventQueue_block_invoke + 28 (CFStream.c:646) 4 libdispatch.dylib 0x000000019a93c370 _dispatch_call_block_and_release + 32 (init.c:1549) 5 libdispatch.dylib 0x000000019a93e0d0 _dispatch_client_callout + 20 (object.m:576) 6 libdispatch.dylib 0x000000019a9456d8 _dispatch_lane_serial_drain + 744 (queue.c:3934) 7 libdispatch.dylib 0x000000019a9461e0 _dispatch_lane_invoke + 380 (queue.c:4025) 8 libdispatch.dylib 0x000000019a951258 _dispatch_root_queue_drain_deferred_wlh + 288 (queue.c:7193) 9 libdispatch.dylib 0x000000019a950aa4 _dispatch_workloop_worker_thread + 540 (queue.c:6787) 10 libsystem_pthread.dylib 0x000000021a00fc7c _pthread_wqthread + 288 (pthread.c:2696) 11 libsystem_pthread.dylib 0x000000021a00c488 start_wqthread + 8 (:-1) Crash Trace 2: 0 libobjc.A.dylib 0x0000000186f33c20 objc_msgSend + 32 1 CoreFoundation 0x0000000189cb14b8 _inputStreamCallbackFunc + 36 (CFObject.m:1952) 2 CoreFoundation 0x0000000189cb0aa8 _signalEventSync + 216 (CFStream.c:626) 3 CoreFoundation 0x0000000189d01e30 ___signalEventQueue_block_invoke + 28 (CFStream.c:646) 4 libdispatch.dylib 0x0000000191948370 _dispatch_call_block_and_release + 32 (init.c:1549) 5 libdispatch.dylib 0x000000019194a0d0 _dispatch_client_callout + 20 (object.m:576) 6 libdispatch.dylib 0x00000001919516d8 _dispatch_lane_serial_drain + 744 (queue.c:3934) 7 libdispatch.dylib 0x00000001919521e0 _dispatch_lane_invoke + 380 (queue.c:4025) 8 libdispatch.dylib 0x000000019195d258 _dispatch_root_queue_drain_deferred_wlh + 288 (queue.c:7193) 9 libdispatch.dylib 0x000000019195caa4 _dispatch_workloop_worker_thread + 540 (queue.c:6787) 10 libsystem_pthread.dylib 0x000000021214bc7c _pthread_wqthread + 288 (pthread.c:2696) 11 libsystem_pthread.dylib 0x0000000212148488 start_wqthread + 8 Crash Trace 3: 0 libobjc.A.dylib 0x00000001941d9ce8 objc_loadWeakRetained + 156 (NSObject.mm:525) 1 CoreFoundation 0x0000000196d0a0f4 _outputStreamCallbackFunc + 36 (CFObject.m:1960) 2 CoreFoundation 0x0000000196d09724 _signalEventSync + 216 (CFStream.c:626) 3 CoreFoundation 0x0000000196d07948 ___signalEventQueue_block_invoke + 28 (CFStream.c:646) 4 libdispatch.dylib 0x000000019e9de248 _dispatch_call_block_and_release + 32 (init.c:1549) 5 libdispatch.dylib 0x000000019e9dffa8 _dispatch_client_callout + 20 (object.m:576) 6 libdispatch.dylib 0x000000019e9e75cc _dispatch_lane_serial_drain + 768 (queue.c:3934) 7 libdispatch.dylib 0x000000019e9e8124 _dispatch_lane_invoke + 380 (queue.c:4025) 8 libdispatch.dylib 0x000000019e9f338c _dispatch_root_queue_drain_deferred_wlh + 288 (queue.c:7193) 9 libdispatch.dylib 0x000000019e9f2bd8 _dispatch_workloop_worker_thread + 540 (queue.c:6787) 10 libsystem_pthread.dylib 0x00000002220f3680 _pthread_wqthread + 288 (pthread.c:2696) 11 libsystem_pthread.dylib 0x00000002220f1474 start_wqthread + 8 Notable Points: All crashes occur only on iOS 18 and newer versions. The crashes are independent of the Xcode version used to build the app (tested with both Xcode 15.4 and 16). All crash traces occur in CoreFoundation and seem to have nothing related to our app codebase. I've attempted to profile the app using Instruments to identify any zombie objects, but the crashes do not manifest on my own devices. I've referred to discussions, including this forum thread, but have not yet found a solution. Questions: Has anyone else encountered similar issues on iOS 18? Are there specific aspects of iOS 18 that might contribute to these CoreFoundation and libobjc-related crashes? Would appreciate any suggestions for further diagnostics or potential workarounds. Thank you for your help!
9
2
1.6k
Dec ’24
AdAttributionKit Development Testing problem
Hello. I would like to ask for an assistance with testing AdAttributionKit flow that seems not working. Goal: to close the AdAttributionKit logic flow loop starting from presenting and handling Ad in a publisher app and ending with receiving a postback request on my end point. Problem: No postback request is received on my configured domain. It looks like AdAttributionKit cannot connect between AppImpression invocation in Publisher App and updating postback from the Advertised App, hence no update postback request are transmitted to my endpoint. What was done: Testing device iPhone 13, iOS 18.0.1 Production Apple ID AdAttributionKit Developer Mode is enabled iPhone is reset and restarted Publisher App Test publisher application was created and configured (according to Apple's documentation [https://developer.apple.com/documentation/adattributionkit/configuring-a-publisher-app]) with the following: AdNetworkIdentifiers item was added to app's Info.plist with number of Ad Network IDs. I tried to use in my tests (used below insted of the placeholder): Registered SKAdNetwork Ad Network ID that ends with .skadnetwork Not registered Ad Network ID that ends with .adattributionkit JWS Impression was created with the following JWS Header: {"kid" : "","alg" : "ES256"} JWS Payload: {"impression-type" : "app-impression","impression-identifier" : "9547875E-C052-44CD-8CB9-193978CC5AB7", "timestamp" : 1729162517373,"publisher-item-identifier" : 0,"source-identifier" : 1111,"ad-network-identifier" : "","advertised-item-identifier" : 1125517808} JWS Data: "BASE64(JWS-Header)"."BASE64(JWS-Payload)"."SIGNED("BASE64(JWS-Header).BASE64(JWS-Payload)")" Signing was done with temporary key (created every time the JWS is composed) by the following: let signingInput = "\(headerBase64String).\(payloadBase64String)" let privateKey = Curve25519.Signing.PrivateKey() var encodedSignature = "" do { let signature = try privateKey.signature(for: Data(signingInput.utf8)) encodedSignature = base64UrlEncode(signature) } catch { print("Error signing JWS: \(error.localizedDescription)") } UIEventAttributionView (with UITapGestureRecognizer) was added to my ViewController's main view and in a handling method of TAP event, AppImpression was created baased on JWS above and handleTap() method of this AppImpression instance was called. AppImpression was tapped and AppStore has been launched (because to this moment no advertised app with was installed on a device): attributionkitd Preflighting impression AAKPubApp Connection established attributionkitd Validated impression for advertised app: <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER> attributionkitd No distributor bundle ID received from app fetch attributionkitd Distributor metadata cached for item ID <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER> attributionkitd Is anything happening? attributionkitd Processing tap attributionkitd Successfully validated publisher application attributionkitd Successfully finalized click through impression attributionkitd Impression is not eligible for re-engagement attributionkitd Launching distributor for itemID: <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER> attributionkitd [0x70008b340] activating connection: mach=false listener=false peer=false name=(anonymous) attributionkitd Distributor launch completed for item ID: <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER> Advertised App Advertised App is an existing application on the AppStore. It was configured according Apple's documentation [https://developer.apple.com/documentation/adattributionkit/configuring-an-advertised-app]. AttributionCopyEndpoint key with my domain ("https://<MY_DOMAIN_PLACEHOLDER>.com") was added to app's Info.plist EligibleForAdAttributionKitReengagementPostbackCopies key with "YES" value was added to Info.plist as well. Number of postback method calls were added to the application in different places including application:didFinishLaunchingWithOptions. Used AdAttributionKit method - (updateConversionValue(_:coarseConversionValue:lockPostback:)) [https://developer.apple.com/documentation/adattributionkit/postback/updateconversionvalue(_:coarseconversionvalue:lockpostback:)] Application is written in Objective-C while using AdAttributionKit via Swift-to-ObjC regular bridging. I tried to use Advertised App in the following ways: To run it from Xcode. This way, when the advertised app is already installed, AppImpression tap in the publisher App doesn't recognize the Advertised App is installed and launches AppStore. To install it from TestFlight. This way, AppImpression tap in the publisher App successfully recognizes the Advertised App is installed and launches it. Both ways yield the same result - explanation below. Advertised App launched - while calling update postback method in application:didFinishLaunchingWithOptions attributionkitd Updating postback attributionkitd Queueing update postback attributionkitd [TXNf0dc] 🐏 Beginning transaction (Task runner: atomic) attributionkitd Begin update postback <MY-APPLICATION-NAME-PLACEHOLDER> Connection established attributionkitd [TXN5421] 🐏 Ending transaction (<private>) (<private>) attributionkitd Retrieved conversion window thresholds: <private> attributionkitd [TXNf0dc] 🐏 Ending transaction (<private>) (<private>) ... attributionkitd Calling launch handler for com.apple.attributionkitd.development-postback-transmission attributionkitd Begin task for identifier: com.apple.attributionkitd.development-postback-transmission attributionkitd Running barktivity: com.apple.attributionkitd.development-postback-transmission attributionkitd [TXN46f0] 🐏 Beginning transaction (<private>) attributionkitd Found 0 postbacks eligible for transmission for environments: <private> attributionkitd Postback transmission completed attributionkitd [TXN46f0] 🐏 Ending transaction (<private>) (<private>) attributionkitd Marking task <BGRepeatingSystemTask: com.apple.attributionkitd.development-postback-transmission> complete attributionkitd Task completed for identifier: com.apple.attributionkitd.development-postback-transmission The problem I can see here is in the following line: attributionkitd Found 0 postbacks eligible for transmission for environments: <private> It looks like AdAttributionKit cannot connect between AppImpression invocation in Publisher App and updating postback from the Advertised App. Please correct me in case I'm doing anything wrong or missing anything. Thank you very much.
1
2
534
Oct ’24
FamilyActivityPicker Crashing / Freezing
Our users report frequent crashes with the FamilyActivityPicker. Since this is a screen controlled by Apple, I'm assuming that there's nothing I can do to prevent these crashes. I'm wondering, though, if there's any way to gracefully handle these crashes? When this happens, the following is printed to the console: [com.apple.FamilyControls.ActivityPickerExtension(1121)] Connection to plugin invalidated while in use. Does anyone know how to handle/catch this error?
4
2
1.2k
Aug ’25
IntentDonationManager not donating Shortcuts
if #available(iOS 16.0, *) {       print("donated")       let intent = BasicIntent()       IntentDonationManager.shared.donate(intent: intent)    } Trying to test if donations work with the new App Intents framework. Donating the shortcut once a user taps a button. The shortcut is not appearing on the lock screen. Everything else is working as expected. The Shortcut is appearing in the Shortcuts App and is working via Siri. In developer settings I have Display Recent Shortcuts -> On Display Donations on Lock Screen -> On Allow Any domain -> On Allow Unverified sources -> On Running iOS 16.2, iPhone 11.
8
2
2.5k
Mar ’25
Identifying Essential Apple Bundle ID for Apple Watch-iPhone Connectivity in MDM Environment
I am experiencing difficulties in fully integrating my Apple Watch with a supervised iPhone under MDM control. While I have successfully paired the watch with the iPhone, I am facing issues with some apps not syncing or appearing on the Apple Watch. This issue persists despite having allowed their bundle IDs in the MDM’s whitelist. Could anyone provide guidance on which specific Apple bundle ID is crucial for maintaining the connectivity and functionality between the iPhone and the Apple Watch? Understanding this would help in ensuring that the necessary bundle ID is whitelisted in the MDM settings, thus resolving the app visibility and functionality issues on the Apple Watch.
2
2
1k
Dec ’24
WeatherKit API inaccessible for some users
Hi All, I’m puzzled by this issue: my app uses WeatherKit to fetch hourly UV-index and temperature forecasts. The same build, running on the latest iOS, succeeds on most devices but consistently fails on a few. Strangely, the paired Apple Watch version retrieves the data without problems. Could WeatherKit be applying per-user throttling? Any insight would be greatly appreciated.
4
2
127
Jun ’25
Can FamilyControls ApplicationToken or CategoryToken expire? If yes, how to detect and handle it?
How to programmatically check if ApplicationToken or ActivityCategoryToken is expired in FamilyActivityPicker? I'm building a Screen Time-based parental control app using FamilyControls and ManagedSettings. We use FamilyActivityPicker to allow the user to select apps and categories to restrict, and we apply the shield using: store.shield.applications = .specific(selection.applicationTokens) store.shield.applicationCategories = .specific(selection.categoryTokens) Sometimes, we observe that the shield silently fails to apply — no error is thrown, but the restrictions aren't enforced. I suspect this may be due to expired or invalid tokens, possibly if the app was removed or the selection became stale. My Questions: Can ApplicationToken or ActivityCategoryToken expire or become invalid over time? If yes, is there a supported or recommended way to detect whether a token is still valid before applying it to the shield? Is comparing the current shield values (store.shield.applications and store.shield.applicationCategories) after applying them a reliable validation method? What's the best practice to handle expired tokens (e.g. re-prompt the FamilyActivityPicker, or show a fallback)? What Is the Expiration Duration of Tokens from FamilyActivityPicker? Any guidance or insight from the Screen Time/FamilyControls team would be greatly appreciated! Thank you!
1
2
95
Jun ’25
How to Test FinanceKit Transaction History in iOS?
Hello, I am currently developing an iOS application that leverages FinanceKit to access transaction history. I have already enabled FinanceKit in my developer account, but I am encountering challenges when trying to test the transaction history feature. Could anyone guide me on the best practices or specific steps needed to effectively test FinanceKit’s transaction history in a development environment? Any insights on mock data handling, API responses, or potential limitations during testing would be greatly appreciated. Thank you in advance for your help!
0
2
335
Nov ’24
Non-removable system extensions from UI attribute from MDM is not getting applied to the extension under Apps tab in new Mac OS 26 (Tahoe)
We have an application which is written in Swift, which activates Transparent Proxy network extension. We are using Jamf MDM profile for deployment. To avoid the user deleting / disabling the extension from General -&gt; LogIn Items &amp; Extension -&gt; Network Extensions screen, we are using "Non-removable system extensions from UI" attribute under Allowed System Extensions and Teams IDs section. In new Mac OS 26 (Tahoe), user can also enable/disable the extension from General -&gt; LogIn Items &amp; Extension -&gt; Apps tab. The "Non-removable system extensions from UI" attribute set in Jamf MDM profile does not apply to this tab. Same attribute is working for General -&gt; LogIn Items &amp; Extension -&gt; Extensions tab and there the slider is greyed out and Remove option is not available under more menu. Is there any new key/configuration defined to disable the slider from General -&gt; LogIn Items &amp; Extension -&gt; Apps tab? Created https://feedbackassistant.apple.com/feedback/18198031 - FB18198031 feedback assistant ticket as well.
3
2
143
Jun ’25
How to handle a `AppIntent.perform()` error in Widget?
Hello. My project includes a widget target that provides interactive widget functionalities. The document "Adding Interactivity to Widgets and Live Activities" says the following: Additionally, note that the perform() function is marked as throws. Be sure to handle errors instead of rethrowing them, and update your app, widget, and Live Activity as needed. For example, update a widget’s interface to indicate that it displays outdated information if it cannot load new data. https://developer.apple.com/documentation/widgetkit/adding-interactivity-to-widgets-and-live-activities#Implement-the-perform-function, column 3 However, I couldn't find a way how to handle an error in an interactive widget. The Button(intent:) and Toggle(intent:) initializers don't have mechanisms for error handling. Does anyone know a solution for handling errors in interactive widgets?
1
2
960
Nov ’24
Can't get audio data from INSendMessageIntent
guard let fileURL = intent.attachments?.first?.audioMessageFile?.fileURL else { print("Couldn't get fileNameWithExtension from intent.attachments?.first?.audioMessageFile?.fileURL?.lastPathComponent") return failureResponse } defer { fileURL.stopAccessingSecurityScopedResource() } let fileURLAccess = fileURL.startAccessingSecurityScopedResource() print("FileURL: \(fileURLAccess)") let tempDirectory = FileManager.default.temporaryDirectory let tempFileURL = tempDirectory.appendingPathComponent(UUID().uuidString + "_" + fileURL.lastPathComponent) do { // Check if the file exists at the provided URL guard FileManager.default.fileExists(atPath: fileURL.path) else { print("Audio file does not exist at \(fileURL)") return failureResponse } fileURL.stopAccessingSecurityScopedResource() // Check if the temporary file already exists and remove it if necessary if FileManager.default.fileExists(atPath: tempFileURL.path) { try FileManager.default.removeItem(at: tempFileURL) print("Removed existing temporary file at \(tempFileURL)") } // Copy the audio file to the temporary directory try FileManager.default.copyItem(at: fileURL, to: tempFileURL) print("Successfully copied audio file from \(fileURL) to \(tempFileURL)") // Update your response based on the successful upload // ... } catch { // Handle any errors that occur during file operations print("Error handling audio file: \(error.localizedDescription)") return failureResponse } guard let audioData = try? Data(contentsOf: tempFileURL), !audioData.isEmpty else { print("Couldn't get audioData from intent.attachments?.first?.audioMessageFile?.data") return failureResponse } Error: FileURL: false Audio file does not exist at file:///var/mobile/tmp/SiriMessages/BD57CB69-1E75-4429-8991-095CB90959A9.caf is something I'm missing?
2
1
760
Oct ’24
Does Live Activity always receive updates for pushToStartTokenUpdates and activityUpdates?
Our context involves smart kitchen appliances, where cooking may be initiated by an app or directly by the device. When the app is not running, we can only start a Live Activity through a remote push notification. However, an increasing number of users report issues where they cannot update or terminate the Live Activity. While we can reproduce this issue in some cases, it is inconsistent and lacks a clear pattern. I have a sample project and would like to confirm the following questions: When the app is not running, does each pushToStartToken update wake the app and reliably trigger the callback below? for await pushToken in Activity<DeviceAttributes>.pushToStartTokenUpdates { } When the app is not running, does each pushTokenUpdates update wake the app and reliably trigger the callback below? Task { for await activity in Activity<DeviceAttributes>.activityUpdates { Task { for try await tokenData in activity.pushTokenUpdates { } } } } Must pushToStartTokenUpdates and pushTokenUpdates be placed directly in application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?), or can they be in another wrapper, such as an RxSwift wrapper? If pushTokenUpdates is updated, but the received pushToken fails to synchronize to the server due to network issues, how should this be handled? Alternatively, if you have any better suggestions, I would be very grateful to hear them. Here is a simple example.
1
1
400
Nov ’24
Label with ApplicationToken cannot be styled?
Hi, I'm trying to make use of the Device Activity Labels where you supply an ApplicationToken. I can successfully get it to show the icon + title of the Application (twitter in my case) but I cannot get the styling to work. // Works .labelStyle(.iconOnly) .labelStyle(.titleOnly) .border(...) ![]("https://developer.apple.com/forums/content/attachment/9660b578-a36f-4d5a-ae18-653a207aa5ab" "title=Screenshot 2023-03-12 at 12.57.34 PM.png;width=1218;height=844") // Does NOT work .font(.largeTitle) .foregroundColor(.blue) I have checked the same style (or just modifiers) against a standard Label and they actually do work in the code below. // This is an application token. Some style not applied. Label(targetApp) .labelStyle(MyStyle()) // Showing the same style using a simple label. All styles correctly applied. Label("Twitter", systemImage: "video.square.fill") .labelStyle(MyStyle()) Is changing the font + color of the title for this Label(_ applicationToken:) supported?
6
2
2.4k
Mar ’25
How to debug a CoreSpotlight extension?
My CoreSpotlight extension seems to exceed the 6 MB memory limit. What’s the best way to debug this? I've tried to attach the debugger on the Simulator but the extension seems to be never launched when I trigger the reindex from Developer settings. Is this supposed to work? On device, I am able to attach the debugger. However, I can neither transfer the debug session to Instruments, nor display the memory graph. So I've no idea how the memory is used. Any recommendations how to move forward? Is there a way to temporarily disable the memory limit since even with LLDB attached, the extension is killed.
0
1
61
Apr ’25
WeatherKit DayWeather::date Timezone Issue
I use WeatherKit with Swift to get multiple cities weather by longitude and latitude. But I use this API in WeatherService for daily forecast: final public func weather<T>(for location: CLLocation, including dataSet: WeatherQuery<T>) async throws -> T And I found there is something wired: The date of WeatherKit::DayWeather is based on my device's timezone settings. Tokyo's Day Weather is start at UTC+8, New York' Day Weather is start UTC+8. Is there any way to set timezone correctly?
0
1
85
Apr ’25
LiveCommunicationKit
What I want to achieve now is that when the app is not running, upon receiving a notification, it displays an interface similar to CallKit with accept and decline buttons. Here is part of my code: @available(iOS 17.4, *) class LiveCommunicationManager: NSObject, ConversationManagerDelegate { static let shared = LiveCommunicationManager() var isInvalidate:Bool = false var configuration: ConversationManager! override init() { let config = ConversationManager.Configuration( ringtoneName: "notes_of_the_optimistic", iconTemplateImageData: UIImage(named: "AppIcon")?.pngData(), // 图标的 PNG 数据 maximumConversationGroups: 1, // 最大对话组数 maximumConversationsPerConversationGroup: 1, // 每个对话组内最大对话数 includesConversationInRecents: false, // 是否在通话记录中显示 supportsVideo: false, // 是否支持视频 supportedHandleTypes: [.generic,.phoneNumber,.emailAddress] // 支持的通话类型 ) configuration = ConversationManager.init(configuration: config) } func reportIncomingCall(uuid: UUID, callerName: String) { configuration.delegate = self let local = Handle(type: .generic, value: callerName, displayName: callerName) let update = Conversation.Update(localMember: local,members: [local],activeRemoteMembers: [local]) Task{ do { try await configuration.reportNewIncomingConversation(uuid: uuid, update: update) print("成功报告新来电") } catch { print("报告新来电失败: \(error.localizedDescription)") } } } func conversationManager(_ manager: ConversationManager, conversationChanged conversation: Conversation) { print("会话状态改变了") } func conversationManagerDidBegin(_ manager: ConversationManager) { print("会话已经开始了") manager.delegate = self } func conversationManagerDidReset(_ manager: ConversationManager) { print("会话将要清除了") } func conversationManager(_ manager: ConversationManager, perform action: ConversationAction) { print("会话接听了") configuration.invalidate() } func conversationManager(_ manager: ConversationManager, timedOutPerforming action: ConversationAction) { print("会话超时了") } func conversationManager(_ manager: ConversationManager, didActivate audioSession: AVAudioSession) { print("会话激活了") } func conversationManager(_ manager: ConversationManager, didDeactivate audioSession: AVAudioSession) { print("会话死亡了") } } 在Appdelegate里设置了这些: func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -&gt; Void) { // 在这里处理离线推送通知 completionHandler(.noData) // 返回后台任务完成 if let aps = userInfo["aps"] as? [String: Any], let alert = aps["alert"] as? [String : Any]{ // 静默推送的处理逻辑 if #available(iOS 17.4, *) { let manager = LiveCommunicationManager.shared if manager.isInvalidate { return } if let msgType = userInfo["msgType"] as? Int{ if msgType == 5{ manager.configuration.invalidate() }else{ let callerName = alert["title"] as? String ?? "Fanvil" manager.reportIncomingCall(uuid: UUID(), callerName: callerName) } } } } } Xcode has been configured with the necessary capabilities, such as Background Fetch, Voice over IP, Background Processing, and Push Notification. The issue now is that sometimes the code works as expected, allowing the app to wake up when not running and displaying the system interface with accept and decline buttons. However, after a few successful attempts, the app stops waking up, and no notification appears. But when I manually open the app, the didReceiveRemoteNotification method gets triggered. I’d like to know why this stops working after a few times.
0
1
144
Apr ’25