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,
Post
Replies
Boosts
Views
Activity
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
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
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.
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
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