Post

Replies

Boosts

Views

Activity

Reply to iOS doesn't handle incoming call of Local PUSH when receiving a Local PUSH after receiving an APNs PUSH
Hi Kevin Thank you for your kind reply. There was a mistake in my initial inquiry. I apologize. I will correct the mistake, so could you please check again? 11:00 AM: The PBX server requests a VoIP PUSH notification from APNs. The app was connected to the Internet, but did not receive VoIP PUSH. ** There was an error in the explanation here last time. ** It is unclear whether the iPhone was within the range of a network that could connect to the Internet or outside of it. It is certain that it is not connected to the LAN (Wi-Fi) at least. The extension is not working. The following are hypotheses. The APNs server was unable to send the VoIP PUSH to the iPhone. Or..., The VoIP PUSH reached the iPhone, but the delegate (didReceiveIncomingPushWithPayload) was not called. 14:31 PM: The iPhone connected to the LAN (Wi-Fi). The extension started working. 14:55:11 PM: A call comes in from my server (PBX) via the local network, and NetworkExtension calls the iOS API (API name is reportIncomingCall). However, iOS does not call the delegate didReceiveIncomingCallWithUserInfo for reportIncomingCall. 14:55:11 PM: At almost the same time, iOS calls the VoIP PUSH delegate didReceiveIncomingPushWithPayload. (Instead of calling the delegate didReceiveIncomingCallWithUserInfo for reportIncomingCall?) The content of this VoIP (APNs) PUSH was the 11:00 AM call. This is just my guess. It is unlikely that APNs notified the VoIP PUSH that occurred at 11:00 AM at 14:55:11 PM (due to processing delay). The 11:00 VoIP PUSH reached the iPhone, but got stuck inside iOS. At 14:55:11 PM, the extension called reportIncomingCall, which triggered the VoIP PUSH delegate didReceiveIncomingPushWithPayload to be called. We apologize for the confusion. Unfortunately, we were unable to obtain diagnostic logs and have not issued a bugreport. Could you please let us know if there is a known issue? Is there a possibility that this can be avoided by implementing it on the application side? Best Regards,
Feb ’25
Reply to About 0xBAADCA11 error
I feel your description describe about the Technical Support Incident from me(TSI:771875962). But I heard this probelm already fiexd in the TSI:771875962. If so, should we assume that the BAADCA11 problem fixed in iOS15 will reoccur in iOS17?(Or is this new problem??) When I was investigating this ticket before, I had set a restriction in my system to not accept the next incoming call within 7 seconds to avoid the problem, but should I reimpose the same restriction? Best Regards,
Topic: App & System Services SubTopic: General Tags:
Mar ’25
Reply to 0xBAADCA11 Occurs when VoIP Call Incoming (APNs Push Notification)
An app setup like this will work fine under basic testing because the developer/user habitually logs in as soon as they open the app. However, it will be terminated under real world conditions when the system or the user kills the app. The system correctly launches the app into the background, then terminates it because the app is blocked at #1 and has not created a PKPushRegistry object. The crash at step 8 of [Operation] in the initial explanation only occurs when implementing sXGP-SIM. There is no problem when using LTE-SIM(with the same operation perfectly.) If Wi-Fi is enabled when the LTE-SIM is implemented, the crash that in step 8 of the [Operation] in the first explanation will not occur 100%. If Wi-Fi is enabled when the sXGP-SIM is implemented, the crash that in step 8 of the [Operation] in the first explanation will occur 100%. In other words, the problem is not occurring because there is a difference in the app's executing route when a push message is received after the developer/user opens the app and when a push message is received after the app is terminated. What does that crash log show? I'm happy to take a look if you post the log, but my guess is that it will show one of three things: my crash log was below. code:0xBAADCA11 explanation: Is there a way to send the logs other than uploading them directly here? If not, I would like to refrain from uploading logs that include the app name to a public site, Is it okay if I hide(Change the app name to ***, etc.) the app name in the logs? my recommendation is that voip apps should create their basic call handling "infrastructure" as early as possible (typically, applicationDidFinishLaunching) AND that the "core" component should be able to FULLY process a call without ANY of the rest of your app functioning at all. I see your point. We understand that my app needs to be processed as quickly as possible. However in my case, app doesn't get first entry(didReceiveIncomingPushWithPayload). So app can't do anythig...
Topic: App & System Services SubTopic: General Tags:
Apr ’25
Reply to 0xBAADCA11 Occurs when VoIP Call Incoming (APNs Push Notification)
Thank you for your response. Have you looked at exactly what happens when your app launches in that configuration? I don't see how this would change the systems routing for pushes, but I could see it distorting your apps own network logic. Are you asking about the behavior of the app when WiFi is ON (when it crashes)? I have checked exactly how the app works when WiFi is ON (when it crashes). Application life sycle didn't start when it. iOS didn't call application after push. I haven't checked exactly how the app works when Wi-Fi is OFF, because there are no problems. Also, how is the app being distributed to the device? I do not that there are extra verification steps for enterprise apps and, in theory, it's possible that issues with that verification process could delay the app launch long enough that callservicesd then terminates the app. This application is distributing via App Store(And I tested TestFlight version). You can either file a bug and post the number back here, or you can file a code level support request and send them through email. I reported(and attached logs) about this to Feedback assistant. Number is FB17345744. Would you take a logs from above report?
Topic: App & System Services SubTopic: General Tags:
Apr ’25
Reply to 0xBAADCA11 Occurs when VoIP Call Incoming (APNs Push Notification)
The direct cause of the crash is that your app never registed a PushKit handler with callservicesd. You can confirm this by searching for the string "Registering client process" logged by callservicesd. Here is what's logged by an early run of your app (pid=405): The application log shows that the following operations were performed at the following times. What else should the app do to register a PushKit handler with callservicesd? time:04/07 11:10:50.666 operations: dispatch_queue_t mainQueue = dispatch_get_main_queue(); // Create a push registry object voipRegistry = [[PKPushRegistry alloc] initWithQueue: mainQueue]; // Set the registry's delegate to self voipRegistry.delegate = self; // Set the push type to VoIP voipRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP]; Reference sample source: https://developer.apple.com/documentation/pushkit/pkpushregistry?language=objc ...my recommendation is that voip apps should create their basic call handling "infrastructure" as early as possible (typically, applicationDidFinishLaunching) AND that the "core" component should be able to FULLY process a call without ANY of the rest of your app functioning at all. I understood this advice to mean that when you receive a push signal, you should end the push signal reception process in your app as quickly as possible. In this specific incident, the app is not receiving a push signal, so it cannot end the push signal reception process in the app as quickly as possible. Did this advice mean something different?
Topic: App & System Services SubTopic: General Tags:
May ’25
Reply to 0xBAADCA11 Occurs when VoIP Call Incoming (APNs Push Notification)
Regarding the key differences between the logs of PID 405 and the logs mentioned above, it appears that they demonstrate the results of repeated each incoming call tests performed after the app was launched. For more details, I have uploaded VID_20250407_111252.mp4 to FB17345744. Please refer to it. As you can see in VID_20250407_111252.mp4, I made five outgoing call attempts (incoming calls on the test device) when I obtained "FjSoftPhone-2025-04-07-1113XX.ips." Based on the iPhone's time display, these operations occurred around 11:12-11:13 (around 0:00:00-0:00:52 in the video timestamp). I believe that 0xBAADCA11 occurred during the first, second, and third incoming calls, and the fourth and fifth incoming calls were ignored. Finally, when Wi-Fi was turned OFF (around 0:01:14 in the video timestamp), the app detected the incoming ghost call with a delay (around 0:01:19 in the video timestamp). Here's a summary of the operations and their timestamps: [Operation Time][Video Timestamp][Operation] [04/07 11:12] [0:00:02] [Caller: Make call (1) ] [04/07 11:13] [0:00:16] [Caller: Make call (2) ] [04/07 11:13] [0:00:28] [Caller: Make call (3) ] [04/07 11:13] [0:00:40] [Caller: Make call (4) ] [04/07 11:13] [0:00:52] [Caller: Make call (5) ] [04/07 11:14] [0:01:14] [Callee: Wi-Fi OFF ] [04/07 11:14] [0:01:19] [Callee: Accept ghost call] I Wrote the app's operation sequence in "BAADCA11.jpg"( attachment file of this incident). Could you please review this sequence and let me know if there are any deficiencies in the app's processing? linkText
Topic: App & System Services SubTopic: General Tags:
May ’25
Reply to 0xBAADCA11 Occurs when VoIP Call Incoming (APNs Push Notification)
The method "[AppDelegateImpl voipRegistration]" is where your app creates and configures PKPushRegistry. Yes, that's correct. "[AppDelegateImpl voipRegistration]" is a log indicating that sequence number 3(PKPushRegistry) in BAADCA11.jpg was executed. The fact that it was not logged indicates that it was never called. Yes, that's correct. myApp executes the PKPushRegistry only once, at sequence number 3 in BAADCA11.jpg. I assume this is what you mean by "PKPushRegistry call for PID 405." After sequence number 3, myApp does not make any PKPushRegistry calls (it doesn't make multiple PKPushRegistry calls). The combination of 1 & 2 would mean that the termination of 512/513/514 was valid. No, I don't think so. I believe this is where our understanding differs. I believe that PKPushRegistry is an API that should be called only once when myApp starts, and not an API that should be called on a call-by-call basis of VoIP . Perhaps you think that PKPushRegistry is an API that should be called on a call-by-call basis? From here on, this is my speculation. Internally in iOS, PIDs 512, 513, and 514 may need to hold the callback destination for PKPush. However, this holding is the result of registration through the interface between internal iOS components. In the interface between iOS and the application, registering only once at myApp launch should definitely be sufficient. Could you please confirm this point and provide the results?
Topic: App & System Services SubTopic: General Tags:
May ’25
Reply to 0xBAADCA11 Occurs when VoIP Call Incoming (APNs Push Notification)
Thank you for the advice. Following your advice, I executed PKPushRegistry on the first line of didFinishLaunchingWithOptions, and that resolved the issue. This was an experimental implementation, but we will proceed with the commercial implementation with the policy of performing PKPushRegistry as early as possible. By the way, why was it necessary to perform PKPushRegistry as early as possible? If it's not too much trouble, could you please tell me?
Topic: App & System Services SubTopic: General Tags:
May ’25
Reply to About GCD (Grand Central Dispatch) in an extension.
Thank you for your advice. I understood the usefulness of NEAppPushProvider.handleTimerEvent(). but I found the following description in "Establish and Monitor the Network Connection" Your push provider must implement the handleTimerEvent callback method, which the framework calls every 60 seconds. Implement this method to check the status of the connection on the client end. Is the execution interval of NEAppPushProvider.handleTimerEvent fixed at 60 seconds? If it can be set to an arbitrary interval, would you tell me sample source or how to configure it.
Jun ’25
Reply to Regarding Dual SIM Usage
By "managed environments," I assumed you meant MDM, is that correct? If so, it depends on the client. (We have multiple clients and it varies by client) So, if there is any solution that is based on the premise of "using it in an MDM environment," I would like to know detail of about it.
Jul ’25
Reply to Regarding network interface name with dual SIM iPhone
Thank you for your previous response to my question which directed me to the Extra-ordinary Networking documentation. We have thoroughly reviewed this documentation and related articles, but have yet to find a direct solution to the specific problem we are facing. Our VoIP application is currently being operated in a customer environment utilizing an sXGP-SIM (local LTE-SIM). A specific requirement from our customer is to "always use the data communication network, rather than the voice call-specific VoLTE network, for establishing SIP and RTP traffic." What we know from our investigations so far: In the customer's sXGP environment, we have confirmed that the VoIP application (client) can successfully connect to the SIP server (server) and conduct VoIP calls (RTP), regardless of whether the connection routes through what might be conceived as a VoLTE network or a general data communication network. Following general best practices, we considered an approach where we do not explicitly call bind() when creating sockets, but instead rely on the OS for route selection (i.e., using connect() and then getsockname() to retrieve the local IP address). However, with this method, we believe it is not possible to control whether the OS-selected route becomes a VoLTE network or a data communication network, nor is it possible for the application to programmatically identify the type of network used. Given that both presumed network paths are viable for reaching the target server in the customer's environment, we cannot rule out the possibility of the OS selecting a VoLTE network path. We are seeking clarification on the following two points: 1. Identification of VoLTE vs. Data Communication Network Is there an existing iOS API (including Network Extension Framework, Network.framework, or other lower-level APIs) that allows an application to programmatically determine whether the current network path is a logical path assigned for VoLTE, or a logical path assigned for general data communication? 2. Forcing Traffic Routing to a Specific Network Path Similarly, is there an API or mechanism that allows a VoIP application to explicitly force its SIP and RTP traffic to route through a path identified as a "data communication network" and not a VoLTE network? Our team understands that implementing these features via public iOS APIs might be challenging. However, to provide a definitive answer to our customer, an official statement from Apple, especially confirming if "it's currently not feasible with iOS APIs," would be highly valuable as evidence for guiding our future development and customer communication. If such APIs or recommended design patterns do not exist, a clear confirmation of this would be greatly appreciated. Conversely, if it is indeed possible, could you please provide hints on the specific APIs or approaches? Thank you for your time and consideration.
Topic: App & System Services SubTopic: General Tags:
Oct ’25
Reply to Regarding "Overview of app transfer"
The recipient can build their push servers and test it with another app they own, but not with the transferring app until the transfer is completed. Thank you for your previous guidance. I understood that a recipient can build their push servers and test them with another app they own, but not with the transferring app until the transfer is completed. Based on this, my plan is to first register a new app specifically for PUSH testing under the transferor's account (Company A), confirm that PUSH works, then transfer this test app to the transferee (Company B), and finally, verify PUSH functionality again after the transfer is complete. Now, I have a more specific question regarding the transfer of an existing app. For clarity, let's refer to the transferor's company as Company A, the transferee's company as Company B, and the app to be transferred as App C. Currently, App C (owned by Company A) is widely used by many users who have it installed on their devices. My primary concern is to understand what happens to these existing users' VoIP push functionality when App C is formally transferred from Company A to Company B (meaning, an App Transfer within the Apple Developer Program). Here's my specific question: After App C's ownership is transferred from Company A to Company B, will users who had Company A's App C installed on their devices (before the transfer was completed) still be able to receive VoIP push notifications sent from Company A using Company A's P8 key? My current understanding and proposed setup are as follows: I acknowledge that the P8 key for VoIP push is specific to each developer account (Team ID). So, Company A has its own P8 key, and Company B will have its own P8 key. Therefore, I plan to place Company A's P8 key and Company B's P8 key on the push server, and add a feature that uses Company A's P8 key when pushing to Company A's app C, and Company B's P8 key when pushing to Company B's app C. Because I believe that even after App C is transferred to Company B, users who installed the original App C (signed by Company A) will still be able to receive VoIP push messages if these messages are sent from Company A's push server using Company A's P8 key. Is this assumption correct? Or will the APNs server, upon completion of after the transfer, reject push requests from Company A (using Company A's P8 key) directed at the App C (even if users have the original Company A-signed version installed)? My main concern stems from this: If it's not possible for Company A to continue pushing to the existing installed base after the transfer, it would imply that all existing users would immediately lose push functionality from the moment the app transfer is completed. To regain functionality, they would then need to update their app to a version signed by Company B. This burden (requiring immediate updates from a large user base to maintain core functionality) would be significant and could cause considerable confusion. Could you please clarify the exact behavior of APNs in such an app transfer scenario, specifically regarding the continued validity of the original owner's P8 key for previously installed app versions? If my assumption is incorrect, I would greatly appreciate any guidance or recommended workarounds to mitigate the disruption for existing users during and after an app transfer. Thank you for your time and assistance.
Oct ’25