I used the built-in iOS screen recording (available on >= iOS 11) and had audio playback issues after transferring the mp4 file to my computer. I recorded my voiceover with the built-in mic (enabled by force-pressing/long-tapping the icon in control center). After transferring the resulting mp4 to my Mac, Quicktime would play the audio, but Chrome and iiNA would not.

I eventually found that there are actually 2 audio streams/tracks for the screen recording:

...
Audio #1
ID                                       : 2
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : mp4a-40-2
Duration                                 : 8 min 10 s
Source duration                          : 8 min 10 s
Bit rate mode                            : Constant
Bit rate                                 : 2 067 b/s
Nominal bit rate                         : 128 kb/s
Channel(s)                               : 2 channels
Channel layout                           : L R
Sampling rate                            : 44.1 kHz
Frame rate                               : 43.066 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 124 KiB (0%)
Source stream size                       : 124 KiB (0%)
Title                                    : Core Media Audio
Encoded date                             : UTC 2018-10-03 16:26:38
Tagged date                              : UTC 2018-10-03 16:34:50

Audio #2
ID                                       : 3
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : mp4a-40-2
Duration                                 : 8 min 10 s
Source duration                          : 8 min 10 s
Bit rate mode                            : Constant
Bit rate                                 : 109 kb/s
Nominal bit rate                         : 128 kb/s
Channel(s)                               : 2 channels
Channel layout                           : L R
Sampling rate                            : 44.1 kHz
Frame rate                               : 43.066 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 6.39 MiB (4%)
Source stream size                       : 6.40 MiB (4%)
Title                                    : Core Media Audio
Encoded date                             : UTC 2018-10-03 16:26:38
Tagged date                              : UTC 2018-10-03 16:34:50
...

The first audio stream is apparently empty as the audio for an 8 minute video is only 124 KiB. The second stream has the actual audio. Most players will default to the first audio stream, therefore making it appear that there is no audio for the recording.

I have found two options to resolve this:

First, if you are compressing the file in something like Handbrake, you can just make sure to select the second stream when choosing your audio tracks.

Here is a screenshot from Handbrake showing the track selector:

handbrake_audio

The second option is to use ffmpeg to copy the video and second audio stream to a new video, effectively making the second stream the primary.

You can do this with the following command:

ffmpeg -i input.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy output.mp4

This will take input.mp4, mark just the video and second audio stream for copying (-map 0:0 -map 0:2) and copy the marked audio and video to a new output.mp4. This will not alter the data or compress the video at all.

It is unlikely the 0:0 and 0:2 ids will be different on your recording, but you can verify your stream ids with ffmpeg -i input.mp4 and look for the stream numbers.