dailymotion / dailymotion-swift-player-sdk-ios

Dailymotion Player SDK for iOS in Swift
MIT License
34 stars 15 forks source link

Multiple player instance in UICollectionView with rejected_inactive_tab error #68

Open staceypyee opened 2 years ago

staceypyee commented 2 years ago

I would like to have multiple video instance in a horizontal UICollectionView which keep the last playing state, something like the Home screen in dailymotion iOS app downloadable from App store. User should be able to continue from the previous fetch video.

How can we do this? I don't see any sample from the sample code

What have been done: I have tried to put DMPlayerViewController view as a view in the collection view cell. Whenever the list is populated, playerViewController?.load(videoId: videoId, params: "{ \"autoplay\": false }", completion: nil) will be triggered for each cells.

Whenever the screen is loaded with the collection view cells, these are the logs produced with Code:

public func player(_ player: DMPlayerViewController, didReceiveEvent event: PlayerEvent) {
        logger.log(message: "Player event \(event)", LoggingOption: .debug)
        switch event {
        case .timeEvent(name: let name, time: let time):
            logger.log(message: "Player event timeEvent \(name) time \(time)", LoggingOption: .debug)
        case .namedEvent(name: let name, data: let data):
            logger.log(message: "Player event namedEvent \(name) data \(data)", LoggingOption: .debug)
        case .errorEvent(error: let error):
            logger.log(message: "Player event errorEvent \(error)", LoggingOption: .debug)
        }
   }

Result:

📖
XXDailyMotionPlayer.player(_:didReceiveEvent:) 
Player event namedEvent(name: "scalemodechange", data: Optional(["scaleMode": "fit"]))

📖
XXDailyMotionPlayer.player(_:didReceiveEvent:) 
Player event namedEvent scalemodechange data Optional(["scaleMode": "fit"])
📖
XXDailyMotionPlayer.playerDidInitialize(_:)
playerDidInitialize <DailymotionPlayerSDK.DMPlayerViewController: 0x13679d3f0>
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:)
Player event namedEvent(name: "apiready", data: nil)
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:) 
Player event namedEvent apiready data nil
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:)
Player event namedEvent(name: "volumechange", data: Optional(["volume": "1"]))
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:)
Player event namedEvent volumechange data Optional(["volume": "1"])
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:)
Player event timeEvent(name: "videochange", time: 87.0)
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:)
Player event timeEvent videochange time 87.0
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:) 
Player event namedEvent(name: "playback_ready", data: nil)
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:)
Player event namedEvent playback_ready data nil
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:) 
Player event namedEvent(name: "playback_ready", data: nil)
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:)
Player event namedEvent playback_ready data nil
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:) 
Player event namedEvent(name: "subtitlesavailable", data: Optional(["subtitles[]": "en"]))
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:) 
Player event namedEvent subtitlesavailable data Optional(["subtitles[]": "en"])
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:)
Player event namedEvent(name: "subtitlechange", data: Optional(["subtitle": "-1"]))
📖
XXDailyMotionPlayer.player(_:didReceiveEvent:) 
Player event namedEvent subtitlechange data Optional(["subtitle": "-1"])

I have a custom play pause button which will trigger dmPlayerViewController.play() or dmPlayerViewController.pause()

Whenever I tapped on the play button, I always saw this error in the logs: Player event namedEvent(name: "playback_resolution", data: Optional(["status": "rejected", "reason": "rejected_inactive_tab"])) What could be the reason for this error?

In the documentation, embed multiple players only appears for web. How can we do this for iOS?

Thanks

staceypyee commented 2 years ago

Is there any updates?

fdobjenschi commented 2 years ago

Hello @staceypyee,

After we analysed your problem and discussed with the team the issue seems to be that the app is playing one or more videos that are not yet visible on the screen. Can you please make sure that the videos are visible when play method is called and also please check that autoplay is off also. Let us know if we can help you further .

Thanks, Florin