Given Some Conditions,
When A Certain Action-is-Taken or Specific-Stimulus-Occurs,
It Results In This Unexpected Situation/Response
iOS SDK 3.9.0
iOS 13.3
| // In a JWPlayerViewController, with player configured, etc. | |
| // For example, our BPA: https://github.com/jwplayer/jwplayer-ios-bestPracticeApps | |
| // Override the implementation of this JWAdDelegate method, | |
| // which reports when any ad event is emitted by the player. | |
| override func jwplayer(_ player: AnyObject, adEvent event: JWAdEvent) { | |
| super.jwplayer(player, adEvent: event) // When overriding (only), must call the `super` method. | |
| if let companions = event[.companions] as? [JWAdCompanion] { | |
| handleCompanion(companions.first) | |
| } |
| // | |
| // JWPlayer+Mute.swift | |
| // | |
| // Created by Amitai Blickstein on 6/1/22. | |
| // | |
| import Foundation | |
| import JWPlayerKit | |
| fileprivate let kVolumeKey = "kVolumeKey" |
| // | |
| // AudioInterruptionMonitor.swift | |
| // JWPlayerDemo | |
| // | |
| // Created by Amitai Blickstein | |
| // Copyright © 2019. All rights reserved. | |
| // | |
| // Credit: Code modified from Mohamed Afifi -> | |
| // https://github.com/quran/quran-ios/blob/master/QueuePlayer/AudioInterruptionMonitor.swift |
| WEBVTT | |
| NOTE This file was exported by MacCaption version 7.0.12 to comply with the WebVTT specification dated March 27, 2017. | |
| 01:00:09.306 --> 01:00:12.876 align:middle line:-1 position:31% size:43% | |
| - Hello again, it's Winged | |
| Nation presented by Sage Fruit. | |
| 01:00:12.876 --> 01:00:14.611 align:middle line:-1 position:50% size:33% | |
| Talking sprint car racing, |
| func onConnected(to device: JWCastingDevice) { | |
| DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { | |
| self.castController.cast() | |
| } | |
| } |
| class PrettyPrinter { | |
| static func print(json tryJSON: Any) -> String { | |
| var result = "\(tryJSON)" | |
| do { | |
| guard JSONSerialization.isValidJSONObject(tryJSON) else { return result } | |
| let data = try JSONSerialization.data(withJSONObject: tryJSON, options: .prettyPrinted) | |
| guard let string = String(data: data, encoding: .utf8) else { return result } | |
| result = string | |
| } | |
| catch { |
| <vmap:VMAP xmlns:vmap="http://www.iab.net/videosuite/vmap" version="1.0"> | |
| <vmap:AdBreak timeOffset="start" breakType="linear" breakId="preroll"> | |
| <vmap:AdSource id="preroll-ad" allowMultipleAds="false" followRedirects="true"> | |
| <AdTagURI templateType="vast3"> | |
| <![CDATA[preroll.xml]]> | |
| </AdTagURI> | |
| </vmap:AdSource> | |
| </vmap:AdBreak> | |
| <vmap:AdBreak timeOffset="50%" breakType="linear" breakId="midroll"> | |
| <vmap:AdSource id="overlay-1-ad" allowMultipleAds="false" followRedirects="true"> |
| // | |
| // NSObject+LogProperties.h | |
| // JWPlayer-SDK-iOS-Demo | |
| // | |
| // Created by Amitai Blickstein on 6/15/19. | |
| // Copyright © 2019 JWPlayer. All rights reserved. | |
| // | |
| #import <Foundation/Foundation.h> |
| // | |
| // AudioInterruptionMonitor.swift | |
| // QueuePlayer | |
| // | |
| // Created by Afifi, Mohamed on 4/29/19. | |
| // Copyright © 2019 Quran.com. All rights reserved. | |
| // | |
| // originally DL'ed from https://github.com/quran/quran-ios/blob/master/QueuePlayer/AudioInterruptionMonitor.swift | |
| import AVFoundation |