Handle errors with the Wowza Flowplayer Apple SDK

The Wowza Flowplayer Apple SDK provides the ability to track and handle errors, emitting them as events for delegates and through the NotificationCenter.

For a good user experience, you can listen to these error events and examine the error objects. You can then handle errors gracefully by implementing error-handling logic that makes your iOS or tvOS application more reliable and robust.

When working with this SDK, you can leverage the Ad Error, PlayerError, and Swift.Error error types.

AdError

AdError is a custom error type specific to ad-related and DAI stream-related issues in the Apple SDK. It's thrown for any issues triggered by ads, such as when ads are unavailable, ad loading fails, ads fail to display, or when there's an invalid ad request.

This table includes ad error conditions to help with troubleshooting. DAI-stream related errors for iOS and tvOS are mapped to the IMAAdError class and IMAErrorCode enumeration, but custom codes are also available.

Error condition Description
adDisplayError An error occurred during ad display.
adLoadFailed Failed to load an ad.
adSlotNotVisible The ad slot is not visible on the page.
apiError Generic invalid usage of the API.
companionAdLoadingFailed A companion ad failed to load or render.
contentPlayheadMissing Content playhead was not passed in, but a list of ads was returned from the server.
invalidAdRequest An invalid ad request occurred.
invalidArguments Invalid arguments were provided to SDK methods.
noAdAvailable No ad is available to play.
noAvPlayerInstance No AVPlayer instance is available for playback.
osRuntimeTooOld The version of the operating system runtime is too old.
playlistMalformedResponse Ads list response was malformed.
requiredListenersNotAdded Listener for at least one of the required VAST events was not added.
unknownError An unexpected error occurred and the cause is unknown.
vastAssetNotFound No assets were found in the VAST ad response.
vastEmptyResponse A VAST response containing a single tag with no child tags was returned.
vastInvalidUrl A VAST wrapper loaded and a subsequent wrapper or inline ad load resulted in a 404 response code.
vastLinearAssetMismatch Assets were found in the VAST ad response for a linear ad, but none of them matched the video player’s capabilities.
vastLoadTimeout The VAST URI provided was either unavailable or reached a timeout as defined by the video player.
vastMalformedResponse The ad response was not recognized as a valid VAST ad.
vastMediaLoadTimeout Failed to load media assets from a VAST response within the default timeout.
vastTooManyRedirects The maximum number of VAST wrapper redirects was reached.
vastTraffickingError A trafficking error occurred. The video player received an ad type that it wasn't expecting and/or it cannot display.
videoElementRequired A video element was not specified where it was required.
videoElementUsed Another VideoAdsManager is still using the video. It must be unloaded before another ad can play on the same element.
videoPlayError There was an error playing the video ad.

IMAMetadata object

The IMAMetadata struct is designed to capture information related to ad playback and errors in the context of Google's Interactive Media Ads (IMA) framework.

You can use this object with error events to understand what caused an underlying advertising error. For example, to get useful metadata about a current IMA instance, combine this object with the AdError type and pass it as an optional parameter to the player(_:didAdFailWith:for:with:) method. The Apple SDK only returns the IMAMetadata object when an error occurs with a particular ad.

To handle cases where an ad fails to load or display the ad type and IMA snapshot, see the FlowplayerAdDelegate method or the NotificationCenter.

The following table describes the properties you can use with the IMAMetadata object.

Properties Description
type The current type of metadata.
adBreakTime The current ad break time in seconds.
adRemainingSeconds The remaining ad display time in seconds.
adMuted A boolean flag indicating if the ads were muted or not.
adDurationSeconds The total duration of the ads in seconds.
adErrorReason The error reason if an ad error occurred.
adVastError The VAST (Video Ad Serving Template) error reason if applicable.
adVastErrorType The VAST error type if applicable.
adRequestLoadTime The total time required to load the ads in seconds.

PlayerError

PlayerError is a custom error type specific to player-related issues in the Apple SDK. It's thrown for any issues triggered by the player, such as invalid configuration, invalid access token, or general playback errors. This table includes player error conditions to help with troubleshooting.

Error condition Description
invalidConfig The player configuration is invalid.
invalidAccessToken The access token provided for authentication is invalid.
playbackError(_ error: Error) An error occurred during playback. Returns a Swift.Error as its argument.

Swift.Error

Within the Apple SDK framework, we take advantage of the native Swift way of defining and handling errors using the Error protocol. See Swift error type for more information.