diff --git a/MobilePlayer.xcodeproj/project.pbxproj b/MobilePlayer.xcodeproj/project.pbxproj index 762e1c6..f9636c0 100644 --- a/MobilePlayer.xcodeproj/project.pbxproj +++ b/MobilePlayer.xcodeproj/project.pbxproj @@ -8,8 +8,36 @@ /* Begin PBXBuildFile section */ 5F31B7B91BBAE39900EF50C4 /* MobilePlayerNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31B7B81BBAE39900EF50C4 /* MobilePlayerNotification.swift */; }; + 5F3F03C31C18E73200EF50C4 /* PrerollExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3F03C21C18E73200EF50C4 /* PrerollExampleViewController.swift */; }; + 5F3F03C51C18E74000EF50C4 /* PauseOverlayExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3F03C41C18E74000EF50C4 /* PauseOverlayExampleViewController.swift */; }; + 5F3F03C71C18E75300EF50C4 /* PostrollExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3F03C61C18E75300EF50C4 /* PostrollExampleViewController.swift */; }; + 5F3F03CB1C18EA2A00EF50C4 /* PrerollOverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3F03CA1C18EA2A00EF50C4 /* PrerollOverlayViewController.swift */; }; + 5F3F03CD1C18EA4900EF50C4 /* PrerollOverlayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F3F03CC1C18EA4900EF50C4 /* PrerollOverlayViewController.xib */; }; + 5F3F03CF1C18F3DA00EF50C4 /* PauseOverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3F03CE1C18F3DA00EF50C4 /* PauseOverlayViewController.swift */; }; + 5F3F03D11C18FED600EF50C4 /* PauseOverlayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F3F03D01C18FED600EF50C4 /* PauseOverlayViewController.xib */; }; + 5F3F03D31C1903E200EF50C4 /* PostrollOverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3F03D21C1903E200EF50C4 /* PostrollOverlayViewController.swift */; }; + 5F3F03D51C1903EF00EF50C4 /* PostrollOverlayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F3F03D41C1903EF00EF50C4 /* PostrollOverlayViewController.xib */; }; + 5F4CED431C054A5200EF50C4 /* WatermarkedPlayer.json in Resources */ = {isa = PBXBuildFile; fileRef = 5F4CED421C054A5200EF50C4 /* WatermarkedPlayer.json */; }; + 5F56CB721C0407F200EF50C4 /* MobilePlayerExampleStores.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F56CB711C0407F200EF50C4 /* MobilePlayerExampleStores.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F56CB7C1C04080500EF50C4 /* ProductStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F56CB7B1C04080500EF50C4 /* ProductStore.swift */; }; + 5F56CB841C040E8D00EF50C4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F56CB831C040E8D00EF50C4 /* AppDelegate.swift */; }; + 5F56CB8D1C040E8D00EF50C4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5F56CB8C1C040E8D00EF50C4 /* Assets.xcassets */; }; + 5F56CB901C040E8D00EF50C4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F56CB8E1C040E8D00EF50C4 /* LaunchScreen.storyboard */; }; + 5F56CB9B1C040E8E00EF50C4 /* MobilePlayerExamplesUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F56CB9A1C040E8E00EF50C4 /* MobilePlayerExamplesUITests.swift */; }; + 5F56CBA31C040ED400EF50C4 /* MobilePlayerExampleStores.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F56CB6F1C0407F200EF50C4 /* MobilePlayerExampleStores.framework */; }; + 5F56CBA41C040ED400EF50C4 /* MobilePlayerExampleStores.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5F56CB6F1C0407F200EF50C4 /* MobilePlayerExampleStores.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 5F56CBA91C04102300EF50C4 /* ExamplesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F56CBA81C04102300EF50C4 /* ExamplesTableViewController.swift */; }; + 5F56CBAC1C04164100EF50C4 /* MobilePlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE554D4F1AFE6CCD00DAC7E9 /* MobilePlayer.framework */; }; + 5F56CBAD1C04164100EF50C4 /* MobilePlayer.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE554D4F1AFE6CCD00DAC7E9 /* MobilePlayer.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 5F56CBB11C04178C00EF50C4 /* PlainExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F56CBB01C04178C00EF50C4 /* PlainExampleViewController.swift */; }; + 5F56CBB31C04179700EF50C4 /* ExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F56CBB21C04179700EF50C4 /* ExampleViewController.swift */; }; + 5F56CBB51C041DA200EF50C4 /* ConfigExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F56CBB41C041DA200EF50C4 /* ConfigExampleViewController.swift */; }; + 5F56CBB71C041DAE00EF50C4 /* RemoteConfigExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F56CBB61C041DAE00EF50C4 /* RemoteConfigExampleViewController.swift */; }; 5F6AF3701BA96EF000EF50C4 /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F6AF36F1BA96EF000EF50C4 /* Button.swift */; }; 5F749C261BAB2C8900EF50C4 /* Element.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F749C251BAB2C8900EF50C4 /* Element.swift */; }; + 5F7974781C17B02200EF50C4 /* OverlayExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F7974771C17B02200EF50C4 /* OverlayExampleViewController.swift */; }; + 5F79747A1C17B67F00EF50C4 /* BuyOverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F7974791C17B67F00EF50C4 /* BuyOverlayViewController.swift */; }; + 5F79747C1C17ED7800EF50C4 /* TimedOverlayExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F79747B1C17ED7800EF50C4 /* TimedOverlayExampleViewController.swift */; }; 5F7CDF471BBEB6C400EF50C4 /* YoutubeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F7CDF461BBEB6C400EF50C4 /* YoutubeParser.swift */; }; 5F7CDF491BBEB6DD00EF50C4 /* StateHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F7CDF481BBEB6DD00EF50C4 /* StateHelper.swift */; }; 5F7CDF4B1BBEB6F900EF50C4 /* VolumeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F7CDF4A1BBEB6F900EF50C4 /* VolumeView.swift */; }; @@ -49,22 +77,12 @@ 5FBFEA361BA8AD0200EF50C4 /* SliderConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FBFEA351BA8AD0200EF50C4 /* SliderConfig.swift */; }; 5FD756941BAC494800EF50C4 /* WatermarkConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FD756931BAC494800EF50C4 /* WatermarkConfig.swift */; }; 5FD756961BAC4AE700EF50C4 /* WatermarkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FD756951BAC4AE700EF50C4 /* WatermarkViewController.swift */; }; - C305DED81B21068700DD9632 /* Minimal.json in Resources */ = {isa = PBXBuildFile; fileRef = C305DED71B21068700DD9632 /* Minimal.json */; }; + 5FF829651C168ACC00EF50C4 /* AdvancedConfigExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF829641C168ACC00EF50C4 /* AdvancedConfigExampleViewController.swift */; }; + 5FF829671C168E4700EF50C4 /* ProgConfigExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF829661C168E4700EF50C4 /* ProgConfigExampleViewController.swift */; }; + 5FF829691C16924400EF50C4 /* MovielalaPlayer.json in Resources */ = {isa = PBXBuildFile; fileRef = 5FF829681C16924400EF50C4 /* MovielalaPlayer.json */; }; C308B3C01B150F7600CB1515 /* MobilePlayerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = C308B3BE1B150F7600CB1515 /* MobilePlayerConfig.swift */; }; - C35E68BF1B7D06F700594CE6 /* PlayerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35E68BE1B7D06F700594CE6 /* PlayerViewController.swift */; }; - C361643D1B6725C2000CE00E /* Hulu.json in Resources */ = {isa = PBXBuildFile; fileRef = C361643C1B6725C2000CE00E /* Hulu.json */; }; - C36164411B673D04000CE00E /* Netflix.json in Resources */ = {isa = PBXBuildFile; fileRef = C36164401B673D04000CE00E /* Netflix.json */; }; - C38833C91B266C2500918C94 /* Skin.json in Resources */ = {isa = PBXBuildFile; fileRef = C38833C81B266C2500918C94 /* Skin.json */; }; - C38FA6511B33279600BE17E8 /* ADBannerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38FA6501B33279600BE17E8 /* ADBannerViewController.swift */; }; - C38FA6531B33530C00BE17E8 /* PreRollViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38FA6521B33530C00BE17E8 /* PreRollViewController.swift */; }; C3A406AF1B27AA8C00D1833D /* UIColor+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A406AE1B27AA8C00D1833D /* UIColor+Hex.swift */; }; C3A406B01B27AA9500D1833D /* UIColor+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A406AE1B27AA8C00D1833D /* UIColor+Hex.swift */; }; - C3A9AEDE1B048B5600D0C842 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A9AEDD1B048B5600D0C842 /* AppDelegate.swift */; }; - C3A9AEE81B048B5600D0C842 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3A9AEE61B048B5600D0C842 /* LaunchScreen.xib */; }; - C3A9AEF41B048B5700D0C842 /* MobilePlayerExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A9AEF31B048B5700D0C842 /* MobilePlayerExampleTests.swift */; }; - C3A9AF031B0491B500D0C842 /* MobilePlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE554D4F1AFE6CCD00DAC7E9 /* MobilePlayer.framework */; }; - C3A9AF041B0491B500D0C842 /* MobilePlayer.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE554D4F1AFE6CCD00DAC7E9 /* MobilePlayer.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - C3A9AF0E1B049A4D00D0C842 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3A9AF0D1B049A4D00D0C842 /* Images.xcassets */; }; CE554D551AFE6CCD00DAC7E9 /* MobilePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = CE554D541AFE6CCD00DAC7E9 /* MobilePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; CE554D5B1AFE6CCD00DAC7E9 /* MobilePlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE554D4F1AFE6CCD00DAC7E9 /* MobilePlayer.framework */; }; CE554D731AFE6EBB00DAC7E9 /* MobilePlayerOverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE554D6E1AFE6EBB00DAC7E9 /* MobilePlayerOverlayViewController.swift */; }; @@ -72,21 +90,21 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - C38BEEA71B72E2AD009E4F64 /* PBXContainerItemProxy */ = { + 5F56CB971C040E8E00EF50C4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE554D461AFE6CCD00DAC7E9 /* Project object */; proxyType = 1; - remoteGlobalIDString = C3A9AED81B048B5600D0C842; - remoteInfo = MobilePlayerExample; + remoteGlobalIDString = 5F56CB801C040E8D00EF50C4; + remoteInfo = MobilePlayerExamples; }; - C3A9AEEE1B048B5700D0C842 /* PBXContainerItemProxy */ = { + 5F56CBA51C040ED400EF50C4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE554D461AFE6CCD00DAC7E9 /* Project object */; proxyType = 1; - remoteGlobalIDString = C3A9AED81B048B5600D0C842; - remoteInfo = MobilePlayerExample; + remoteGlobalIDString = 5F56CB6E1C0407F200EF50C4; + remoteInfo = MobilePlayerExampleStores; }; - C3A9AF051B0491B500D0C842 /* PBXContainerItemProxy */ = { + 5F56CBAE1C04164100EF50C4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE554D461AFE6CCD00DAC7E9 /* Project object */; proxyType = 1; @@ -103,13 +121,14 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - C3A9AF071B0491B500D0C842 /* Embed Frameworks */ = { + 5F56CBA71C040ED500EF50C4 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - C3A9AF041B0491B500D0C842 /* MobilePlayer.framework in Embed Frameworks */, + 5F56CBA41C040ED400EF50C4 /* MobilePlayerExampleStores.framework in Embed Frameworks */, + 5F56CBAD1C04164100EF50C4 /* MobilePlayer.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -121,8 +140,38 @@ 460022C3A2D4FC80A1D57D18 /* Pods-MobilePlayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MobilePlayerTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-MobilePlayerTests/Pods-MobilePlayerTests.release.xcconfig"; sourceTree = ""; }; 505CCD80FF878F8F17EC4627 /* Pods_MobilePlayerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MobilePlayerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5F31B7B81BBAE39900EF50C4 /* MobilePlayerNotification.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MobilePlayerNotification.swift; sourceTree = ""; }; + 5F3F03C21C18E73200EF50C4 /* PrerollExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrerollExampleViewController.swift; sourceTree = ""; }; + 5F3F03C41C18E74000EF50C4 /* PauseOverlayExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PauseOverlayExampleViewController.swift; sourceTree = ""; }; + 5F3F03C61C18E75300EF50C4 /* PostrollExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostrollExampleViewController.swift; sourceTree = ""; }; + 5F3F03CA1C18EA2A00EF50C4 /* PrerollOverlayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrerollOverlayViewController.swift; sourceTree = ""; }; + 5F3F03CC1C18EA4900EF50C4 /* PrerollOverlayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PrerollOverlayViewController.xib; sourceTree = ""; }; + 5F3F03CE1C18F3DA00EF50C4 /* PauseOverlayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PauseOverlayViewController.swift; sourceTree = ""; }; + 5F3F03D01C18FED600EF50C4 /* PauseOverlayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PauseOverlayViewController.xib; sourceTree = ""; }; + 5F3F03D21C1903E200EF50C4 /* PostrollOverlayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostrollOverlayViewController.swift; sourceTree = ""; }; + 5F3F03D41C1903EF00EF50C4 /* PostrollOverlayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PostrollOverlayViewController.xib; sourceTree = ""; }; + 5F4CED421C054A5200EF50C4 /* WatermarkedPlayer.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = WatermarkedPlayer.json; path = Resources/WatermarkedPlayer.json; sourceTree = ""; }; + 5F56CB6F1C0407F200EF50C4 /* MobilePlayerExampleStores.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MobilePlayerExampleStores.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5F56CB711C0407F200EF50C4 /* MobilePlayerExampleStores.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MobilePlayerExampleStores.h; sourceTree = ""; }; + 5F56CB731C0407F200EF50C4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5F56CB7B1C04080500EF50C4 /* ProductStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProductStore.swift; sourceTree = ""; }; + 5F56CB811C040E8D00EF50C4 /* MobilePlayerExamples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MobilePlayerExamples.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 5F56CB831C040E8D00EF50C4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 5F56CB8C1C040E8D00EF50C4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 5F56CB8F1C040E8D00EF50C4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 5F56CB911C040E8D00EF50C4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5F56CB961C040E8E00EF50C4 /* MobilePlayerExamplesUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MobilePlayerExamplesUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 5F56CB9A1C040E8E00EF50C4 /* MobilePlayerExamplesUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MobilePlayerExamplesUITests.swift; sourceTree = ""; }; + 5F56CB9C1C040E8E00EF50C4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5F56CBA81C04102300EF50C4 /* ExamplesTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplesTableViewController.swift; sourceTree = ""; }; + 5F56CBB01C04178C00EF50C4 /* PlainExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlainExampleViewController.swift; sourceTree = ""; }; + 5F56CBB21C04179700EF50C4 /* ExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleViewController.swift; sourceTree = ""; }; + 5F56CBB41C041DA200EF50C4 /* ConfigExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfigExampleViewController.swift; sourceTree = ""; }; + 5F56CBB61C041DAE00EF50C4 /* RemoteConfigExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteConfigExampleViewController.swift; sourceTree = ""; }; 5F6AF36F1BA96EF000EF50C4 /* Button.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Button.swift; path = Views/Button.swift; sourceTree = ""; }; 5F749C251BAB2C8900EF50C4 /* Element.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Element.swift; path = Views/Element.swift; sourceTree = ""; }; + 5F7974771C17B02200EF50C4 /* OverlayExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayExampleViewController.swift; sourceTree = ""; }; + 5F7974791C17B67F00EF50C4 /* BuyOverlayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BuyOverlayViewController.swift; sourceTree = ""; }; + 5F79747B1C17ED7800EF50C4 /* TimedOverlayExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimedOverlayExampleViewController.swift; sourceTree = ""; }; 5F7CDF461BBEB6C400EF50C4 /* YoutubeParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = YoutubeParser.swift; path = MobilePlayer/Parsers/YoutubeParser.swift; sourceTree = SOURCE_ROOT; }; 5F7CDF481BBEB6DD00EF50C4 /* StateHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = StateHelper.swift; path = Helpers/StateHelper.swift; sourceTree = ""; }; 5F7CDF4A1BBEB6F900EF50C4 /* VolumeView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = VolumeView.swift; path = Views/VolumeView.swift; sourceTree = ""; }; @@ -162,26 +211,15 @@ 5FBFEA351BA8AD0200EF50C4 /* SliderConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SliderConfig.swift; sourceTree = ""; }; 5FD756931BAC494800EF50C4 /* WatermarkConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatermarkConfig.swift; sourceTree = ""; }; 5FD756951BAC4AE700EF50C4 /* WatermarkViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatermarkViewController.swift; sourceTree = ""; }; + 5FF829641C168ACC00EF50C4 /* AdvancedConfigExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvancedConfigExampleViewController.swift; sourceTree = ""; }; + 5FF829661C168E4700EF50C4 /* ProgConfigExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProgConfigExampleViewController.swift; sourceTree = ""; }; + 5FF829681C16924400EF50C4 /* MovielalaPlayer.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = MovielalaPlayer.json; path = Resources/MovielalaPlayer.json; sourceTree = ""; }; 6CCEC38BCAA197BDB85EEE44 /* Pods-MobilePlayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MobilePlayer.release.xcconfig"; path = "Pods/Target Support Files/Pods-MobilePlayer/Pods-MobilePlayer.release.xcconfig"; sourceTree = ""; }; AAC564F266BFE6E6667728D5 /* Pods-MobilePlayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MobilePlayer.debug.xcconfig"; path = "Pods/Target Support Files/Pods-MobilePlayer/Pods-MobilePlayer.debug.xcconfig"; sourceTree = ""; }; - C305DED71B21068700DD9632 /* Minimal.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Minimal.json; sourceTree = ""; }; C308B3BE1B150F7600CB1515 /* MobilePlayerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MobilePlayerConfig.swift; sourceTree = ""; }; - C35E68BE1B7D06F700594CE6 /* PlayerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayerViewController.swift; sourceTree = ""; }; - C361643C1B6725C2000CE00E /* Hulu.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Hulu.json; sourceTree = ""; }; - C36164401B673D04000CE00E /* Netflix.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Netflix.json; sourceTree = ""; }; C38833C81B266C2500918C94 /* Skin.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Skin.json; sourceTree = ""; }; - C38FA6501B33279600BE17E8 /* ADBannerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ADBannerViewController.swift; sourceTree = ""; }; - C38FA6521B33530C00BE17E8 /* PreRollViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreRollViewController.swift; sourceTree = ""; }; C39C749E1B75400700E6CD21 /* KIF.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = KIF.framework; path = "Pods/../build/Debug-iphoneos/KIF.framework"; sourceTree = ""; }; C3A406AE1B27AA8C00D1833D /* UIColor+Hex.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Hex.swift"; sourceTree = ""; }; - C3A9AED91B048B5600D0C842 /* MobilePlayerExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MobilePlayerExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - C3A9AEDC1B048B5600D0C842 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C3A9AEDD1B048B5600D0C842 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - C3A9AEE71B048B5600D0C842 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - C3A9AEED1B048B5700D0C842 /* MobilePlayerExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MobilePlayerExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - C3A9AEF21B048B5700D0C842 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C3A9AEF31B048B5700D0C842 /* MobilePlayerExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MobilePlayerExampleTests.swift; sourceTree = ""; }; - C3A9AF0D1B049A4D00D0C842 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; C3ADD7B61B6C327E00E82C3B /* SnapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SnapKit.framework; path = "Pods/../build/Debug-iphoneos/Pods-MobilePlayerExample/SnapKit.framework"; sourceTree = ""; }; CE554D4F1AFE6CCD00DAC7E9 /* MobilePlayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MobilePlayer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CE554D531AFE6CCD00DAC7E9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -197,15 +235,23 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - C3A9AED61B048B5600D0C842 /* Frameworks */ = { + 5F56CB6B1C0407F200EF50C4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C3A9AF031B0491B500D0C842 /* MobilePlayer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - C3A9AEEA1B048B5700D0C842 /* Frameworks */ = { + 5F56CB7E1C040E8D00EF50C4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5F56CBA31C040ED400EF50C4 /* MobilePlayerExampleStores.framework in Frameworks */, + 5F56CBAC1C04164100EF50C4 /* MobilePlayer.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5F56CB931C040E8E00EF50C4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -230,6 +276,81 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 5F01D5191C041EF400EF50C4 /* Resources */ = { + isa = PBXGroup; + children = ( + 5F4CED421C054A5200EF50C4 /* WatermarkedPlayer.json */, + 5FF829681C16924400EF50C4 /* MovielalaPlayer.json */, + ); + name = Resources; + sourceTree = ""; + }; + 5F3F03C81C18E9EE00EF50C4 /* Examples */ = { + isa = PBXGroup; + children = ( + 5F56CBB01C04178C00EF50C4 /* PlainExampleViewController.swift */, + 5F56CBB41C041DA200EF50C4 /* ConfigExampleViewController.swift */, + 5F56CBB61C041DAE00EF50C4 /* RemoteConfigExampleViewController.swift */, + 5FF829661C168E4700EF50C4 /* ProgConfigExampleViewController.swift */, + 5FF829641C168ACC00EF50C4 /* AdvancedConfigExampleViewController.swift */, + 5F7974771C17B02200EF50C4 /* OverlayExampleViewController.swift */, + 5F79747B1C17ED7800EF50C4 /* TimedOverlayExampleViewController.swift */, + 5F3F03C21C18E73200EF50C4 /* PrerollExampleViewController.swift */, + 5F3F03C41C18E74000EF50C4 /* PauseOverlayExampleViewController.swift */, + 5F3F03C61C18E75300EF50C4 /* PostrollExampleViewController.swift */, + ); + name = Examples; + sourceTree = ""; + }; + 5F3F03C91C18EA0300EF50C4 /* Overlays */ = { + isa = PBXGroup; + children = ( + 5F7974791C17B67F00EF50C4 /* BuyOverlayViewController.swift */, + 5F3F03CA1C18EA2A00EF50C4 /* PrerollOverlayViewController.swift */, + 5F3F03CC1C18EA4900EF50C4 /* PrerollOverlayViewController.xib */, + 5F3F03CE1C18F3DA00EF50C4 /* PauseOverlayViewController.swift */, + 5F3F03D01C18FED600EF50C4 /* PauseOverlayViewController.xib */, + 5F3F03D21C1903E200EF50C4 /* PostrollOverlayViewController.swift */, + 5F3F03D41C1903EF00EF50C4 /* PostrollOverlayViewController.xib */, + ); + name = Overlays; + sourceTree = ""; + }; + 5F56CB701C0407F200EF50C4 /* MobilePlayerExampleStores */ = { + isa = PBXGroup; + children = ( + 5F56CB711C0407F200EF50C4 /* MobilePlayerExampleStores.h */, + 5F56CB731C0407F200EF50C4 /* Info.plist */, + 5F56CB7B1C04080500EF50C4 /* ProductStore.swift */, + ); + path = MobilePlayerExampleStores; + sourceTree = ""; + }; + 5F56CB821C040E8D00EF50C4 /* MobilePlayerExamples */ = { + isa = PBXGroup; + children = ( + 5F01D5191C041EF400EF50C4 /* Resources */, + 5F56CB831C040E8D00EF50C4 /* AppDelegate.swift */, + 5F56CBA81C04102300EF50C4 /* ExamplesTableViewController.swift */, + 5F56CBB21C04179700EF50C4 /* ExampleViewController.swift */, + 5F3F03C81C18E9EE00EF50C4 /* Examples */, + 5F3F03C91C18EA0300EF50C4 /* Overlays */, + 5F56CB8C1C040E8D00EF50C4 /* Assets.xcassets */, + 5F56CB8E1C040E8D00EF50C4 /* LaunchScreen.storyboard */, + 5F56CB911C040E8D00EF50C4 /* Info.plist */, + ); + path = MobilePlayerExamples; + sourceTree = ""; + }; + 5F56CB991C040E8E00EF50C4 /* MobilePlayerExamplesUITests */ = { + isa = PBXGroup; + children = ( + 5F56CB9A1C040E8E00EF50C4 /* MobilePlayerExamplesUITests.swift */, + 5F56CB9C1C040E8E00EF50C4 /* Info.plist */, + ); + path = MobilePlayerExamplesUITests; + sourceTree = ""; + }; 5F7CFC251BA22A3100EF50C4 /* Views */ = { isa = PBXGroup; children = ( @@ -306,56 +427,6 @@ path = Extensions; sourceTree = ""; }; - C3A9AEDA1B048B5600D0C842 /* MobilePlayerExample */ = { - isa = PBXGroup; - children = ( - C3A9AF0A1B0497BE00D0C842 /* Skin */, - C3A9AEDD1B048B5600D0C842 /* AppDelegate.swift */, - C35E68BE1B7D06F700594CE6 /* PlayerViewController.swift */, - C38FA6521B33530C00BE17E8 /* PreRollViewController.swift */, - C38FA6501B33279600BE17E8 /* ADBannerViewController.swift */, - C3A9AEE61B048B5600D0C842 /* LaunchScreen.xib */, - C3A9AF0D1B049A4D00D0C842 /* Images.xcassets */, - C3A9AEDB1B048B5600D0C842 /* Supporting Files */, - ); - path = MobilePlayerExample; - sourceTree = ""; - }; - C3A9AEDB1B048B5600D0C842 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - C3A9AEDC1B048B5600D0C842 /* Info.plist */, - ); - path = "Supporting Files"; - sourceTree = ""; - }; - C3A9AEF01B048B5700D0C842 /* MobilePlayerExampleTests */ = { - isa = PBXGroup; - children = ( - C3A9AEF31B048B5700D0C842 /* MobilePlayerExampleTests.swift */, - C3A9AEF11B048B5700D0C842 /* Supporting Files */, - ); - path = MobilePlayerExampleTests; - sourceTree = ""; - }; - C3A9AEF11B048B5700D0C842 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - C3A9AEF21B048B5700D0C842 /* Info.plist */, - ); - path = "Supporting Files"; - sourceTree = ""; - }; - C3A9AF0A1B0497BE00D0C842 /* Skin */ = { - isa = PBXGroup; - children = ( - C305DED71B21068700DD9632 /* Minimal.json */, - C361643C1B6725C2000CE00E /* Hulu.json */, - C36164401B673D04000CE00E /* Netflix.json */, - ); - path = Skin; - sourceTree = ""; - }; C3A9AF0F1B04C89D00D0C842 /* Parsers */ = { isa = PBXGroup; children = ( @@ -370,8 +441,9 @@ children = ( CE554D511AFE6CCD00DAC7E9 /* MobilePlayer */, CE554D5E1AFE6CCD00DAC7E9 /* MobilePlayerTests */, - C3A9AEDA1B048B5600D0C842 /* MobilePlayerExample */, - C3A9AEF01B048B5700D0C842 /* MobilePlayerExampleTests */, + 5F56CB701C0407F200EF50C4 /* MobilePlayerExampleStores */, + 5F56CB821C040E8D00EF50C4 /* MobilePlayerExamples */, + 5F56CB991C040E8E00EF50C4 /* MobilePlayerExamplesUITests */, CE554D501AFE6CCD00DAC7E9 /* Products */, F94C339738693C320D05B58C /* Frameworks */, D443F17774B4D6DAFB4914D5 /* Pods */, @@ -383,8 +455,9 @@ children = ( CE554D4F1AFE6CCD00DAC7E9 /* MobilePlayer.framework */, CE554D5A1AFE6CCD00DAC7E9 /* MobilePlayerTests.xctest */, - C3A9AED91B048B5600D0C842 /* MobilePlayerExample.app */, - C3A9AEED1B048B5700D0C842 /* MobilePlayerExampleTests.xctest */, + 5F56CB6F1C0407F200EF50C4 /* MobilePlayerExampleStores.framework */, + 5F56CB811C040E8D00EF50C4 /* MobilePlayerExamples.app */, + 5F56CB961C040E8E00EF50C4 /* MobilePlayerExamplesUITests.xctest */, ); name = Products; sourceTree = ""; @@ -461,6 +534,14 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 5F56CB6C1C0407F200EF50C4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 5F56CB721C0407F200EF50C4 /* MobilePlayerExampleStores.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE554D4C1AFE6CCD00DAC7E9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -472,42 +553,61 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - C3A9AED81B048B5600D0C842 /* MobilePlayerExample */ = { + 5F56CB6E1C0407F200EF50C4 /* MobilePlayerExampleStores */ = { isa = PBXNativeTarget; - buildConfigurationList = C3A9AEF51B048B5700D0C842 /* Build configuration list for PBXNativeTarget "MobilePlayerExample" */; + buildConfigurationList = 5F56CB7A1C0407F200EF50C4 /* Build configuration list for PBXNativeTarget "MobilePlayerExampleStores" */; buildPhases = ( - C3A9AED51B048B5600D0C842 /* Sources */, - C3A9AED61B048B5600D0C842 /* Frameworks */, - C3A9AED71B048B5600D0C842 /* Resources */, - C3A9AF071B0491B500D0C842 /* Embed Frameworks */, + 5F56CB6A1C0407F200EF50C4 /* Sources */, + 5F56CB6B1C0407F200EF50C4 /* Frameworks */, + 5F56CB6C1C0407F200EF50C4 /* Headers */, + 5F56CB6D1C0407F200EF50C4 /* Resources */, ); buildRules = ( ); dependencies = ( - C3A9AF061B0491B500D0C842 /* PBXTargetDependency */, ); - name = MobilePlayerExample; - productName = MobilePlayerExample; - productReference = C3A9AED91B048B5600D0C842 /* MobilePlayerExample.app */; + name = MobilePlayerExampleStores; + productName = MobilePlayerExampleStores; + productReference = 5F56CB6F1C0407F200EF50C4 /* MobilePlayerExampleStores.framework */; + productType = "com.apple.product-type.framework"; + }; + 5F56CB801C040E8D00EF50C4 /* MobilePlayerExamples */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5F56CB9D1C040E8E00EF50C4 /* Build configuration list for PBXNativeTarget "MobilePlayerExamples" */; + buildPhases = ( + 5F56CB7D1C040E8D00EF50C4 /* Sources */, + 5F56CB7E1C040E8D00EF50C4 /* Frameworks */, + 5F56CB7F1C040E8D00EF50C4 /* Resources */, + 5F56CBA71C040ED500EF50C4 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 5F56CBA61C040ED400EF50C4 /* PBXTargetDependency */, + 5F56CBAF1C04164100EF50C4 /* PBXTargetDependency */, + ); + name = MobilePlayerExamples; + productName = MobilePlayerExamples; + productReference = 5F56CB811C040E8D00EF50C4 /* MobilePlayerExamples.app */; productType = "com.apple.product-type.application"; }; - C3A9AEEC1B048B5700D0C842 /* MobilePlayerExampleTests */ = { + 5F56CB951C040E8E00EF50C4 /* MobilePlayerExamplesUITests */ = { isa = PBXNativeTarget; - buildConfigurationList = C3A9AEF81B048B5700D0C842 /* Build configuration list for PBXNativeTarget "MobilePlayerExampleTests" */; + buildConfigurationList = 5F56CBA01C040E8E00EF50C4 /* Build configuration list for PBXNativeTarget "MobilePlayerExamplesUITests" */; buildPhases = ( - C3A9AEE91B048B5700D0C842 /* Sources */, - C3A9AEEA1B048B5700D0C842 /* Frameworks */, - C3A9AEEB1B048B5700D0C842 /* Resources */, + 5F56CB921C040E8E00EF50C4 /* Sources */, + 5F56CB931C040E8E00EF50C4 /* Frameworks */, + 5F56CB941C040E8E00EF50C4 /* Resources */, ); buildRules = ( ); dependencies = ( - C3A9AEEF1B048B5700D0C842 /* PBXTargetDependency */, + 5F56CB981C040E8E00EF50C4 /* PBXTargetDependency */, ); - name = MobilePlayerExampleTests; - productName = MobilePlayerExampleTests; - productReference = C3A9AEED1B048B5700D0C842 /* MobilePlayerExampleTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; + name = MobilePlayerExamplesUITests; + productName = MobilePlayerExamplesUITests; + productReference = 5F56CB961C040E8E00EF50C4 /* MobilePlayerExamplesUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; }; CE554D4E1AFE6CCD00DAC7E9 /* MobilePlayer */ = { isa = PBXNativeTarget; @@ -539,7 +639,6 @@ ); dependencies = ( CE554D5D1AFE6CCD00DAC7E9 /* PBXTargetDependency */, - C38BEEA81B72E2AD009E4F64 /* PBXTargetDependency */, ); name = MobilePlayerTests; productName = MobilePlayerTests; @@ -553,16 +652,19 @@ isa = PBXProject; attributes = { LastSwiftMigration = 0700; - LastSwiftUpdateCheck = 0700; + LastSwiftUpdateCheck = 0710; LastUpgradeCheck = 0700; ORGANIZATIONNAME = MovieLaLa; TargetAttributes = { - C3A9AED81B048B5600D0C842 = { - CreatedOnToolsVersion = 6.3.1; + 5F56CB6E1C0407F200EF50C4 = { + CreatedOnToolsVersion = 7.1.1; }; - C3A9AEEC1B048B5700D0C842 = { - CreatedOnToolsVersion = 6.3.1; - TestTargetID = C3A9AED81B048B5600D0C842; + 5F56CB801C040E8D00EF50C4 = { + CreatedOnToolsVersion = 7.1.1; + }; + 5F56CB951C040E8E00EF50C4 = { + CreatedOnToolsVersion = 7.1.1; + TestTargetID = 5F56CB801C040E8D00EF50C4; }; CE554D4E1AFE6CCD00DAC7E9 = { CreatedOnToolsVersion = 6.3.1; @@ -588,26 +690,36 @@ targets = ( CE554D4E1AFE6CCD00DAC7E9 /* MobilePlayer */, CE554D591AFE6CCD00DAC7E9 /* MobilePlayerTests */, - C3A9AED81B048B5600D0C842 /* MobilePlayerExample */, - C3A9AEEC1B048B5700D0C842 /* MobilePlayerExampleTests */, + 5F56CB6E1C0407F200EF50C4 /* MobilePlayerExampleStores */, + 5F56CB801C040E8D00EF50C4 /* MobilePlayerExamples */, + 5F56CB951C040E8E00EF50C4 /* MobilePlayerExamplesUITests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - C3A9AED71B048B5600D0C842 /* Resources */ = { + 5F56CB6D1C0407F200EF50C4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - C36164411B673D04000CE00E /* Netflix.json in Resources */, - C361643D1B6725C2000CE00E /* Hulu.json in Resources */, - C3A9AF0E1B049A4D00D0C842 /* Images.xcassets in Resources */, - C305DED81B21068700DD9632 /* Minimal.json in Resources */, - C3A9AEE81B048B5600D0C842 /* LaunchScreen.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C3A9AEEB1B048B5700D0C842 /* Resources */ = { + 5F56CB7F1C040E8D00EF50C4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5F3F03D11C18FED600EF50C4 /* PauseOverlayViewController.xib in Resources */, + 5F4CED431C054A5200EF50C4 /* WatermarkedPlayer.json in Resources */, + 5F3F03CD1C18EA4900EF50C4 /* PrerollOverlayViewController.xib in Resources */, + 5F56CB901C040E8D00EF50C4 /* LaunchScreen.storyboard in Resources */, + 5F3F03D51C1903EF00EF50C4 /* PostrollOverlayViewController.xib in Resources */, + 5FF829691C16924400EF50C4 /* MovielalaPlayer.json in Resources */, + 5F56CB8D1C040E8D00EF50C4 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5F56CB941C040E8E00EF50C4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -646,29 +758,49 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - C38833C91B266C2500918C94 /* Skin.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - C3A9AED51B048B5600D0C842 /* Sources */ = { + 5F56CB6A1C0407F200EF50C4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5F56CB7C1C04080500EF50C4 /* ProductStore.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5F56CB7D1C040E8D00EF50C4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C3A9AEDE1B048B5600D0C842 /* AppDelegate.swift in Sources */, - C35E68BF1B7D06F700594CE6 /* PlayerViewController.swift in Sources */, - C38FA6531B33530C00BE17E8 /* PreRollViewController.swift in Sources */, - C38FA6511B33279600BE17E8 /* ADBannerViewController.swift in Sources */, + 5F3F03C51C18E74000EF50C4 /* PauseOverlayExampleViewController.swift in Sources */, + 5F3F03C31C18E73200EF50C4 /* PrerollExampleViewController.swift in Sources */, + 5F56CB841C040E8D00EF50C4 /* AppDelegate.swift in Sources */, + 5F79747C1C17ED7800EF50C4 /* TimedOverlayExampleViewController.swift in Sources */, + 5F3F03CF1C18F3DA00EF50C4 /* PauseOverlayViewController.swift in Sources */, + 5FF829671C168E4700EF50C4 /* ProgConfigExampleViewController.swift in Sources */, + 5F3F03D31C1903E200EF50C4 /* PostrollOverlayViewController.swift in Sources */, + 5F7974781C17B02200EF50C4 /* OverlayExampleViewController.swift in Sources */, + 5F56CBB71C041DAE00EF50C4 /* RemoteConfigExampleViewController.swift in Sources */, + 5F56CBB31C04179700EF50C4 /* ExampleViewController.swift in Sources */, + 5F3F03C71C18E75300EF50C4 /* PostrollExampleViewController.swift in Sources */, + 5F79747A1C17B67F00EF50C4 /* BuyOverlayViewController.swift in Sources */, + 5F56CBB11C04178C00EF50C4 /* PlainExampleViewController.swift in Sources */, + 5FF829651C168ACC00EF50C4 /* AdvancedConfigExampleViewController.swift in Sources */, + 5F56CBB51C041DA200EF50C4 /* ConfigExampleViewController.swift in Sources */, + 5F56CBA91C04102300EF50C4 /* ExamplesTableViewController.swift in Sources */, + 5F3F03CB1C18EA2A00EF50C4 /* PrerollOverlayViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C3A9AEE91B048B5700D0C842 /* Sources */ = { + 5F56CB921C040E8E00EF50C4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C3A9AEF41B048B5700D0C842 /* MobilePlayerExampleTests.swift in Sources */, + 5F56CB9B1C040E8E00EF50C4 /* MobilePlayerExamplesUITests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -715,20 +847,20 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - C38BEEA81B72E2AD009E4F64 /* PBXTargetDependency */ = { + 5F56CB981C040E8E00EF50C4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = C3A9AED81B048B5600D0C842 /* MobilePlayerExample */; - targetProxy = C38BEEA71B72E2AD009E4F64 /* PBXContainerItemProxy */; + target = 5F56CB801C040E8D00EF50C4 /* MobilePlayerExamples */; + targetProxy = 5F56CB971C040E8E00EF50C4 /* PBXContainerItemProxy */; }; - C3A9AEEF1B048B5700D0C842 /* PBXTargetDependency */ = { + 5F56CBA61C040ED400EF50C4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = C3A9AED81B048B5600D0C842 /* MobilePlayerExample */; - targetProxy = C3A9AEEE1B048B5700D0C842 /* PBXContainerItemProxy */; + target = 5F56CB6E1C0407F200EF50C4 /* MobilePlayerExampleStores */; + targetProxy = 5F56CBA51C040ED400EF50C4 /* PBXContainerItemProxy */; }; - C3A9AF061B0491B500D0C842 /* PBXTargetDependency */ = { + 5F56CBAF1C04164100EF50C4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CE554D4E1AFE6CCD00DAC7E9 /* MobilePlayer */; - targetProxy = C3A9AF051B0491B500D0C842 /* PBXContainerItemProxy */; + targetProxy = 5F56CBAE1C04164100EF50C4 /* PBXContainerItemProxy */; }; CE554D5D1AFE6CCD00DAC7E9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -738,79 +870,109 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - C3A9AEE61B048B5600D0C842 /* LaunchScreen.xib */ = { + 5F56CB8E1C040E8D00EF50C4 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( - C3A9AEE71B048B5600D0C842 /* Base */, + 5F56CB8F1C040E8D00EF50C4 /* Base */, ); - name = LaunchScreen.xib; - path = .; + name = LaunchScreen.storyboard; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - C3A9AEF61B048B5700D0C842 /* Debug */ = { + 5F56CB781C0407F200EF50C4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = MobilePlayerExampleStores/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.movielala.MobilePlayerExampleStores; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 5F56CB791C0407F200EF50C4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = MobilePlayerExampleStores/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.movielala.MobilePlayerExampleStores; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 5F56CB9E1C040E8E00EF50C4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = "MobilePlayerExample/Supporting Files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + DEBUG_INFORMATION_FORMAT = dwarf; + EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + INFOPLIST_FILE = MobilePlayerExamples/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.movielala.MobilePlayer.ExampleApp; + PRODUCT_BUNDLE_IDENTIFIER = com.movielala.MobilePlayerExamples; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; }; - C3A9AEF71B048B5700D0C842 /* Release */ = { + 5F56CB9F1C040E8E00EF50C4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = "MobilePlayerExample/Supporting Files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + INFOPLIST_FILE = MobilePlayerExamples/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.movielala.MobilePlayer.ExampleApp; + PRODUCT_BUNDLE_IDENTIFIER = com.movielala.MobilePlayerExamples; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; }; - C3A9AEF91B048B5700D0C842 /* Debug */ = { + 5F56CBA11C040E8E00EF50C4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = "MobilePlayerExampleTests/Supporting Files/Info.plist"; + DEBUG_INFORMATION_FORMAT = dwarf; + INFOPLIST_FILE = MobilePlayerExamplesUITests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.movielala.MobilePlayerExampleTests; + PRODUCT_BUNDLE_IDENTIFIER = com.mobileplayer.MobilePlayerExamplesUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MobilePlayerExample.app/MobilePlayerExample"; + TEST_TARGET_NAME = MobilePlayerExamples; + USES_XCTRUNNER = YES; }; name = Debug; }; - C3A9AEFA1B048B5700D0C842 /* Release */ = { + 5F56CBA21C040E8E00EF50C4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - INFOPLIST_FILE = "MobilePlayerExampleTests/Supporting Files/Info.plist"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + INFOPLIST_FILE = MobilePlayerExamplesUITests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.movielala.MobilePlayerExampleTests; + PRODUCT_BUNDLE_IDENTIFIER = com.mobileplayer.MobilePlayerExamplesUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MobilePlayerExample.app/MobilePlayerExample"; + TEST_TARGET_NAME = MobilePlayerExamples; + USES_XCTRUNNER = YES; }; name = Release; }; @@ -946,7 +1108,6 @@ FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", - "$(PROJECT_DIR)/build/Debug-iphoneos/Pods-MobilePlayerExample", "$(PROJECT_DIR)/build/Debug-iphoneos", ); GCC_PREPROCESSOR_DEFINITIONS = ( @@ -957,7 +1118,6 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.movielala.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MobilePlayerExample.app/MobilePlayerExample"; }; name = Debug; }; @@ -965,37 +1125,45 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; + "BUNDLE_LOADER[arch=*]" = "$(TEST_HOST)"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", - "$(PROJECT_DIR)/build/Debug-iphoneos/Pods-MobilePlayerExample", "$(PROJECT_DIR)/build/Debug-iphoneos", ); INFOPLIST_FILE = "MobilePlayerTests/Supporting Files/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.movielala.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MobilePlayerExample.app/MobilePlayerExample"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - C3A9AEF51B048B5700D0C842 /* Build configuration list for PBXNativeTarget "MobilePlayerExample" */ = { + 5F56CB7A1C0407F200EF50C4 /* Build configuration list for PBXNativeTarget "MobilePlayerExampleStores" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5F56CB781C0407F200EF50C4 /* Debug */, + 5F56CB791C0407F200EF50C4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5F56CB9D1C040E8E00EF50C4 /* Build configuration list for PBXNativeTarget "MobilePlayerExamples" */ = { isa = XCConfigurationList; buildConfigurations = ( - C3A9AEF61B048B5700D0C842 /* Debug */, - C3A9AEF71B048B5700D0C842 /* Release */, + 5F56CB9E1C040E8E00EF50C4 /* Debug */, + 5F56CB9F1C040E8E00EF50C4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C3A9AEF81B048B5700D0C842 /* Build configuration list for PBXNativeTarget "MobilePlayerExampleTests" */ = { + 5F56CBA01C040E8E00EF50C4 /* Build configuration list for PBXNativeTarget "MobilePlayerExamplesUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( - C3A9AEF91B048B5700D0C842 /* Debug */, - C3A9AEFA1B048B5700D0C842 /* Release */, + 5F56CBA11C040E8E00EF50C4 /* Debug */, + 5F56CBA21C040E8E00EF50C4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/MobilePlayer.xcodeproj/xcshareddata/xcschemes/MobilePlayerExampleStores.xcscheme b/MobilePlayer.xcodeproj/xcshareddata/xcschemes/MobilePlayerExampleStores.xcscheme new file mode 100644 index 0000000..d8472da --- /dev/null +++ b/MobilePlayer.xcodeproj/xcshareddata/xcschemes/MobilePlayerExampleStores.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MobilePlayer.xcodeproj/xcshareddata/xcschemes/MobilePlayerExample.xcscheme b/MobilePlayer.xcodeproj/xcshareddata/xcschemes/MobilePlayerExamples.xcscheme similarity index 66% rename from MobilePlayer.xcodeproj/xcshareddata/xcschemes/MobilePlayerExample.xcscheme rename to MobilePlayer.xcodeproj/xcshareddata/xcschemes/MobilePlayerExamples.xcscheme index e1da7da..0e2a8e2 100644 --- a/MobilePlayer.xcodeproj/xcshareddata/xcschemes/MobilePlayerExample.xcscheme +++ b/MobilePlayer.xcodeproj/xcshareddata/xcschemes/MobilePlayerExamples.xcscheme @@ -1,6 +1,6 @@ - - - - @@ -46,9 +32,9 @@ skipped = "NO"> @@ -56,9 +42,9 @@ @@ -79,9 +65,9 @@ runnableDebuggingMode = "0"> @@ -98,9 +84,9 @@ runnableDebuggingMode = "0"> diff --git a/MobilePlayerExample/ADBannerViewController.swift b/MobilePlayerExample/ADBannerViewController.swift deleted file mode 100644 index 17d996f..0000000 --- a/MobilePlayerExample/ADBannerViewController.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// ADBannerViewController.swift -// MobilePlayer -// -// Created by Toygar Dündaralp on 18/06/15. -// Copyright (c) 2015 MovieLaLa. All rights reserved. -// - -import UIKit -import MobilePlayer - -class ADBannerViewController: MobilePlayerOverlayViewController { - - private var bgColor = UIColor.clearColor() - - override func viewDidLoad() { - super.viewDidLoad() - self.view.backgroundColor = getRandomColor() - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - } - - func getRandomColor() -> UIColor{ - return UIColor( - red: CGFloat(drand48()), - green: CGFloat(drand48()), - blue: CGFloat(drand48()), - alpha: 0.6) - } -} diff --git a/MobilePlayerExample/AppDelegate.swift b/MobilePlayerExample/AppDelegate.swift deleted file mode 100644 index 4f81c7f..0000000 --- a/MobilePlayerExample/AppDelegate.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// AppDelegate.swift -// MobilePlayerExample -// -// Created by Toygar Dündaralp on 14/05/15. -// Copyright (c) 2015 MovieLaLa. All rights reserved. -// - -import UIKit -import MobilePlayer - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - var window: UIWindow? - - func application( - application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { - let youtubeURL = NSURL(string: "https://www.youtube.com/watch?v=ZyIVaZXDhho")! - let movieURL = NSURL(string: "http://goo.gl/97Dezi")! - let youtubeStreamURL = NSURL(string: "https://www.youtube.com/watch?v=tlQV61zW2kU")! - let skinFile = NSBundle.mainBundle().URLForResource("Netflix", withExtension: "json")! - let playerVC = MobilePlayerViewController( - contentURL: youtubeURL, - config: MobilePlayerConfig(fileURL: skinFile)) - playerVC.activityItems = ["http://www.domain.com", "Text"] -// playerVC.config.prerollViewController = PreRollViewController() -// playerVC.showOverlayViewController( -// ADBannerViewController(), -// startingAtTime: 3, -// forDuration: 3 -// ) -// playerVC.showOverlayViewController( -// ADBannerViewController(), -// startingAtTime: 10, -// forDuration: 5 -// ) -// playerVC.config.postrollViewController = PreRollViewController() - self.window = UIWindow(frame: UIScreen.mainScreen().bounds) - self.window!.rootViewController = playerVC - self.window!.backgroundColor = UIColor.whiteColor() - self.window!.makeKeyAndVisible() - return true - } -} diff --git a/MobilePlayerExample/Base.lproj/LaunchScreen.xib b/MobilePlayerExample/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 340cc24..0000000 --- a/MobilePlayerExample/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Contents.json b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 94b7f21..0000000 --- a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-Small@2x.png", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-40@2x.png", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "Icon.png", - "scale" : "1x" - }, - { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "Icon@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-60@2x.png", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-Small.png", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-40.png", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" - }, - { - "size" : "50x50", - "idiom" : "ipad", - "filename" : "Icon-Small-50.png", - "scale" : "1x" - }, - { - "size" : "50x50", - "idiom" : "ipad", - "filename" : "Icon-Small-50@2x.png", - "scale" : "2x" - }, - { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "Icon-72.png", - "scale" : "1x" - }, - { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "Icon-72@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76@2x.png", - "scale" : "2x" - }, - { - "idiom" : "mac", - "size" : "256x256", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "iTunesArtwork.png", - "scale" : "2x" - }, - { - "idiom" : "mac", - "size" : "512x512", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "iTunesArtwork@2x.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-40.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-40.png deleted file mode 100644 index cf7f1ff..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-40.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png deleted file mode 100644 index f19ec25..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png deleted file mode 100644 index f0199de..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-72.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-72.png deleted file mode 100644 index d7a3936..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-72.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png deleted file mode 100644 index d884a65..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-76.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-76.png deleted file mode 100644 index 5d8f84b..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-76.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png deleted file mode 100644 index ab07d55..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png deleted file mode 100644 index 8a0dcb6..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png deleted file mode 100644 index 6ffa3e3..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small.png deleted file mode 100644 index abcc88a..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png deleted file mode 100644 index ceca5d9..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon.png deleted file mode 100644 index 22fd3c3..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon@2x.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon@2x.png deleted file mode 100644 index 49634fa..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/Icon@2x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png deleted file mode 100644 index c6ceb70..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png b/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png deleted file mode 100644 index 2b316fb..0000000 Binary files a/MobilePlayerExample/Images.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/Logo.imageset/Logo.png b/MobilePlayerExample/Images.xcassets/Logo.imageset/Logo.png deleted file mode 100644 index 1c8a588..0000000 Binary files a/MobilePlayerExample/Images.xcassets/Logo.imageset/Logo.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/Logo.imageset/Logo@2x.png b/MobilePlayerExample/Images.xcassets/Logo.imageset/Logo@2x.png deleted file mode 100644 index 21b6530..0000000 Binary files a/MobilePlayerExample/Images.xcassets/Logo.imageset/Logo@2x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/Logo.imageset/Logo@3x.png b/MobilePlayerExample/Images.xcassets/Logo.imageset/Logo@3x.png deleted file mode 100644 index 802b86c..0000000 Binary files a/MobilePlayerExample/Images.xcassets/Logo.imageset/Logo@3x.png and /dev/null differ diff --git a/MobilePlayerExample/Images.xcassets/MPSPlayButton.imageset/MPSPlayButton.png b/MobilePlayerExample/Images.xcassets/MPSPlayButton.imageset/MPSPlayButton.png deleted file mode 100644 index cfc6c85..0000000 Binary files a/MobilePlayerExample/Images.xcassets/MPSPlayButton.imageset/MPSPlayButton.png and /dev/null differ diff --git a/MobilePlayerExample/PlayerViewController.swift b/MobilePlayerExample/PlayerViewController.swift deleted file mode 100644 index 13c5884..0000000 --- a/MobilePlayerExample/PlayerViewController.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// PlayerViewController.swift -// MobilePlayer -// -// Created by Toygar Dündaralp on 8/13/15. -// Copyright (c) 2015 MovieLaLa. All rights reserved. -// - -import UIKit -import MobilePlayer - -class PlayerViewController: UIViewController { - let youtubeURL = NSURL(string: "https://www.youtube.com/watch?v=ZyIVaZXDhho")! - let skinFile = NSBundle.mainBundle().URLForResource("Netflix", withExtension: "json")! - - override func viewDidLoad() { - super.viewDidLoad() - let playerVC = MobilePlayerViewController(contentURL: youtubeURL, config: MobilePlayerConfig(fileURL: skinFile)) - playerVC.view.frame = self.view.frame - self.view.addSubview(playerVC.view) - // playerVC.config.prerollViewController = PreRollViewController() - // playerVC.showOverlayViewController(ADBannerViewController(), startingAtTime: 3, forDuration: 3) - // playerVC.showOverlayViewController(ADBannerViewController(), startingAtTime: 10, forDuration: 5) - } - - func didPressButton(button: UIButton, identifier: String) { - UIAlertView(title: identifier, message: "Action", delegate: self, cancelButtonTitle: "OK").show() - } -} diff --git a/MobilePlayerExample/PreRollViewController.swift b/MobilePlayerExample/PreRollViewController.swift deleted file mode 100644 index 6cbd579..0000000 --- a/MobilePlayerExample/PreRollViewController.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// PreRollViewController.swift -// MobilePlayer -// -// Created by Toygar Dündaralp on 18/06/15. -// Copyright (c) 2015 MovieLaLa. All rights reserved. -// - -import UIKit -import MobilePlayer - -class PreRollViewController: MobilePlayerOverlayViewController { - - override func viewDidLoad() { - super.viewDidLoad() - self.view.backgroundColor = UIColor.darkGrayColor() - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - } -} diff --git a/MobilePlayerExample/Skin/All.json b/MobilePlayerExample/Skin/All.json deleted file mode 100644 index 4b8c921..0000000 --- a/MobilePlayerExample/Skin/All.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "header": [ - { - "order": 1, - "textFont": "HelveticaNeue", - "textSize": 16, - "textColor": "#ffffff", - "type": "label", - "subType": "title" - }, - { - "order": 0, - "image": "MLCloseButton", - "tintColor": "#ffffff", - "type": "button", - "subType": "close" - }, - { - "order": 2, - "image": "MLShareButton", - "tintColor": "#ffffff", - "type": "button", - "subType": "share" - } - ], - "controlbar": [ - { - "order": 0, - "playImage": "MLPlayButton", - "playTintColor": "#ffffff", - "pauseImage": "MLPauseButton", - "pauseTintColor": "#ffffff", - "type": "button", - "subType": "play" - }, - { - "order": 1, - "textFont": "HelveticaNeue", - "textFontSize": 15, - "textColor": "#ffffff", - "type": "label", - "subType": "time" - }, - { - "type": "view", - "subType": "seperator", - "order": 2 - }, - { - "order": 3, - "type": "view", - "subType": "timeSlider", - "railRadius": 5, - "railHeight": 10, - "railTintColor": "#cccccc", - "bufferTintColor": "#9e9b9a", - "progressTintColor": "#ae3f1c", - "thumbTintColor": "#e54918", - "thumbRadius": 12.5, - "thumbHeight": 25, - "thumbWidth": 25, - "thumbBorder": 0 - }, - { - "order": 4, - "type": "view", - "subType": "seperator" - }, - { - "order": 5, - "type": "label", - "subType": "remaining", - "textFont": "HelveticaNeue", - "textFontSize": 15, - "textColor": "#ffffff" - }, - { - "order": 1, - "textFont": "HelveticaNeue", - "textFontSize": 15, - "textColor": "#ffffff", - "type": "label", - "subType": "duration" - }, - { - "order": 5, - "railTintColor": "#cccccc", - "progressTintColor": "#0000ff", - "thumbTintColor": "#c5c5c5", - "tintColor": "#ffffff", - "image": "MLVolumeButton", - "backgroundColor": "#ffffff", - "type": "button", - "subType": "volume" - } - ], - "backgroundColor": "#000000", - "footerGradient": true, - "headerGradient": true, - "alpha": 1.0 -} diff --git a/MobilePlayerExample/Skin/Hulu.json b/MobilePlayerExample/Skin/Hulu.json deleted file mode 100644 index d698af8..0000000 --- a/MobilePlayerExample/Skin/Hulu.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "header": [ - { - "order": 1, - "textFont": "HelveticaNeue", - "textSize": 16, - "textColor": "#ffffff", - "type": "label", - "subType": "title" - }, - { - "order": 0, - "image": "MLCloseButton", - "tintColor": "#ffffff", - "type": "button", - "subType": "close" - }, - { - "order": 1, - "image": "MLShareButton", - "tintColor": "#ffffff", - "type": "button", - "subType": "share" - } - ], - "controlbar": [ - { - "order": 0, - "playImage": "MLPlayButton", - "playTintColor": "#ffffff", - "pauseImage": "MLPauseButton", - "pauseTintColor": "#ffffff", - "type": "button", - "subType": "play" - }, - { - "type": "view", - "subType": "seperator", - "order": 1 - }, - { - "order": 4, - "railRadius": 2, - "railHeight": 10, - "railTintColor": "#a3a3a3", - "bufferTintColor": "#eeeeee", - "progressTintColor": "#d4e157", - "thumbTintColor": "#ffffff", - "thumbRadius": 2, - "thumbHeight": 25, - "thumbWidth": 10, - "thumbBorder": 10, - "thumbBorderColor": "#ffffff", - "type": "view", - "subType": "timeSlider" - }, - { - "type": "view", - "subType": "seperator", - "order": 5 - }, - { - "order": 6, - "textFont": "HelveticaNeue", - "textFontSize": 15, - "textColor": "#ffffff", - "type": "label", - "subType": "time" - }, - { - "type": "view", - "subType": "seperator", - "order": 7 - } - ], - "backgroundColor":"#000000", - "alpha": 0.6 -} diff --git a/MobilePlayerExample/Skin/Minimal.json b/MobilePlayerExample/Skin/Minimal.json deleted file mode 100644 index c2c910d..0000000 --- a/MobilePlayerExample/Skin/Minimal.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "header": [ - { - "type": "view", - "subType": "seperator", - "order": 0 - }, - { - "order": 1, - "textFont": "HelveticaNeue", - "textSize": 16, - "textColor": "#ffffff", - "type": "label", - "subType": "title" - }, - { - "type": "view", - "subType": "seperator", - "order": 2 - } - ], - "controlbar": [ - { - "order": 0, - "playImage": "MLPlayButton", - "playTintColor": "#ffffff", - "pauseImage": "MLPauseButton", - "pauseTintColor": "#ffffff", - "type": "button", - "subType": "play" - }, - { - "type": "view", - "subType": "seperator", - "order": 1 - }, - { - "order": 4, - "railRadius": 1, - "railHeight": 2, - "railTintColor": "#555555", - "bufferTintColor": "#cdcdcd", - "progressTintColor": "#f44336", - "thumbTintColor": "#ffffff", - "thumbRadius": 9, - "thumbHeight": 18, - "thumbWidth": 18, - "thumbBorder": 0, - "thumbBorderColor": "#ffffff", - "type": "view", - "subType": "timeSlider" - }, - { - "type": "view", - "subType": "seperator", - "order": 5 - } - ], - "backgroundColor":"#000000", - "alpha": 0.2 -} diff --git a/MobilePlayerExample/Skin/Netflix.json b/MobilePlayerExample/Skin/Netflix.json deleted file mode 100644 index 6d2895c..0000000 --- a/MobilePlayerExample/Skin/Netflix.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "watermark":{ - "image":"Logo" - }, - "topBar":{ - "backgroundColor":["#000000ff", "#00000000"], - "elements":[ - { - "type":"button", - "identifier":"close" - }, - { - "type":"label", - "identifier":"title", - "font":"HelveticaNeue" - }, - { - "type":"button", - "identifier":"action" - } - ] - }, - "bottomBar":{ - "backgroundColor":["#00000000", "#000000ff"], - "elements":[ - { - "type":"toggleButton", - "identifier":"play" - }, - { - "type":"slider", - "identifier":"playback", - "trackHeight":10, - "trackCornerRadius":5, - "minimumTrackTintColor":"#ae3f1c", - "availableTrackTintColor":"#9e9b9a", - "maximumTrackTintColor":"#cccccc", - "thumbTintColor":"#e54918", - "thumbWidth":24, - "thumbHeight":24, - "thumbCornerRadius":12, - "thumbBorderWidth":0, - "marginRight":4 - }, - { - "type":"label", - "identifier":"remainingTime", - "text":"00:00", - "font":"HelveticaNeue", - "size":15, - "marginRight":8 - } - ] - } -} diff --git a/MobilePlayerExampleStores/Info.plist b/MobilePlayerExampleStores/Info.plist new file mode 100644 index 0000000..d3de8ee --- /dev/null +++ b/MobilePlayerExampleStores/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/MobilePlayerExampleStores/MobilePlayerExampleStores.h b/MobilePlayerExampleStores/MobilePlayerExampleStores.h new file mode 100644 index 0000000..9772510 --- /dev/null +++ b/MobilePlayerExampleStores/MobilePlayerExampleStores.h @@ -0,0 +1,19 @@ +// +// MobilePlayerExampleStores.h +// MobilePlayerExampleStores +// +// Created by Baris Sencan on 23/11/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +#import + +//! Project version number for MobilePlayerExampleStores. +FOUNDATION_EXPORT double MobilePlayerExampleStoresVersionNumber; + +//! Project version string for MobilePlayerExampleStores. +FOUNDATION_EXPORT const unsigned char MobilePlayerExampleStoresVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/MobilePlayerExampleStores/ProductStore.swift b/MobilePlayerExampleStores/ProductStore.swift new file mode 100644 index 0000000..825f12a --- /dev/null +++ b/MobilePlayerExampleStores/ProductStore.swift @@ -0,0 +1,61 @@ +// +// ProductStore.swift +// MobilePlayer +// +// Created by Baris Sencan on 23/11/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation + +public class ProductStore { + private static let products = [ + "1": Product( + id: "1", + name: "Dark Side Galactic Clubs Life Time Membership", + description: "Limited time offer! Pay once for a life time membership in our exclusive club!", + price: 49.99, + link: "http://google.com"), + "2": Product( + id: "2", + name: "Space Ships by Star Forge LLC", + description: "Have your own Sith armada with 50% off!", + price: 199.99, + link: "http://google.com"), + "3": Product( + id: "3", + name: "Light Knife by Cook Republic", + description: "Cut and cook your meat at the same time!", + price: 20.49, + link: "http://google.com")] + private static let placements = [ + "1": [ + ProductPlacement(productID: "2", startTime: 4.49, duration: 7.45), + ProductPlacement(productID: "3", startTime: 3, duration: 6)]] + + public static func getProduct(productID: String, success: Product? -> Void, failure: (NSError -> Void)? = nil) { + success(products[productID]) + } + + public static func getProductPlacementsForVideo(videoID: String, success: [ProductPlacement]? -> Void, failure: (NSError -> Void)? = nil) { + success(placements[videoID]) + } +} + +public struct Product { + public let id: String + public let name: String + public let description: String + public let price: Double + public let link: String + + public var linkURL: NSURL? { + return NSURL(string: link) + } +} + +public struct ProductPlacement { + public let productID: String + public let startTime: NSTimeInterval? + public let duration: NSTimeInterval? +} diff --git a/MobilePlayerExampleTests/MobilePlayerExampleTests.swift b/MobilePlayerExampleTests/MobilePlayerExampleTests.swift deleted file mode 100644 index 237b4e0..0000000 --- a/MobilePlayerExampleTests/MobilePlayerExampleTests.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// MobilePlayerExampleTests.swift -// MobilePlayerExampleTests -// -// Created by Toygar Dündaralp on 14/05/15. -// Copyright (c) 2015 MovieLaLa. All rights reserved. -// - -import UIKit -import XCTest - -class MobilePlayerExampleTests: XCTestCase { - - override func setUp() { - super.setUp() - } - - override func tearDown() { - super.tearDown() - } - - func testExample() { - // This is an example of a functional test case. - XCTAssert(true, "Pass") - } - - func testPerformanceExample() { - // This is an example of a performance test case. - self.measureBlock() { - // Put the code you want to measure the time of here. - } - } - -} diff --git a/MobilePlayerExamples/AdvancedConfigExampleViewController.swift b/MobilePlayerExamples/AdvancedConfigExampleViewController.swift new file mode 100644 index 0000000..f397fb1 --- /dev/null +++ b/MobilePlayerExamples/AdvancedConfigExampleViewController.swift @@ -0,0 +1,36 @@ +// +// AdvancedConfigExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 07/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import UIKit +import MobilePlayer + +class AdvancedConfigExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Advanced Configuration" + codeImageView.image = UIImage(named: "AdvancedConfigExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + let bundle = NSBundle.mainBundle() + let config = MobilePlayerConfig(fileURL: bundle.URLForResource( + "MovielalaPlayer", + withExtension: "json")!) + let playerVC = MobilePlayerViewController( + contentURL: videoURL, + config: config) + playerVC.title = videoTitle + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + } +} diff --git a/MobilePlayerExamples/AppDelegate.swift b/MobilePlayerExamples/AppDelegate.swift new file mode 100644 index 0000000..209f640 --- /dev/null +++ b/MobilePlayerExamples/AppDelegate.swift @@ -0,0 +1,23 @@ +// +// AppDelegate.swift +// MobilePlayerExamples +// +// Created by Baris Sencan on 23/11/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate { + var window: UIWindow? + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + let window = UIWindow(frame: UIScreen.mainScreen().bounds) + window.backgroundColor = UIColor.whiteColor() + window.rootViewController = UINavigationController(rootViewController: ExamplesTableViewController()) + window.makeKeyAndVisible() + self.window = window + return true + } +} diff --git a/MobilePlayerExamples/Assets.xcassets/AdvancedConfigExampleCode.imageset/AdvancedConfigExampleCode.png b/MobilePlayerExamples/Assets.xcassets/AdvancedConfigExampleCode.imageset/AdvancedConfigExampleCode.png new file mode 100644 index 0000000..30bdd13 Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/AdvancedConfigExampleCode.imageset/AdvancedConfigExampleCode.png differ diff --git a/MobilePlayerExamples/Assets.xcassets/AdvancedConfigExampleCode.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/AdvancedConfigExampleCode.imageset/Contents.json new file mode 100644 index 0000000..e5dad68 --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/AdvancedConfigExampleCode.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "AdvancedConfigExampleCode.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/MobilePlayerExamples/Assets.xcassets/AppIcon.appiconset/Contents.json b/MobilePlayerExamples/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..36d2c80 --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MobilePlayerExamples/Assets.xcassets/ConfigExampleCode.imageset/ConfigExampleCode.png b/MobilePlayerExamples/Assets.xcassets/ConfigExampleCode.imageset/ConfigExampleCode.png new file mode 100644 index 0000000..6c2f8ae Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/ConfigExampleCode.imageset/ConfigExampleCode.png differ diff --git a/MobilePlayerExample/Images.xcassets/Logo.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/ConfigExampleCode.imageset/Contents.json similarity index 73% rename from MobilePlayerExample/Images.xcassets/Logo.imageset/Contents.json rename to MobilePlayerExamples/Assets.xcassets/ConfigExampleCode.imageset/Contents.json index 516cd45..debb771 100644 --- a/MobilePlayerExample/Images.xcassets/Logo.imageset/Contents.json +++ b/MobilePlayerExamples/Assets.xcassets/ConfigExampleCode.imageset/Contents.json @@ -2,17 +2,15 @@ "images" : [ { "idiom" : "universal", - "filename" : "Logo.png", + "filename" : "ConfigExampleCode.png", "scale" : "1x" }, { "idiom" : "universal", - "filename" : "Logo@2x.png", "scale" : "2x" }, { "idiom" : "universal", - "filename" : "Logo@3x.png", "scale" : "3x" } ], diff --git a/MobilePlayerExample/Images.xcassets/Contents.json b/MobilePlayerExamples/Assets.xcassets/Contents.json similarity index 100% rename from MobilePlayerExample/Images.xcassets/Contents.json rename to MobilePlayerExamples/Assets.xcassets/Contents.json diff --git a/MobilePlayerExamples/Assets.xcassets/MovielalaLogo.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/MovielalaLogo.imageset/Contents.json new file mode 100644 index 0000000..6b316d1 --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/MovielalaLogo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "MovielalaLogo.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MobilePlayerExamples/Assets.xcassets/MovielalaLogo.imageset/MovielalaLogo.pdf b/MobilePlayerExamples/Assets.xcassets/MovielalaLogo.imageset/MovielalaLogo.pdf new file mode 100644 index 0000000..ee80386 Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/MovielalaLogo.imageset/MovielalaLogo.pdf differ diff --git a/MobilePlayerExamples/Assets.xcassets/OverlayExampleCode.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/OverlayExampleCode.imageset/Contents.json new file mode 100644 index 0000000..140ea59 --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/OverlayExampleCode.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "OverlayExampleCode.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MobilePlayerExamples/Assets.xcassets/OverlayExampleCode.imageset/OverlayExampleCode.png b/MobilePlayerExamples/Assets.xcassets/OverlayExampleCode.imageset/OverlayExampleCode.png new file mode 100644 index 0000000..84c6a7a Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/OverlayExampleCode.imageset/OverlayExampleCode.png differ diff --git a/MobilePlayerExamples/Assets.xcassets/PauseOverlayExampleCode.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/PauseOverlayExampleCode.imageset/Contents.json new file mode 100644 index 0000000..bec749e --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/PauseOverlayExampleCode.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "PauseOverlayExampleCode.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MobilePlayerExamples/Assets.xcassets/PauseOverlayExampleCode.imageset/PauseOverlayExampleCode.png b/MobilePlayerExamples/Assets.xcassets/PauseOverlayExampleCode.imageset/PauseOverlayExampleCode.png new file mode 100644 index 0000000..9656bbb Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/PauseOverlayExampleCode.imageset/PauseOverlayExampleCode.png differ diff --git a/MobilePlayerExample/Images.xcassets/MPSPlayButton.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/PlainExampleCode.imageset/Contents.json similarity index 79% rename from MobilePlayerExample/Images.xcassets/MPSPlayButton.imageset/Contents.json rename to MobilePlayerExamples/Assets.xcassets/PlainExampleCode.imageset/Contents.json index 04250d9..54ee4e4 100644 --- a/MobilePlayerExample/Images.xcassets/MPSPlayButton.imageset/Contents.json +++ b/MobilePlayerExamples/Assets.xcassets/PlainExampleCode.imageset/Contents.json @@ -2,8 +2,8 @@ "images" : [ { "idiom" : "universal", - "scale" : "1x", - "filename" : "MPSPlayButton.png" + "filename" : "PlainExampleCode.png", + "scale" : "1x" }, { "idiom" : "universal", diff --git a/MobilePlayerExamples/Assets.xcassets/PlainExampleCode.imageset/PlainExampleCode.png b/MobilePlayerExamples/Assets.xcassets/PlainExampleCode.imageset/PlainExampleCode.png new file mode 100644 index 0000000..ada5103 Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/PlainExampleCode.imageset/PlainExampleCode.png differ diff --git a/MobilePlayerExamples/Assets.xcassets/PostrollExampleCode.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/PostrollExampleCode.imageset/Contents.json new file mode 100644 index 0000000..84ee92b --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/PostrollExampleCode.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "PostrollExampleCode.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MobilePlayerExamples/Assets.xcassets/PostrollExampleCode.imageset/PostrollExampleCode.png b/MobilePlayerExamples/Assets.xcassets/PostrollExampleCode.imageset/PostrollExampleCode.png new file mode 100644 index 0000000..3e58264 Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/PostrollExampleCode.imageset/PostrollExampleCode.png differ diff --git a/MobilePlayerExamples/Assets.xcassets/PrerollExampleCode.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/PrerollExampleCode.imageset/Contents.json new file mode 100644 index 0000000..04a3e9c --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/PrerollExampleCode.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "PrerollExampleCode.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MobilePlayerExamples/Assets.xcassets/PrerollExampleCode.imageset/PrerollExampleCode.png b/MobilePlayerExamples/Assets.xcassets/PrerollExampleCode.imageset/PrerollExampleCode.png new file mode 100644 index 0000000..f125187 Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/PrerollExampleCode.imageset/PrerollExampleCode.png differ diff --git a/MobilePlayerExamples/Assets.xcassets/ProgConfigExampleCode.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/ProgConfigExampleCode.imageset/Contents.json new file mode 100644 index 0000000..36b07da --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/ProgConfigExampleCode.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ProgConfigExampleCode.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MobilePlayerExamples/Assets.xcassets/ProgConfigExampleCode.imageset/ProgConfigExampleCode.png b/MobilePlayerExamples/Assets.xcassets/ProgConfigExampleCode.imageset/ProgConfigExampleCode.png new file mode 100644 index 0000000..87e6f8e Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/ProgConfigExampleCode.imageset/ProgConfigExampleCode.png differ diff --git a/MobilePlayerExamples/Assets.xcassets/RemoteConfigExampleCode.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/RemoteConfigExampleCode.imageset/Contents.json new file mode 100644 index 0000000..10e77a9 --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/RemoteConfigExampleCode.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "RemoteConfigExampleCode.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MobilePlayerExamples/Assets.xcassets/RemoteConfigExampleCode.imageset/RemoteConfigExampleCode.png b/MobilePlayerExamples/Assets.xcassets/RemoteConfigExampleCode.imageset/RemoteConfigExampleCode.png new file mode 100644 index 0000000..8bba052 Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/RemoteConfigExampleCode.imageset/RemoteConfigExampleCode.png differ diff --git a/MobilePlayerExamples/Assets.xcassets/TimedOverlayExampleCode.imageset/Contents.json b/MobilePlayerExamples/Assets.xcassets/TimedOverlayExampleCode.imageset/Contents.json new file mode 100644 index 0000000..96615d0 --- /dev/null +++ b/MobilePlayerExamples/Assets.xcassets/TimedOverlayExampleCode.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "TimedOverlayExampleCode.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MobilePlayerExamples/Assets.xcassets/TimedOverlayExampleCode.imageset/TimedOverlayExampleCode.png b/MobilePlayerExamples/Assets.xcassets/TimedOverlayExampleCode.imageset/TimedOverlayExampleCode.png new file mode 100644 index 0000000..7c83c3d Binary files /dev/null and b/MobilePlayerExamples/Assets.xcassets/TimedOverlayExampleCode.imageset/TimedOverlayExampleCode.png differ diff --git a/MobilePlayerExample/Base.lproj/Main.storyboard b/MobilePlayerExamples/Base.lproj/LaunchScreen.storyboard similarity index 62% rename from MobilePlayerExample/Base.lproj/Main.storyboard rename to MobilePlayerExamples/Base.lproj/LaunchScreen.storyboard index 3a2a49b..f70f059 100644 --- a/MobilePlayerExample/Base.lproj/Main.storyboard +++ b/MobilePlayerExamples/Base.lproj/LaunchScreen.storyboard @@ -1,25 +1,28 @@ - + - + + - + - + - - + + - + + - + + diff --git a/MobilePlayerExamples/BuyOverlayViewController.swift b/MobilePlayerExamples/BuyOverlayViewController.swift new file mode 100644 index 0000000..c47fc72 --- /dev/null +++ b/MobilePlayerExamples/BuyOverlayViewController.swift @@ -0,0 +1,88 @@ +// +// BuyOverlayViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 08/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation +import MobilePlayer +import MobilePlayerExampleStores + +class BuyOverlayViewController: MobilePlayerOverlayViewController { + private static let maxWidth = CGFloat(200) + let containerView = UIVisualEffectView(effect: UIBlurEffect(style: .Dark)) + let descriptionLabel = UILabel(frame: CGRectZero) + let nameLabel = UILabel(frame: CGRectZero) + let buyButton = UIButton(frame: CGRectZero) + let buyLink: NSURL? + var containerOffset = CGPointZero + + init(product: Product) { + buyLink = product.linkURL + super.init(nibName: nil, bundle: nil) + descriptionLabel.text = product.description + descriptionLabel.numberOfLines = 2 + descriptionLabel.textColor = UIColor.whiteColor() + descriptionLabel.font = UIFont.systemFontOfSize(8, weight: UIFontWeightHeavy) + containerView.addSubview(descriptionLabel) + nameLabel.text = product.name + nameLabel.textColor = UIColor.whiteColor() + nameLabel.font = UIFont.systemFontOfSize(7, weight: UIFontWeightUltraLight) + containerView.addSubview(nameLabel) + buyButton.setTitle("Get Now", forState: .Normal) + buyButton.titleLabel?.font = UIFont.systemFontOfSize(8, weight: UIFontWeightBold) + buyButton.backgroundColor = UIColor(red: 0.85, green: 0.12, blue: 0.09, alpha: 1) + buyButton.layer.cornerRadius = 4 + buyButton.addTarget(self, action: "buyButtonDidGetTapped", forControlEvents: .TouchUpInside) + containerView.addSubview(buyButton) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + view.addSubview(containerView) + } + + override func didMoveToParentViewController(parent: UIViewController?) { + super.didMoveToParentViewController(parent) + // Update container offset so as not to intersect with other overlays' containers + containerOffset = CGPointZero + guard let superview = view.superview else { return } + for (index, overlayView) in superview.subviews.enumerate() { + if (parentViewController?.childViewControllers[index] == self) + || !CGRectIntersectsRect(overlayView.subviews[0].frame, view.frame) { + return + } + containerOffset.x += overlayView.subviews[0].frame.size.width + 8 + } + } + + override func viewWillLayoutSubviews() { + super.viewWillLayoutSubviews() + let availableSize = CGSize(width: BuyOverlayViewController.maxWidth - 16, height: CGFloat.infinity) + var totalHeight = CGFloat(8); + descriptionLabel.frame.size = descriptionLabel.sizeThatFits(availableSize) + descriptionLabel.frame.origin = CGPoint(x: 8, y: totalHeight) + totalHeight += descriptionLabel.frame.size.height + nameLabel.frame.size = nameLabel.sizeThatFits(availableSize) + nameLabel.frame.origin = CGPoint(x: 8, y: totalHeight) + totalHeight += nameLabel.frame.size.height + 8 + buyButton.frame.size = buyButton.sizeThatFits(availableSize) + buyButton.frame.size.width += 16 + buyButton.frame.origin.x = (descriptionLabel.frame.size.width - buyButton.frame.size.width) / 2 + buyButton.frame.origin.y = totalHeight + totalHeight += buyButton.frame.size.height + 8 + containerView.frame.size = CGSize(width: descriptionLabel.frame.size.width + 16, height: totalHeight) + containerView.frame.origin = containerOffset + } + + func buyButtonDidGetTapped() { + guard let buyLink = buyLink else { return } + UIApplication.sharedApplication().openURL(buyLink) + } +} diff --git a/MobilePlayerExamples/ConfigExampleViewController.swift b/MobilePlayerExamples/ConfigExampleViewController.swift new file mode 100644 index 0000000..8f99c83 --- /dev/null +++ b/MobilePlayerExamples/ConfigExampleViewController.swift @@ -0,0 +1,36 @@ +// +// ConfigExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 23/11/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import UIKit +import MobilePlayer + +class ConfigExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Configuration" + codeImageView.image = UIImage(named: "ConfigExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + let bundle = NSBundle.mainBundle() + let config = MobilePlayerConfig(fileURL: bundle.URLForResource( + "WatermarkedPlayer", + withExtension: "json")!) + let playerVC = MobilePlayerViewController( + contentURL: videoURL, + config: config) + playerVC.title = "Watermarked Player - \(videoTitle)" + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + } +} diff --git a/MobilePlayerExamples/ExampleViewController.swift b/MobilePlayerExamples/ExampleViewController.swift new file mode 100644 index 0000000..a0d270c --- /dev/null +++ b/MobilePlayerExamples/ExampleViewController.swift @@ -0,0 +1,44 @@ +// +// ExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 23/11/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import UIKit + +class ExampleViewController: UIViewController { + let codeImageView = UIImageView(frame: CGRectZero) + let videoURL = NSURL(string: "https://movielalavideos.blob.core.windows.net/videos/563cb51788b8c6db4b000376.mp4")! + let videoTitle = "Star Wars: Episode VII - The Force Awakens - International Trailer" + let videoID = "1" + + init() { + super.init(nibName: nil, bundle: nil) + navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Show Player", style: .Plain, target: self, action: "showButtonDidGetTapped") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = UIColor(red: 0.11, green: 0.11, blue: 0.11, alpha: 1) + view.addSubview(codeImageView) + } + + override func viewWillLayoutSubviews() { + super.viewWillLayoutSubviews() + let size = view.frame.size + let top = topLayoutGuide.length + codeImageView.sizeToFit() + codeImageView.frame.origin.x = (size.width - codeImageView.frame.size.width) / 2 + codeImageView.frame.origin.y = top + (size.height - top - codeImageView.frame.size.height) / 2 + } + + func showButtonDidGetTapped() { + fatalError("showButtonDidGetTapped() has not been implemented") + } +} diff --git a/MobilePlayerExamples/ExamplesTableViewController.swift b/MobilePlayerExamples/ExamplesTableViewController.swift new file mode 100644 index 0000000..3f24b59 --- /dev/null +++ b/MobilePlayerExamples/ExamplesTableViewController.swift @@ -0,0 +1,50 @@ +// +// ExamplesTableViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 23/11/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import UIKit + +class ExamplesTableViewController: UITableViewController { + private let cellReuseIdentifier = "exampleCell" + private let examples = [ + PlainExampleViewController(), + ConfigExampleViewController(), + RemoteConfigExampleViewController(), + ProgConfigExampleViewController(), + AdvancedConfigExampleViewController(), + OverlayExampleViewController(), + TimedOverlayExampleViewController(), + PrerollExampleViewController(), + PauseOverlayExampleViewController(), + PostrollExampleViewController() + ] + + init() { + super.init(nibName: nil, bundle: nil) + title = "MobilePlayer Examples" + tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return examples.count + } + + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier(cellReuseIdentifier, forIndexPath: indexPath) + cell.textLabel?.text = examples[indexPath.row].title + cell.accessoryType = .DisclosureIndicator + return cell + } + + override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { + showViewController(examples[indexPath.row], sender: self) + } +} diff --git a/MobilePlayerExample/Supporting Files/Info.plist b/MobilePlayerExamples/Info.plist similarity index 83% rename from MobilePlayerExample/Supporting Files/Info.plist rename to MobilePlayerExamples/Info.plist index 828f069..a337384 100644 --- a/MobilePlayerExample/Supporting Files/Info.plist +++ b/MobilePlayerExamples/Info.plist @@ -4,14 +4,8 @@ CFBundleDevelopmentRegion en - CFBundleDisplayName - MobilePlayer Example CFBundleExecutable $(EXECUTABLE_NAME) - CFBundleIcons - - CFBundleIcons~ipad - CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion @@ -21,7 +15,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0.0 + 1.0 CFBundleSignature ???? CFBundleVersion @@ -34,12 +28,20 @@ armv7 + UIStatusBarTintParameters + + UINavigationBar + + Style + UIBarStyleDefault + Translucent + + + UISupportedInterfaceOrientations - UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortraitUpsideDown UISupportedInterfaceOrientations~ipad diff --git a/MobilePlayerExamples/OverlayExampleViewController.swift b/MobilePlayerExamples/OverlayExampleViewController.swift new file mode 100644 index 0000000..183c77a --- /dev/null +++ b/MobilePlayerExamples/OverlayExampleViewController.swift @@ -0,0 +1,36 @@ +// +// OverlayExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 08/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation +import MobilePlayer +import MobilePlayerExampleStores + +class OverlayExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Showing Overlays" + codeImageView.image = UIImage(named: "OverlayExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + let playerVC = MobilePlayerViewController(contentURL: videoURL) + playerVC.title = videoTitle + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + ProductStore.getProduct("1", success: { product in + guard let product = product else { return } + playerVC.showOverlayViewController( + BuyOverlayViewController(product: product)) + }) + } +} diff --git a/MobilePlayerExamples/PauseOverlayExampleViewController.swift b/MobilePlayerExamples/PauseOverlayExampleViewController.swift new file mode 100644 index 0000000..6db07be --- /dev/null +++ b/MobilePlayerExamples/PauseOverlayExampleViewController.swift @@ -0,0 +1,32 @@ +// +// PauseOverlayExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 09/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation +import MobilePlayer + +class PauseOverlayExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Showing a Pause Overlay" + codeImageView.image = UIImage(named: "PauseOverlayExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + let playerVC = MobilePlayerViewController( + contentURL: videoURL, + pauseOverlayViewController: PauseOverlayViewController()) + playerVC.title = videoTitle + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + } +} diff --git a/MobilePlayerExamples/PauseOverlayViewController.swift b/MobilePlayerExamples/PauseOverlayViewController.swift new file mode 100644 index 0000000..c9ca273 --- /dev/null +++ b/MobilePlayerExamples/PauseOverlayViewController.swift @@ -0,0 +1,27 @@ +// +// PauseOverlayViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 09/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation +import MobilePlayer + +class PauseOverlayViewController: MobilePlayerOverlayViewController { + @IBOutlet weak var containerView: UIView! + + init() { + super.init(nibName: "PauseOverlayViewController", bundle: nil) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + containerView.layer.cornerRadius = 6 + } +} diff --git a/MobilePlayerExamples/PauseOverlayViewController.xib b/MobilePlayerExamples/PauseOverlayViewController.xib new file mode 100644 index 0000000..9c39e8b --- /dev/null +++ b/MobilePlayerExamples/PauseOverlayViewController.xib @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MobilePlayerExamples/PlainExampleViewController.swift b/MobilePlayerExamples/PlainExampleViewController.swift new file mode 100644 index 0000000..30e0a53 --- /dev/null +++ b/MobilePlayerExamples/PlainExampleViewController.swift @@ -0,0 +1,30 @@ +// +// PlainExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 23/11/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import UIKit +import MobilePlayer + +class PlainExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Plain" + codeImageView.image = UIImage(named: "PlainExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + let playerVC = MobilePlayerViewController(contentURL: videoURL) + playerVC.title = "Vanilla Player - \(videoTitle)" + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + } +} diff --git a/MobilePlayerExamples/PostrollExampleViewController.swift b/MobilePlayerExamples/PostrollExampleViewController.swift new file mode 100644 index 0000000..98afbe9 --- /dev/null +++ b/MobilePlayerExamples/PostrollExampleViewController.swift @@ -0,0 +1,32 @@ +// +// PostrollExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 09/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation +import MobilePlayer + +class PostrollExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Showing a Post-roll" + codeImageView.image = UIImage(named: "PostrollExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + let playerVC = MobilePlayerViewController( + contentURL: videoURL, + postrollViewController: PostrollOverlayViewController()) + playerVC.title = videoTitle + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + } +} diff --git a/MobilePlayerExamples/PostrollOverlayViewController.swift b/MobilePlayerExamples/PostrollOverlayViewController.swift new file mode 100644 index 0000000..c6ef807 --- /dev/null +++ b/MobilePlayerExamples/PostrollOverlayViewController.swift @@ -0,0 +1,22 @@ +// +// PostrollOverlayViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 09/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation +import Foundation +import MobilePlayer + +class PostrollOverlayViewController: MobilePlayerOverlayViewController { + + init() { + super.init(nibName: "PostrollOverlayViewController", bundle: nil) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/MobilePlayerExamples/PostrollOverlayViewController.xib b/MobilePlayerExamples/PostrollOverlayViewController.xib new file mode 100644 index 0000000..799f967 --- /dev/null +++ b/MobilePlayerExamples/PostrollOverlayViewController.xib @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MobilePlayerExamples/PrerollExampleViewController.swift b/MobilePlayerExamples/PrerollExampleViewController.swift new file mode 100644 index 0000000..6502c69 --- /dev/null +++ b/MobilePlayerExamples/PrerollExampleViewController.swift @@ -0,0 +1,32 @@ +// +// PrerollExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 09/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation +import MobilePlayer + +class PrerollExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Showing a Pre-roll" + codeImageView.image = UIImage(named: "PrerollExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + let playerVC = MobilePlayerViewController( + contentURL: videoURL, + prerollViewController: PrerollOverlayViewController()) + playerVC.title = videoTitle + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + } +} diff --git a/MobilePlayerExamples/PrerollOverlayViewController.swift b/MobilePlayerExamples/PrerollOverlayViewController.swift new file mode 100644 index 0000000..d6a26ac --- /dev/null +++ b/MobilePlayerExamples/PrerollOverlayViewController.swift @@ -0,0 +1,27 @@ +// +// PrerollOverlayViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 09/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation +import MobilePlayer + +class PrerollOverlayViewController: MobilePlayerOverlayViewController { + + init() { + super.init(nibName: "PrerollOverlayViewController", bundle: nil) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + @IBAction func visitButtonDidGetTapped() { + guard let websiteURL = NSURL(string: "https://movielala.com") else { return } + UIApplication.sharedApplication().openURL(websiteURL) + dismiss() // or mobilePlayer.play() + } +} diff --git a/MobilePlayerExamples/PrerollOverlayViewController.xib b/MobilePlayerExamples/PrerollOverlayViewController.xib new file mode 100644 index 0000000..a990b3e --- /dev/null +++ b/MobilePlayerExamples/PrerollOverlayViewController.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MobilePlayerExamples/ProgConfigExampleViewController.swift b/MobilePlayerExamples/ProgConfigExampleViewController.swift new file mode 100644 index 0000000..9eaa09c --- /dev/null +++ b/MobilePlayerExamples/ProgConfigExampleViewController.swift @@ -0,0 +1,33 @@ +// +// ProgConfigExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 07/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import UIKit +import MobilePlayer + +class ProgConfigExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Programmatic Configuration" + codeImageView.image = UIImage(named: "ProgConfigExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + let playerVC = MobilePlayerViewController( + contentURL: videoURL, + config: MobilePlayerConfig( + dictionary: ["watermark": ["image": "MovielalaLogo"]])) + playerVC.title = "Watermarked Player - \(videoTitle)" + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + } +} diff --git a/MobilePlayerExamples/RemoteConfigExampleViewController.swift b/MobilePlayerExamples/RemoteConfigExampleViewController.swift new file mode 100644 index 0000000..d6fd726 --- /dev/null +++ b/MobilePlayerExamples/RemoteConfigExampleViewController.swift @@ -0,0 +1,33 @@ +// +// RemoteConfigExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 23/11/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import UIKit +import MobilePlayer + +class RemoteConfigExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Remote Configuration" + codeImageView.image = UIImage(named: "RemoteConfigExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + guard let configURL = NSURL(string: "https://goo.gl/c73ANK") else { return } + let playerVC = MobilePlayerViewController( + contentURL: videoURL, + config: MobilePlayerConfig(fileURL: configURL)) + playerVC.title = "Watermarked Player - \(videoTitle)" + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + } +} diff --git a/MobilePlayerExamples/Resources/MovielalaPlayer.json b/MobilePlayerExamples/Resources/MovielalaPlayer.json new file mode 100644 index 0000000..68233b9 --- /dev/null +++ b/MobilePlayerExamples/Resources/MovielalaPlayer.json @@ -0,0 +1,54 @@ +{ + "watermark": { + "image": "MovielalaLogo", + "position": "topRight" + }, + "topBar": { + "backgroundColor": ["#a60500b0", "#a60500a0"], + "elements": [ + { + "type": "button", + "identifier": "close" + }, + { + "type": "slider", + "identifier": "playback", + "trackHeight": 6, + "trackCornerRadius": 3, + "minimumTrackTintColor": "#eee", + "availableTrackTintColor": "#9e9b9a", + "maximumTrackTintColor": "#cccccc", + "thumbTintColor": "#f9f9f9", + "thumbBorderWidth": 1, + "thumbBorderColor": "#fff", + "marginRight": 4 + } + ] + }, + "bottomBar": { + "backgroundColor": ["#a60500a0", "#a60500b0"], + "elements": [ + { + "type": "label", + "text": "Now Watching", + "font": "Baskerville", + "size": 12, + "marginLeft": 8, + "marginRight": 8 + }, + { + "type": "label", + "identifier": "title", + "size": 14 + }, + { + "type": "button", + "identifier": "action" + }, + { + "type": "toggleButton", + "identifier": "play" + } + ] + } +} diff --git a/MobilePlayerExamples/Resources/WatermarkedPlayer.json b/MobilePlayerExamples/Resources/WatermarkedPlayer.json new file mode 100644 index 0000000..acfa161 --- /dev/null +++ b/MobilePlayerExamples/Resources/WatermarkedPlayer.json @@ -0,0 +1,5 @@ +{ + "watermark": { + "image": "MovielalaLogo" + } +} diff --git a/MobilePlayerExamples/TimedOverlayExampleViewController.swift b/MobilePlayerExamples/TimedOverlayExampleViewController.swift new file mode 100644 index 0000000..0af1595 --- /dev/null +++ b/MobilePlayerExamples/TimedOverlayExampleViewController.swift @@ -0,0 +1,45 @@ +// +// TimedOverlayExampleViewController.swift +// MobilePlayer +// +// Created by Baris Sencan on 08/12/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import Foundation +import MobilePlayer +import MobilePlayerExampleStores + +class TimedOverlayExampleViewController: ExampleViewController { + + override init() { + super.init() + title = "Showing Timed Overlays" + codeImageView.image = UIImage(named: "TimedOverlayExampleCode") + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func showButtonDidGetTapped() { + let playerVC = MobilePlayerViewController(contentURL: videoURL) + playerVC.title = videoTitle + playerVC.activityItems = [videoURL] + presentMoviePlayerViewControllerAnimated(playerVC) + ProductStore.getProductPlacementsForVideo( + videoID, + success: { productPlacements in + guard let productPlacements = productPlacements else { return } + for placement in productPlacements { + ProductStore.getProduct(placement.productID, success: { product in + guard let product = product else { return } + playerVC.showOverlayViewController( + BuyOverlayViewController(product: product), + startingAtTime: placement.startTime, + forDuration: placement.duration) + }) + } + }) + } +} diff --git a/MobilePlayerExampleTests/Supporting Files/Info.plist b/MobilePlayerExamplesUITests/Info.plist similarity index 100% rename from MobilePlayerExampleTests/Supporting Files/Info.plist rename to MobilePlayerExamplesUITests/Info.plist diff --git a/MobilePlayerExamplesUITests/MobilePlayerExamplesUITests.swift b/MobilePlayerExamplesUITests/MobilePlayerExamplesUITests.swift new file mode 100644 index 0000000..ef6371b --- /dev/null +++ b/MobilePlayerExamplesUITests/MobilePlayerExamplesUITests.swift @@ -0,0 +1,30 @@ +// +// MobilePlayerExamplesUITests.swift +// MobilePlayerExamplesUITests +// +// Created by Baris Sencan on 23/11/2015. +// Copyright © 2015 MovieLaLa. All rights reserved. +// + +import XCTest + +class MobilePlayerExamplesUITests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + continueAfterFailure = false + XCUIApplication().launch() + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } +}