Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS 13 Migration Guide #55

Closed
ceaglest opened this issue Sep 10, 2019 · 1 comment
Closed

iOS 13 Migration Guide #55

ceaglest opened this issue Sep 10, 2019 · 1 comment
Assignees

Comments

@ceaglest
Copy link
Contributor

The guide explains how to prepare your Twilio Video apps for compatibility with iOS 13.

Supported SDKs

We recommend that you use the latest patch releases of our SDKs. At this time, we have verified our 2.10.1, and 3.0.0-beta4 SDKs for compatibility with iOS 13.0-beta8 and 13.1-beta2.

Known Issues

We are tracking several issues related to both the Video SDK itself and the example code.

SDK

  1. Catalyst Support

Twilio Video does not support Catalyst applications at this time. If you are interested in this feature please let us know in #49.

  1. TVICameraSource - Background Task Completion Errors

When TVICameraSource starts capturing it begins a background task to ensure that the video pipeline is flushed in the case of an interruption. In iOS 13.0, ending background tasks might send spurious logs to the console:

2019-09-03 13:44:15.345 VideoCallKitQuickStart[983:48546] Video track created

// After backgrounding the application

2019-09-03 13:44:21.979 VideoCallKitQuickStart[983:48546] Can't end BackgroundTask: no background task exists with identifier 3 (0x3), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.

Status: We have given feedback to Apple, and hope that this issue can be resolved during the iOS 13 release cycle.

  1. TVICameraSource - Distorted video after device usage interruption

See issue #53.

Status: We are still investigating this report and may issue patch releases of our SDK to address it.

  1. TVIVideoView - OpenGL ES crashes on iOS Simulator

The SDK will crash when rendering decoded H.264 video, or any other frames in the TVIPixelFormatYUV420BiPlanarVideoRange or TVIPixelFormatYUV420BiPlanarFullRange formats when using the iOS 13.0 simulator.

Resolution: Update Twilio Video to 3.0.0-beta4, or 2.10.2 (coming soon). Use an older simulator model for testing if your deployment target is earlier than 13.0.

  1. TVIVideoView - Metal on the iOS Simulator

At the moment, Twilio Video does not support Metal on the iOS 13.0 simulator.

Status: We will provide an update once iOS 13.0 and macOS 10.15 are released.

  1. UIScene & UIApplication Lifecycle

iOS 13 introduces new UIScene APIs to better manage navigation hierarchy and lifecycle events. Twilio Video has several classes that register for UIApplication lifecycle notifications, and continue to do so in iOS 13:

  • TVIVideoView
  • TVICameraSource
  • TVICameraCapturer (2.x only)
  • TVIRoom (2.x only)

Status: We are currently investigating the impact of UIScene, and compatibility with Twilio Video classes.

  1. Swift UI

Status: We are still evaluating Swift UI on iOS 13. Integrators should note that TVIVideoView does not specify an intrinsicContentSize.

  1. iPad OS

iPad OS 13.0 will be released on September 30th and offers a brand new multi-tasking interface.

Status: We are still evaluating iPad OS 13.0 for compatibility and expect to provide an update soon.

Sample Code & Framework Integrations

  1. CallKit

Starting a TVIDefaultAudioDevice might fail when the Participant’s device reports an incoming call to CallKit while backgrounded in iOS 12.4 or 13.0-beta8.

Status: This issue should be resolved in iOS 13.1. We will retest with the latest beta release to confirm.

  1. ReplayKit

The ReplayKit Framework received some significant enhancements in iOS 13, resolving problems with delayed application audio and the reliability of RPScreenRecorder. However, there is also a serious bug in iOS 13.0-beta8 (fixed in 13.1-beta2) that can cause a crash when using RPSystemBroadcastPickerView.

Using RPBroadcastSystemPickerView on iOS 13.0-beta8 throws an NSInvalidArgumentException.

If you use a broadcast extension in iOS 13.0-beta8 there is also a memory leak that will result in a crash when the microphone is enabled. This crash is resolved in iOS 13.1-beta2.

Broadcasting with microphone audio on iOS 13.0-beta8 and hitting the memory limit for an extension.

If you use ExampleReplayKitAudioCapturer to capture application audio samples, then you may experience distortion on iOS 13.0 due to changes in the audio format used by ReplayKit.

Resolution: Refer to the updated example app (master, 3.0.0-beta) for iOS 13 support. Consider disabling RPBroadcastSystemPickerView on iOS 13.0 using a runtime check until iOS 13.1 is available.

  1. Swift Naming Conflicts (3.0.0-beta)

When compiling the 3.0.0-beta examples, the Objective-C class TVIAudioCodec conflicts with the AudioCodec type definition from AudioToolbox.framework when compiled with Xcode 11.

Resolution: The examples were updated to eliminate the conflict. If you are experiencing conflicts with the Swift translation of Twilio Video classes, then refer to the classes using their fully qualified name:

// Both frameworks define the Swift name AudioCodec
import AudioToolbox
import TwilioVideo

// Specify the Twilio class by its full name
var audioCodec: TwilioVideo.AudioCodec?

Feedback

If you’d like to discuss iOS 13 further, or have more questions feel free to reply to this issue or to any of the linked issues.

@ceaglest
Copy link
Contributor Author

This content has been added to an official guide.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant