AgoraIO-Extensions / AgoraIO-Extensions/Agora-Flutter-SDK
iOS PIP local camera issue
- Dominant language
- Dart
- Stars
- 795
- Forks
- 448
- Avg merge
- 12h 19m
- Merged PRs (30d)
- 14
Description
### Version of the agora_rtc_engine
6.3.2-sp.43216.b.5(release/6.3)
### Platforms affected
- [ ] Android
- [x] iOS
- [ ] macOS
- [ ] Windows
- [ ] Web
### Information
I tried to use the PIP feature on iOS following the guide at the given link. As described in the iOS Setup section, I selected "Audio, Airplay, and Picture in Picture" under Background Modes. However, I couldn't configure the following setting because it needs to be set within the native code:
> iOS ≥ 16: Set `multitaskingCameraAccessEnabled` to `true` in capture session (coming soon)
I suspect this is causing the local camera to disconnect when entering PIP mode.
@peilinok Do you have plans to fix this issue? If not, is there any way I can maintain video calls while in PIP mode?
### Steps to reproduce
1. Start video call (both local, remote video working normally)
2. Switch app to background to activate PIP mode
3. Check in PIP window
### Expected results
- Local camera video should continue streaming in PIP mode
### Actual results
- Local video: Freezes at the point of PIP entry
- Remote Video: Continues normal streaming in PIP
### Code sample
https://github.com/AgoraIO-Extensions/Agora-Flutter-SDK/blob/release/6.3/example/lib/examples/advanced/picture_in_picture/picture_in_picture.dart
### Screenshots or Video
https://github.com/user-attachments/assets/56cccf1a-6417-4a36-b964-47ce463c90c1
### Logs
Logs
```console
flutter: pipPossible: true
flutter: [setupPip] options: {autoEnterEnabled: true, sourceContentView: 0, contentView: 0, videoStreams: [{connection: {channelId: voice, localUid: 0}, canvas: {uid: 0, renderMode: 1, mirrorMode: 1, setupMode: 1, sourceType: 0}}], contentViewLayout: {padding: 0, spacing: 2, row: 1, column: 0}, preferredContentWidth: 375, preferredContentHeight: 667, controlStyle: 2}
flutter: [onPipStateChanged] state: AgoraPipState.pipStateStarted, error: null
flutter: [onPipStateChanged] state: AgoraPipState.pipStateStopped, error: null
flutter: [didChangeAppLifecycleState]: AppLifecycleState.inactive
flutter: [onPipStateChanged] state: AgoraPipState.pipStateStarted, error: null
flutter: [didChangeAppLifecycleState]: AppLifecycleState.hidden
flutter: [didChangeAppLifecycleState]: AppLifecycleState.paused
flutter: [didChangeAppLifecycleState]: AppLifecycleState.hidden
flutter: [didChangeAppLifecycleState]: AppLifecycleState.inactive
flutter: [didChangeAppLifecycleState]: AppLifecycleState.resumed
flutter: [onPipStateChanged] state: AgoraPipState.pipStateStopped, error: null
flutter: [didChangeAppLifecycleState]: AppLifecycleState.inactive
flutter: [didChangeAppLifecycleState]: AppLifecycleState.resumed
flutter: [didChangeAppLifecycleState]: AppLifecycleState.inactive
flutter: [onPipStateChanged] state: AgoraPipState.pipStateStarted, error: null
flutter: [didChangeAppLifecycleState]: AppLifecycleState.hidden
flutter: [didChangeAppLifecycleState]: AppLifecycleState.paused
flutter: [onPipStateChanged] state: AgoraPipState.pipStateStopped, error: null
```
### Flutter Doctor output
Doctor output
Contributor guide
Assessment
This issue has not been assessed yet.