Changelog
Welcome to the HotMic changelog, where we post the versions of the different applications and what was changed. Let us know if you have questions!
Updates:
- Added device_idto new_reactionpubnub message. This should resolve the issue of reactions not reflecting in iOS when reacted from Android.
To update to this version, make sure that your build.gradle(app) includes the following dependency:
implementation 'io.hotmic.player:hotmic-android-sdk:1.9.6'
NOTE: This is a preview release, feedback is welcome.
- Added HMPollObserving protocol to observe poll data for powering a custom polls interface
- Added HMParticipantObserving protocol to observe participant data for powering a custom people interface
- Updated dependencies
Here is more detail on each of those additions.
Poll Observing
To be notified of poll events as they occur, you can implement the HMMediaPlayerPollObserving protocol. Doing so will suppress the provided poll interface, allowing you to build your own interface.
When polls are fetched initially, the following function is called.
When a poll is created, the following function is called.
When a poll is updated, the following function is called.
When a poll is deleted, the following function is called.
Submit Poll Response
To respond to a poll from your custom poll interface, call the following function.
Participant Observing
To be notified when the participants changes, you can implement the HMMediaPlayerParticipantObserving protocol. Doing so will suppress the provided people interface, allowing you to build your own interface.
Each time the participants are changed, the following function is called.
To update to this version, run pod update HotMicMediaPlayer.
NOTE: This is a preview release, feedback is welcome.
- Updated dependencies
- Resolved an issue where people, tips, and polls sheets did not appear
To update to this version, run pod update HotMicMediaPlayer.
Updates:
- Target/compile sdk version upgraded to Android 34 (from 33)
- Using the android x library exoplayer in place of the deprecated com.google version
- Support for vertical video
- If using custom player, nothing will show on top of the player, including the player control overlay or countdown timer, for both vertical and 16:9 videos
To update to this version, make sure that your build.gradle(app) includes the following dependency:
implementation 'io.hotmic.player:hotmic-android-sdk:1.9.1-alpha1'
NOTE: This is a preview release, feedback is welcome.
- Added support for full-screen portrait video orientation
- Replaced updatePollsConfiguration(isAvailable:hasUnansweredPolls:) with updatePollsConfiguration (isAvailable:unansweredPollsCount:)
- Replaced playerViewControllerChatConfiguration(:) with playerViewController(_:viewControllerForContext:) and playerViewControllerChatHandler(_:)
- Removed chatHandlerDidTapShowPeople(_:), chatHandlerDidTapShowPolls(_:), and chatHandlerDidTapShowTipping(_:)
- Added close(), minimizeToPiPIfSupported(), showPeopleIfAvailable(), showPollsIfAvailable(), and showTipOptionsIfAvailable() to HMPlayerViewController
- Added prefersVideoControlsHidden parameter to initializePlayerViewController(streamID:delegate:supportsMinimizingToPiP:)
- Replaced playerViewController(_:playerForAssetAt:) with playerViewController(_:playerForOrientation:)
- Added loadSource(url:), displayImageOverlay(url:), removeImageOverlay(), displayCountdown(date:imageOverlayURL:), and removeCountdown() to HMPlayer
To update to this version, run pod update HotMicMediaPlayer.
- Custom Content Improvements - You can now replace the view area below the player with your own content, completely customizable to you. This brings out of beta our feature from 5.1.0.
- Added the ability to get data to populate the custom content area with chat information. More details are in the docs with the most relevant section changes listed below.
More Information:
When the player screen will display chat content, the following function is called allowing you to provide a custom chat handler and view controller to display. Provide nilif you'd like to use the default HotMic chat service and UI. Note the handler and view controller can be the same instance of your view controller if it conforms to HMChatHandler.
Chat Handler
The HMChatHandlerprotocol defines functions you implement if you'd like to provide a custom view controller for chat while utilizing the HotMic chat service. Your implementation needs to store a reference to an HMChatHandlerDelegateand call its functions to get information and inform the delegate when various events occur.
Store the delegate in a weak optional variable to call its functions in the future.
Store the host ID and use it to indicate when a chat was sent by the host.
Update the configuration of the people feature. Make it accessible in the interface if available. The number of people is provided, allowing you to display this in the interface, for example as a badge on the button.
Update the configuration of the polls feature. Make it accessible in the interface if available. The state of unanswered polls is provided, allowing you to display an indicator in the interface, for example as an "unread" badge on the button.
Update the configuration of the tipping feature. Make it accessible in the interface if available.
Update the top insets of your interface to avoid underlapping other interface elements.
Make the chat input toolbar visible.
Dismiss the chat input toolbar.
Dismiss the keyboard if it is visible.
Handle the backlog of chats and tips to display them in your interface.
Handle new chats, tips, and reactions to insert them into your interface. This function is called periodically to give you the opportunity to handle the pending items. Return true if handled or false if not. If not handled, the same items will be provided in the next invocation.
Remove a chat by ID.
Remove a tip by ID.
Remove a reaction by chat ID, user ID, and type.
Chat Handler Delegate
The HMChatHandlerDelegateprotocol defines functions your HMChatHandlerimplementation calls to get information and inform HotMic when various events occur.
Asks the delegate if the handler can display the chat input toolbar.
Asks the delegate if the currently authenticated user can moderate another user.
Asks the delegate if the currently authenticated user can make another user a moderator.
Inform the delegate the handler invoked send chat.
Inform the delegate the handler invoked add reaction.
Inform the delegate the handler invoked remove reaction.
Inform the delegate the handler invoked make user moderator.
Inform the delegate the handler invoked report chat.
Inform the delegate the handler invoked report tip.
Inform the delegate the handler invoked block user from chat.
Inform the delegate the handler invoked block user from tip.
Inform the delegate the handler invoked delete chat.
Inform the delegate the handler invoked delete tip.
Inform the delegate the handler invoked view a user's profile.
Inform the delegate the handler invoked the people feature.
Inform the delegate the handler invoked the polls feature.
Inform the delegate the handler invoked the tipping feature.
Get Chat Reactions
You can fetch reaction details for a specific chat. Use this to create an interface that lists people who reacted and which reaction they chose if you provide a custom view controller for chat.
- Replaced playerViewController(:, viewControllerForContext:) with playerViewControllerChatConfiguration(:)
- Removed HMPlayerViewController.CustomContentContext
How Custom Content Works
We have supported custom content in previous versions, allowing you to implement your own video player to display stream content, in lieu of the HotMic default video player. The code to do that looked something like this:
You can continue to use custom video players as before, but now you can now further customize the content on the player screen. You can now edit the section below the player, which typically includes chat content. To do this, you can provide your own view controller, which means all the content in the view controller (effectively everything below the player) is customized.
The following function is called allowing you to provide a custom view controller to display in a given context. Return nil if you'd like to use the default view controller.
At this time, this feature should be considered beta. You can add your own content to the view controller, but don't have information from HotMic (yet) to reproduce all existing features. In an upcoming release, you will get an interface to interact with data from the stream. This includes chats, reactions, and more. This will allow you to build a completely alternate interface with all the features of the default HotMic provided view controller.
To update to this version, run pod update HotMicMediaPlayer.
- Custom Content Improvements (Beta) - You can now replace the view area below the player with your own content, completely customizable to you.
How Custom Content Works
We have supported custom content in previous versions, allowing you to implement your own video player to display stream content, in lieu of the HotMic default video player. This still exists. Now, the SDK will allow you to replace the default chat fragment shown under the player with your own custom fragment. For this, while calling the player, provide a custom fragment using the api setChatFragment. A sample builder call will look something like:
At this time, this feature should be considered alpha. You can add your own fragment, but don't have information from HotMic (yet) to reproduce all existing features. In an upcoming release, you will get an interface to interact with data from the stream. This includes chats, reactions, and more. This will allow you to build a completely alternate interface with all the features of the default HotMic provided fragment.
Upcoming releases will complete the ability to customize this view, including:
- Allowing you to have you own layout, and specify where the player, chat and other fragments should be shown. For example, you can choose to remove the chat fragment OR place the player fragment in a separate area of the screen OR shrink the chat layout and introduce a new custom panel in between.
- We will expose the chat apis and related data, using which, you can build and style your own custom chat fragment.
To update to this version, make sure that your build.gradle(app) includes the following dependency:
implementation 'io.hotmic.player:hotmic-android-sdk:1.9.0-alpha1'
- Custom Content Improvements (Beta) - You can now replace the view area below the player with your own content, completely customizable to you.
- Now built from Xcode 15 (supporting iOS 17). You may need to use Xcode 15 to use this version of the SDK.
- Several dependencies were updated to improve performance and reduce bugs.
How Custom Content Works
We have supported custom content in previous versions, allowing you to implement your own video player to display stream content, in lieu of the HotMic default video player. The code to do that looked something like this:
You can continue to use custom video players as before, but now you can now further customize the content on the player screen. You can now edit the section below the player, which typically includes chat content. To do this, you can provide your own view controller, which means all the content in the view controller (effectively everything below the player) is customized.
The following function is called allowing you to provide a custom view controller to display in a given context. Return nil if you'd like to use the default view controller.
At this time, this feature should be considered beta. You can add your own content to the view controller, but don't have information from HotMic (yet) to reproduce all existing features. In an upcoming release, you will get an interface to interact with data from the stream. This includes chats, reactions, and more. This will allow you to build a completely alternate interface with all the features of the default HotMic provided view controller.
To update to this version, run pod update HotMicMediaPlayer.