We are currently developing a VoIP application that supports Local Push extention.
We discovered an issue with this app where the performEndCallAction response to reportCallWithUUID is occasionally slow.(See below for detail)
It usually works without any issues, so we believe there is no problem with the app's processing flow.
This issue only occurs very rarely, but each time it does there is a delay of about 60 seconds,
which leads us to suspect that there is some kind of problem on the iOS side, and that fail-safe processing is occurring after 60 seconds.
Do you know of a workaround for this issue?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I am developing a VoIP application that uses NetworkExtension (Local PUSH function) And VoIP(APNs) PUSH.
Since iPhone X, iPhones have supported eSIM, allowing for the simultaneous use of a physical SIM and an eSIM. Consequently, users of our VoIP app have requested the ability to lock the network used by the VoIP app to either the eSIM or the physical SIM.
Our VoIP app utilizes the network through the socket API. Is there an API in the iOS SDK to lock the network used via sockets to either the eSIM or the physical SIM?
In other words, we would like to be able to retrieve the IP address assigned to the eSIM or the physical SIM in advance, and know which IP address is assigned to which SIM. Are there any such APIs available (that are not "Deprecated")
We are currently developing a VoIP application that supports Local Push extention.
I would like to ask for your advice on how the extension works when the iPhone goes into sleep mode.
Our App are using GCD (Grand Central Dispatch) to perform periodic processing within the extension, creating a cycle by it.
[sample of an our source]
class LocalPushProvider: NEAppPushProvider {
let activeQueue: DispatchQueue = DispatchQueue(label: "com.myapp.LocalPushProvider.ActiveQueue", autoreleaseFrequency: .workItem)
var activeSchecule: Cancellable?
override func start(completionHandler: @escaping (Error?) -> Void) {
:
self.activeSchecule = self.activeQueue.schedule(
after: .init(.now() + .seconds(10)), // start schedule after 10sec
interval: .seconds(10) // interval 10sec
) {
self.activeTimerProc()
}
completionHandler(nil)
}
}
However In this App that we are confirming that when the iPhone goes into sleep mode, self.activeTimerProc() is not called at 10-second intervals, but is significantly delayed (approximately 30 to 180 seconds).
What factors could be causing the timer processing using GCD not to be executed at the specified interval when the iPhone is in sleep mode?
Also, please let us know if there are any implementation errors or points to note.
I apologize for bothering you during your busy schedule, but I would appreciate your response.
Topic:
App & System Services
SubTopic:
Processes & Concurrency
Tags:
PushKit
CallKit
Network Extension
Dispatch
I am developing a VoIP phone application(Our Phoneapp) using APNs VoIP push.
I have a question regarding a behavior I discovered during testing of this application.
When performing the following operations using an iPhoneSE3 with an sXGP-NW SIM inserted,
0xBAADCA11 occurs upon receiving an APNs VoIP PUSH.
Do you have any information regarding this issue?
0xBAADCA11 occurs in operation 8. However, since there were no problems in operation 4 (the app works when Wi-Fi is off), I think there is no issue with the Our Phoneapp.
[Configuration of system components]
[VoIP Telephone] --Call to iPhone(Phoneapp)--> [Our VoIP PBX Server] -- VoIP PUSH request --> [Apple APNs Server] -- VoIP PUSH --> [Our Phoneapp (iPhoneSE3(with sXGP SIM)]
[Operations]
(The issue is reproducible 100% by following oparation)
iPhoneSE3: Power on (iPhoneSE3 with sXGP SIM)
iPhoneSE3: Wi-Fi off, connect to the internet via SIM.
VoIP Telephone: Call to Our Phoneapp
iPhoneSE3: Receives VoIP PUSH and Phoneapp launches. Successfully answers the call and communication is possible. (Receives VoIP push notification from APNs via sXGP SIM)
iPhoneSE3: Wi-Fi is turned ON, connect to the internet via Wi-Fi.
iPhoneSE3: Task kill Our Phoneapp.
VoIP Telephone: Call to Our Phoneapp
iPhoneSE3: iOS does not call the push notification delegate (didReceiveIncomingPushWithPayload).
As a result our Phoneapp is unable to detect the incoming call, However, an ips log with 0xBAADCA11 is output.
in other words, iOS received the VoIP PUSH, but Our Phoneapp dose not call CallKit, so Our Phoneapp was terminated by iOS.
I am developing an application that uses NetworkExtension (Local PUSH function) And VoIP(APNs) PUSH.
Nowadays, I found a problem on this app doesn't handle incoming call of Local PUSH when receiving a Local PUSH after receiving an APNs PUSH.
My confimation result of my app and server log is below.
11:00 AM:
my server(PBX) requests a VoIP(APNs) PUSH notification to the APNs.
But my app does not receive the VoIP(APNs) PUSH.
At this time, my app is running on LAN (Wi-Fi without internet connection), as a result, NetworkExtension was running. so I think this is normal behaviour.
14:55:11 PM:
There is an incoming call from the my server(PBX) via local net, and NetworkExtension calls iOS API(API name is reportIncomingCall).
However, iOS does not call the delegate didReceiveIncomingCallWithUserInfo for the reportIncomingCall.
14:55:11 PM:
At almost the same time, iOS calls the delegate cdidReceiveIncomingPushWithPayload of VoIP PUSH.
(instead of call the delegate didReceiveIncomingCallWithUserInfo for the reportIncomingCall?)
And the content of this VoIP(APNs) PUSH was the incoming call at "11:00 AM".
In other words, the VoIP(APNs) PUSH at 11:00 AM is stuck inside iOS, and at 14:55:11 PM, from NetworkExtension reports it.
I feel there is a problem on iOS doesn't handle incoming call of Local PUSH when receiving a Local PUSH after receiving an VoIP(APNs) PUSH.
Would you tell me Apple's opioion about this?
If this is known problem, Please tell me about it.
Topic:
App & System Services
SubTopic:
Notifications
Tags:
APNS
User Notifications
PushKit
Push To Talk
I tried below at 2:00 PM on 21/01/2025(JST).
Apple Push Notification service server certificate update
I followed above,
a new server certificate: "SHA-2 Root : USERTrust RSA Certification Authority certificate" was added to my push server, but a certificate error occurred and push notifications could not be sent.
So I refered this article,Instead of connecting via DNS name resolution at api.development.push.apple.com,
I fixed api.development.push.apple.com to "17.188.143.34" in /etc/hosts,
I could push notifications with the new server certificate.
(I got this IP(17.188.143.34) from this airtcle)
From this, I suspect that Apple had not yet updated the APNs certificate (CA) for the Sandbox environment as of 2:00 PM on January 21, 2025 (JST).
Was the update published as scheduled?
Topic:
App & System Services
SubTopic:
Notifications
Tags:
APNS
User Notifications
PushKit
Push To Talk
I am developing "local push" VoIP application.
I have a question about issues I found while testing this app.
After repeating a test for 24 hours in which a incoming call followed by an immediate disconnect 0.1 seconds later,
the iPhone of incommig call side encountered a 0xBAADCA11 error, causing iOS to force-close the app.
(The incidence is low, occurring three times in 17280 times incoming call(24 hours.))
This problem found on iOS17.6.1 (iPhone11Pro).
When the same test was performed on iOS18.2 (iPhoneSE3), the problem did not occur.
Did iOS take something measures against the 0xBAADCA11 error between iOS17.6.1 and iOS18.2?
If yes, I want to encourage customers to upgrade to the latest iOS version, please tell me about it?
※I have attached an ips files and sysdiagnose file of the 0xBAADCA11 error occurring. (please refer sysdiagnose also if you need.)
FjSoftPhone-2025-01-16-113049.ips
FjSoftPhone-2025-01-16-175253.ips
FjSoftPhone-2025-01-17-070449.ips
[sysdiagnose_2025.01.17_14-24-48+0900_iPhone-OS_iPhone_21G93.tar.gz]
https://drive.google.com/file/d/1CV8laKzdnQxvwaAIOwMcXL8rAYL2jq35/view?usp=sharing
Currently, our provider server uses token-based authentication with APNs.
In addition, to establish a connection with APNs, we have installed the "AAACertificateServices 5/12/2020" certificate from the "Sectigo KnowledgeBase website" on the provider server.
Question 1
Do I need to update the server certificate of the Apple Push Notification Service at the following URL for the above provider server?
URL
https://developer.apple.com/jp/news/?id=09za8wzy
Question 2
If registration is required, how long will it be valid for?
Root certificate
https://developer.apple.com/documentation/usernotifications/setting-up-a-remote-notification-server
Token-based authentication
https://developer.apple.com/documentation/usernotifications/establishing-a-token-based-connection-to-apns
I am creating a VoIP application. The VoIP application needs to send and receive RTP packets at 20 ms intervals.
The application calls sendto() of the Socket API at 20 ms intervals, but the iPhone buffers the send data inside iOS and then sends RTP packets in batches at 1 second intervals.
(I captured the sned packets of iPhone with rvctl and confirmed this. please reffer "Sending at 1 second intervals.png" for detail)
Similarly, other devices send RTP packets to the iPhone at 20 millisecond intervals,
but the iPhone only receives them at 1 second intervals.
(please reffer "Receiving at 1 second intervals.png" for detail)
Why is this?
If the cause of the delay is in the Wi-Fi protocol and the cause can be found from sysdiagnose,
please tell me the search key for sysdiagnose that shows the cause of the delay and the meaning of the corresponding log.
I uploaded sysdiagnose and result of lan capture to below.
[sysdiagnose and lan capture]
https://drive.google.com/file/d/149OPmePAF4hnZj6NeSnKc5NizfitPQDS/view?usp=sharing
And, the start and end times, packet number in the lan capture of the call shown in the png example are below
Start time; 13:57:22.349608/packet number; 948
End time; 13:57:37.482874/packet number; 2583
Why does E210002 error occur only when launched svnserve via launchctl?
When I start svnserve with
$ sudo /usr/local/bin/svnserve -d -r /Volumes/RAID1disk/svn
and run
$ svn commit -m "test1",
svn commit succeeds, but when I start svnserve with
$ sudo launchctl load -w /Library/LaunchDaemons/com.toshiyuki.svnserve.plist
and run
$ svn commit -m "test2",
svn commit fails and displays the following error:
Committing transaction...
svn: E210002: Commit failed (details follow):
svn: E210002: Network connection closed unexpectedly
After the E210002 error, I ran
$ ps aux | grep svnserve
and got the following result.
toshiyuki 67686 0.0 0.0 34252296 700 s000 S+ 10:13AM 0:00.00 grep svnserve
root 35267 0.0 0.0 34302936 592 ?? Ss 10:01AM 0:00.00 /usr/local/bin/svnserve -d -r /Volumes/RAID1disk/svn
From this, I believe that svnserve is launched as the root user from launchctl.
Also, when I ran
$ls -l /volumes/raid1disk/svn
the following result was obtained.
-rw-rw-r-- 1 root wheel 246 7 23 22:31 README.txt
drwxrwxr-x 6 root wheel 192 7 24 06:31 conf
drwxrwxr-x 17 root wheel 544 7 24 10:01 db
-r--rw-r-- 1 root wheel 2 7 23 22:31 format
drwxrwxr-x 11 root wheel 352 7 23 22:31 hooks
drwxrwxr-x 4 root wheel 128 7 23 22:31 locks
so, svnserve has write access to the repository.
If I start svnserve with
$ sudo /usr/local/bin/svnserve -d -r /Volumes/RAID1disk/svn
instead of
$ sudo launchctl load -w
/Library/LaunchDaemons/com.toshiyuki.svnserve.plist
both svn commit and svn chekout always succeed,
so I think there is no problem with the svnserve configuration file
(/etc/svnserve.conf or the file in /etc/svnserve.conf.d).
I think the plist of launchctl is also correct.
because If I start svnserve with
$ sudo launchctl load -w /Library/LaunchDaemons/com.toshiyuki.svnserve.plist
only svn chekout always succeeds (commit fails, though).
The contents of the plist of launchctl file are as follows:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.toshiyuki.svnserve</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/svnserve</string>
<string>-d</string>
<string>-r</string>
<string>/Volumes/RAID1disk/svn</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardErrorPath</key>
<string>/var/log/svnserve.log</string>
<key>StandardOutPath</key>
<string>/var/log/svnserve.log</string>
<key>UserName</key>
<string>root</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
</dict>
</dict>
</plist>
Also, the execution result of
$ls -l /library/LaunchDaemons/com.toshiyuki.svnserve.plist
is as follows.
-rw-r--r--@ 1 root wheel 929 7 24 10:29 /library/LaunchDaemons/com.toshiyuki.svnserve.plist
But when I start svnserve with
$ sudo launchctl load -w /Library/LaunchDaemons/com.toshiyuki.svnserve.plist
"svn commit" always fails.
Why is this?
When I check the /var/log/svn/svnserve.log file,
svnserve: E000048:Address already in use
errors occured periodically.
Users of my app have reported that they are sometimes unable to receive Voice-over-IP (VoIP) push notifications when using a SIM.
(There is no problem when using WiFi)
VoIP push notifications were not received during the following period.
Could you confirm diagnostic logs and could you please tell me why my app can't receive VoIP push?
[diagnostic logs]
https://drive.google.com/drive/folders/1gSAbr1Fy1SrjlmRXuAzoXqiaxnNbFhj8?usp=sharing
[Problem period]
2024/06/17 05:34:59 - 2024/06/17 09:04:42
Number of times that the push server pushed and it received a normal APNs response: 31
Number of times that iPhone received pushes: 0
2024/06/17 23:05:03 - 2024/06/18 09:02:16
Number of times that the push server pushed and it received a normal APNs response: 192
Number of times that iPhone received pushes: 0
2024/06/15 00:35:56 - 2024/06/15 09:55:57
Number of times that the push server pushed and it received a normal APNs response: 138
Number of times that iPhone received pushes: 0
PLATFORM AND VERSION
iOS Development environment: Xcode 15.0, macOS 14.4.1, Objective-C
Run-time configuration: iOS 17.2.1,
DESCRIPTION OF PROBLEM
What is the general approach to analyzing cpu_resource_fatal.ips? Is there a standard way to analyze it? (Instruments are not available in this analysis, because this is only occurs on the customer's iPhone.)
Also, can this file be symbolicate?
Attachment file is a sample ips file.
FjSoftPhone.cpu_resource_fatal-2024-06-21-150321.ips
PLATFORM AND VERSION
iOS
Development environment: Xcode 15.0, macOS 14.4.1, Objective-C
Run-time configuration: iOS 17.2.1,
DESCRIPTION OF PROBLEM
I am developing an application that uses NetworkExtension (VoIP local push function).
But iOS sometimes doesn't call didActivateAudioSession after following sequence.
Would you tell me why iOS doesn't call didActivateAudioSession ?
(I said "sometimes", but once it occurs, it will occur repeatedly)
myApp --- CXStartCallAction --->iOS
myApp <-- performStartCallAction callback --- iOS
myApp --- AVAudioSession
setCategory:
AVAudioSessionCategoryPlayAndRecord --->iOS
myApp --- AVAudioSession
setMode:
AVAudioSessionModeVoiceChat --->iOS
myApp <-- didActivateAudioSession callback ----iOS
I suspect that myApp cannot acquire an AVAudioSession if another app is already using AVAudioSession.
[QUESTION1]
Is my guess correct? Should I consider another cause?
[QUESTION2]
If my guess is correct, how can I prove if another app is already using an AVAudioSession?
This issue is based on a customer complaint, but the customer said they don't use any other apps.
Best Regards,
Topic:
App & System Services
SubTopic:
Processes & Concurrency
Tags:
APNS
Extensions
AVAudioSession
CallKit