Livestream

The UIKit now supports live stream posts so you can create and watch live streams.

Installation

To enable live stream functionalities easily, we’ve provided AmityUIKitLiveStream, which is built on top of AmityUIKit and AmitySDK.

The plugin provides:

  • LiveStreamBroadcastViewController to create and broadcast live stream posts

  • LiveStreamPlayerViewController to watch live streams

The live stream plugin can be installed via Swift Package Manager with these steps:

  1. In Xcode, select File > Swift Packages > Add Package Dependency.

  2. Select Up to Next Major, then click Next.

  3. Select AmityUIKitLiveStream, then click Finish.

After successfully installing the plugin, you must override the live stream behaviors with these steps:

  1. Create AmityEventHandler subclass, and override live stream functions.

    import UIKit
    import AVKit
    import AmityUIKit
    import AmitySDK
    import AmityUIKitLiveStream
    import AmityVideoPlayerKit
    
    class CustomEventHandler: AmityEventHandler {
        
        override func createLiveStreamPost(
            from source: AmityViewController,
            targetId: String?,
            targetType: AmityPostTargetType,
            destinationToUnwindBackAfterFinish: UIViewController
        ) {
            
            let broadcastVC =
                LiveStreamBroadcastViewController(client: AmityUIKitManager.client, targetId: targetId, targetType: targetType)
            broadcastVC.destinationToUnwindBackAfterFinish = destinationToUnwindBackAfterFinish
            broadcastVC.modalPresentationStyle = .fullScreen
            source.present(broadcastVC, animated: true, completion: nil)
            
        }
        
        override func openLiveStreamPlayer(from source: AmityViewController, postId: String, streamId: String) {
            
            let playerVC = LiveStreamPlayerViewController(streamIdToWatch: streamId)
            source.present(playerVC, animated: true, completion: nil)
            
        }
        
        override func openRecordedLiveStreamPlayer(from source: AmityViewController, postId: String, stream: AmityStream) {
            let player = AmityRecordedStreamPlayer(client: AmityUIKitManager.client, stream: stream)
            let playerViewController = AVPlayerViewController()
            playerViewController.player = player
            source.present(playerViewController, animated: true) { [weak player] in
                player?.play()
            }
        }
        
    }
  2. Set the custom event handler for AmityUIKit.

    AmityUIKitManager.set(eventHandler: CustomEventHandler())

App Permissions

LiveStreamBroadcastViewController requires these permissions:

  1. Camera Permission - to broadcast live stream video

  2. Microphone Permission - to broadcast live stream audio

After LiveStreamBroadcastViewController is presented, it will prompt to ask permission automatically if needed. You must include these permission keys in your app’s Info.plist file:

  1. NSCameraUsageDescription

  2. NSMicrophoneUsageDescription

Last updated