Compare commits
51 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a95c54eb56 | |||
| af54544cbe | |||
| 90530c4961 | |||
| 7f7f2157fd | |||
| 2a11f34165 | |||
| 0a28c0cc1b | |||
| a31eafca1f | |||
| 6e8446675e | |||
| dd3f9937b2 | |||
| fb7879346a | |||
| 393e659cf0 | |||
| 17c04841dd | |||
| 19328921bb | |||
| 14f1e26dfd | |||
| a031f37000 | |||
| ceeb22419f | |||
| c02d5aba36 | |||
| 9490ecc197 | |||
| d9fd6ec9e0 | |||
| 1d5a54e427 | |||
| 9e72e81f44 | |||
| bd27ed90de | |||
| 0be337a29f | |||
| 15933a66a3 | |||
| 57533faa36 | |||
| 5067393d78 | |||
| 0245cf6f8b | |||
| c0e553dcbf | |||
| c15d31d6af | |||
| 3981702cfe | |||
| c057324b82 | |||
| e847f42dc0 | |||
| e59883dbce | |||
| ef64a4b34d | |||
| 5933b16e12 | |||
| 14b577ca30 | |||
| 22f6f503ae | |||
| a63028d084 | |||
| 4f62ab889a | |||
| dc86f848bf | |||
| 6e77b776a2 | |||
| 54be5a88b0 | |||
| 2f22e2759f | |||
| 74661c8811 | |||
| 2217a0dd9b | |||
| 522b679149 | |||
| 2b7b14a9c0 | |||
| 4366081c90 | |||
| a9cf2ddcce | |||
| a6e73f608d | |||
| 6cb00472c1 |
@@ -21,6 +21,7 @@ xcuserdata/
|
||||
*.moved-aside
|
||||
*.xccheckout
|
||||
*.xcscmblueprint
|
||||
.DS_Store
|
||||
|
||||
## Obj-C/Swift specific
|
||||
*.hmap
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
2.3
|
||||
4.0
|
||||
|
||||
@@ -174,7 +174,6 @@
|
||||
607FACCD1AFB9204008FA782 /* Frameworks */,
|
||||
607FACCE1AFB9204008FA782 /* Resources */,
|
||||
AEEB7FDEAB18BB5B2C3B7E51 /* [CP] Embed Pods Frameworks */,
|
||||
321F705B84CEA2E392A6B199 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -193,8 +192,6 @@
|
||||
607FACE11AFB9204008FA782 /* Sources */,
|
||||
607FACE21AFB9204008FA782 /* Frameworks */,
|
||||
607FACE31AFB9204008FA782 /* Resources */,
|
||||
25C5F87D98E09CBD3E2CA814 /* [CP] Embed Pods Frameworks */,
|
||||
3C28040621F8BDAC7AF4AA8F /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -219,12 +216,12 @@
|
||||
607FACCF1AFB9204008FA782 = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
DevelopmentTeam = 35R365FS4Q;
|
||||
LastSwiftMigration = 0820;
|
||||
LastSwiftMigration = 0900;
|
||||
};
|
||||
607FACE41AFB9204008FA782 = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
DevelopmentTeam = 35R365FS4Q;
|
||||
LastSwiftMigration = 0820;
|
||||
LastSwiftMigration = 0900;
|
||||
TestTargetID = 607FACCF1AFB9204008FA782;
|
||||
};
|
||||
};
|
||||
@@ -270,64 +267,22 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
25C5F87D98E09CBD3E2CA814 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PlayerKit_Tests/Pods-PlayerKit_Tests-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
321F705B84CEA2E392A6B199 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PlayerKit_Example/Pods-PlayerKit_Example-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
39DBB93200760D1BB486C4CC /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-PlayerKit_Example-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
3C28040621F8BDAC7AF4AA8F /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PlayerKit_Tests/Pods-PlayerKit_Tests-resources.sh\"\n";
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
AEEB7FDEAB18BB5B2C3B7E51 /* [CP] Embed Pods Frameworks */ = {
|
||||
@@ -336,9 +291,12 @@
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${SRCROOT}/Pods/Target Support Files/Pods-PlayerKit_Example/Pods-PlayerKit_Example-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/PlayerKit/PlayerKit.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PlayerKit.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
@@ -351,13 +309,16 @@
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-PlayerKit_Tests-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
@@ -503,7 +464,8 @@
|
||||
MODULE_NAME = ExampleApp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
@@ -520,7 +482,8 @@
|
||||
MODULE_NAME = ExampleApp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
@@ -539,7 +502,8 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -553,7 +517,8 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0820"
|
||||
LastUpgradeVersion = "0900"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -40,6 +40,7 @@
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
@@ -69,6 +70,7 @@
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,16 +1,16 @@
|
||||
PODS:
|
||||
- PlayerKit (0.1.0)
|
||||
- PlayerKit (1.2.0)
|
||||
|
||||
DEPENDENCIES:
|
||||
- PlayerKit (from `../`)
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
PlayerKit:
|
||||
:path: ../
|
||||
:path: "../"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
PlayerKit: 4702100274e44e115c28419d8c21c22f13052856
|
||||
PlayerKit: ff4e4cd4c216d60ebcfccf3a68772d6299373e5a
|
||||
|
||||
PODFILE CHECKSUM: 071d8819500a822237123321021901352f4d91a4
|
||||
|
||||
COCOAPODS: 1.1.1
|
||||
COCOAPODS: 1.5.2
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
source 'https://rubygems.org'
|
||||
gem 'fastlane', '2.19.3'
|
||||
gem 'cocoapods', '1.1.1'
|
||||
gem 'fastlane', '2.42.0'
|
||||
gem 'cocoapods', '1.5.2'
|
||||
gem 'danger', '4.0.4'
|
||||
gem 'xcode-install', '2.1.0'
|
||||
gem 'xcpretty-json-formatter', '0.1.0'
|
||||
|
||||
+96
-89
@@ -1,58 +1,62 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (2.3.5)
|
||||
activesupport (4.2.8)
|
||||
CFPropertyList (2.3.6)
|
||||
activesupport (4.2.10)
|
||||
i18n (~> 0.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
addressable (2.5.0)
|
||||
public_suffix (~> 2.0, >= 2.0.2)
|
||||
addressable (2.5.2)
|
||||
public_suffix (>= 2.0.2, < 4.0)
|
||||
atomos (0.1.2)
|
||||
babosa (1.0.2)
|
||||
claide (1.0.1)
|
||||
claide (1.0.2)
|
||||
claide-plugins (0.9.2)
|
||||
cork
|
||||
nap
|
||||
open4 (~> 1.3)
|
||||
cocoapods (1.1.1)
|
||||
cocoapods (1.5.2)
|
||||
activesupport (>= 4.0.2, < 5)
|
||||
claide (>= 1.0.1, < 2.0)
|
||||
cocoapods-core (= 1.1.1)
|
||||
cocoapods-deintegrate (>= 1.0.1, < 2.0)
|
||||
cocoapods-downloader (>= 1.1.2, < 2.0)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
cocoapods-core (= 1.5.2)
|
||||
cocoapods-deintegrate (>= 1.0.2, < 2.0)
|
||||
cocoapods-downloader (>= 1.2.0, < 2.0)
|
||||
cocoapods-plugins (>= 1.0.0, < 2.0)
|
||||
cocoapods-search (>= 1.0.0, < 2.0)
|
||||
cocoapods-stats (>= 1.0.0, < 2.0)
|
||||
cocoapods-trunk (>= 1.1.1, < 2.0)
|
||||
cocoapods-trunk (>= 1.3.0, < 2.0)
|
||||
cocoapods-try (>= 1.1.0, < 2.0)
|
||||
colored (~> 1.2)
|
||||
colored2 (~> 3.1)
|
||||
escape (~> 0.0.4)
|
||||
fourflusher (~> 2.0.1)
|
||||
gh_inspector (~> 1.0)
|
||||
molinillo (~> 0.5.1)
|
||||
molinillo (~> 0.6.5)
|
||||
nap (~> 1.0)
|
||||
xcodeproj (>= 1.3.3, < 2.0)
|
||||
cocoapods-core (1.1.1)
|
||||
activesupport (>= 4.0.2, < 5)
|
||||
ruby-macho (~> 1.1)
|
||||
xcodeproj (>= 1.5.7, < 2.0)
|
||||
cocoapods-core (1.5.2)
|
||||
activesupport (>= 4.0.2, < 6)
|
||||
fuzzy_match (~> 2.0.4)
|
||||
nap (~> 1.0)
|
||||
cocoapods-deintegrate (1.0.1)
|
||||
cocoapods-downloader (1.1.3)
|
||||
cocoapods-deintegrate (1.0.2)
|
||||
cocoapods-downloader (1.2.0)
|
||||
cocoapods-plugins (1.0.0)
|
||||
nap
|
||||
cocoapods-search (1.0.0)
|
||||
cocoapods-stats (1.0.0)
|
||||
cocoapods-trunk (1.1.2)
|
||||
cocoapods-trunk (1.3.0)
|
||||
nap (>= 0.8, < 2.0)
|
||||
netrc (= 0.7.8)
|
||||
netrc (~> 0.11)
|
||||
cocoapods-try (1.1.0)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
colorize (0.8.1)
|
||||
commander (4.4.3)
|
||||
commander-fastlane (4.4.6)
|
||||
highline (~> 1.7.2)
|
||||
cork (0.2.0)
|
||||
colored (~> 1.2)
|
||||
concurrent-ruby (1.0.5)
|
||||
cork (0.3.0)
|
||||
colored2 (~> 3.1)
|
||||
danger (4.0.4)
|
||||
claide (~> 1.0)
|
||||
claide-plugins (>= 0.9.2)
|
||||
@@ -68,28 +72,30 @@ GEM
|
||||
danger (> 2.0)
|
||||
danger-xcode_summary (0.1.0)
|
||||
danger-plugin-api (~> 1.0)
|
||||
domain_name (0.5.20170223)
|
||||
declarative (0.0.10)
|
||||
declarative-option (0.1.0)
|
||||
domain_name (0.5.20180417)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.2.0)
|
||||
dotenv (2.4.0)
|
||||
escape (0.0.4)
|
||||
excon (0.55.0)
|
||||
faraday (0.11.0)
|
||||
excon (0.62.0)
|
||||
faraday (0.15.2)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-cookie_jar (0.0.6)
|
||||
faraday (>= 0.7.4)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday-http-cache (1.3.1)
|
||||
faraday (~> 0.8)
|
||||
faraday_middleware (0.11.0.1)
|
||||
faraday_middleware (0.12.2)
|
||||
faraday (>= 0.7.4, < 1.0)
|
||||
fastimage (2.1.0)
|
||||
fastlane (2.19.3)
|
||||
activesupport (< 5)
|
||||
fastimage (2.1.3)
|
||||
fastlane (2.42.0)
|
||||
CFPropertyList (>= 2.3, < 3.0.0)
|
||||
addressable (>= 2.3, < 3.0.0)
|
||||
babosa (>= 1.0.2, < 2.0.0)
|
||||
bundler (>= 1.12.0, < 2.0.0)
|
||||
colored
|
||||
commander (>= 4.4.0, < 5.0.0)
|
||||
commander-fastlane (>= 4.4.0, < 5.0.0)
|
||||
dotenv (>= 2.1.1, < 3.0.0)
|
||||
excon (>= 0.45.0, < 1.0.0)
|
||||
faraday (~> 0.9)
|
||||
@@ -97,7 +103,7 @@ GEM
|
||||
faraday_middleware (~> 0.9)
|
||||
fastimage (>= 1.6)
|
||||
gh_inspector (>= 1.0.1, < 2.0.0)
|
||||
google-api-client (~> 0.9.2)
|
||||
google-api-client (>= 0.12.0, < 0.13.0)
|
||||
highline (>= 1.7.2, < 2.0.0)
|
||||
json (< 3.0.0)
|
||||
mini_magick (~> 4.5.1)
|
||||
@@ -112,7 +118,7 @@ GEM
|
||||
terminal-table (>= 1.4.5, < 2.0.0)
|
||||
tty-screen (~> 0.5.0)
|
||||
word_wrap (~> 1.0.0)
|
||||
xcodeproj (>= 0.20, < 2.0.0)
|
||||
xcodeproj (>= 1.4.4, < 2.0.0)
|
||||
xcpretty (>= 0.2.4, < 1.0.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
fastlane-plugin-pretty_junit (0.1.1)
|
||||
@@ -121,116 +127,117 @@ GEM
|
||||
terminal-table
|
||||
fourflusher (2.0.1)
|
||||
fuzzy_match (2.0.4)
|
||||
gh_inspector (1.0.3)
|
||||
git (1.3.0)
|
||||
google-api-client (0.9.28)
|
||||
addressable (~> 2.3)
|
||||
gh_inspector (1.1.3)
|
||||
git (1.4.0)
|
||||
google-api-client (0.12.0)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (~> 0.5)
|
||||
httpclient (~> 2.7)
|
||||
hurley (~> 0.1)
|
||||
memoist (~> 0.11)
|
||||
mime-types (>= 1.6)
|
||||
representable (~> 2.3.0)
|
||||
retriable (~> 2.0)
|
||||
googleauth (0.5.1)
|
||||
faraday (~> 0.9)
|
||||
jwt (~> 1.4)
|
||||
httpclient (>= 2.8.1, < 3.0)
|
||||
mime-types (~> 3.0)
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.0)
|
||||
googleauth (0.6.2)
|
||||
faraday (~> 0.12)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
logging (~> 2.0)
|
||||
memoist (~> 0.12)
|
||||
multi_json (~> 1.11)
|
||||
os (~> 0.9)
|
||||
signet (~> 0.7)
|
||||
highline (1.7.8)
|
||||
highline (1.7.10)
|
||||
http-cookie (1.0.3)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
hurley (0.2)
|
||||
i18n (0.8.1)
|
||||
json (2.0.3)
|
||||
jwt (1.5.6)
|
||||
kramdown (1.13.2)
|
||||
i18n (0.9.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
json (2.1.0)
|
||||
jwt (2.1.0)
|
||||
kramdown (1.16.2)
|
||||
little-plugger (1.1.4)
|
||||
logging (2.2.0)
|
||||
logging (2.2.2)
|
||||
little-plugger (~> 1.1)
|
||||
multi_json (~> 1.10)
|
||||
memoist (0.15.0)
|
||||
memoist (0.16.0)
|
||||
mime-types (3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2016.0521)
|
||||
mini_magick (4.5.1)
|
||||
mini_portile (0.5.3)
|
||||
minitest (5.10.1)
|
||||
molinillo (0.5.7)
|
||||
multi_json (1.12.1)
|
||||
minitest (5.11.3)
|
||||
molinillo (0.6.5)
|
||||
multi_json (1.13.1)
|
||||
multi_xml (0.6.0)
|
||||
multipart-post (2.0.0)
|
||||
nanaimo (0.2.3)
|
||||
nanaimo (0.2.5)
|
||||
nap (1.1.0)
|
||||
netrc (0.7.8)
|
||||
netrc (0.11.0)
|
||||
nokogiri (1.6.0)
|
||||
mini_portile (~> 0.5.0)
|
||||
octokit (4.6.2)
|
||||
octokit (4.9.0)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
open4 (1.3.4)
|
||||
os (0.9.6)
|
||||
plist (3.2.0)
|
||||
public_suffix (2.0.5)
|
||||
representable (2.3.0)
|
||||
uber (~> 0.0.7)
|
||||
retriable (2.1.0)
|
||||
rouge (1.11.1)
|
||||
plist (3.4.0)
|
||||
public_suffix (3.0.2)
|
||||
representable (3.0.4)
|
||||
declarative (< 0.1.0)
|
||||
declarative-option (< 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.1)
|
||||
rouge (2.0.7)
|
||||
ruby-macho (1.1.0)
|
||||
rubyzip (1.2.1)
|
||||
sawyer (0.8.1)
|
||||
addressable (>= 2.3.5, < 2.6)
|
||||
faraday (~> 0.8, < 1.0)
|
||||
security (0.1.3)
|
||||
signet (0.7.3)
|
||||
signet (0.8.1)
|
||||
addressable (~> 2.3)
|
||||
faraday (~> 0.9)
|
||||
jwt (~> 1.5)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
slack-notifier (1.5.1)
|
||||
terminal-notifier (1.7.1)
|
||||
terminal-table (1.7.3)
|
||||
unicode-display_width (~> 1.1.1)
|
||||
terminal-notifier (1.8.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
thread_safe (0.3.6)
|
||||
tty-screen (0.5.0)
|
||||
tzinfo (1.2.2)
|
||||
tty-screen (0.5.1)
|
||||
tzinfo (1.2.5)
|
||||
thread_safe (~> 0.1)
|
||||
uber (0.0.15)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.2)
|
||||
unicode-display_width (1.1.3)
|
||||
unf_ext (0.0.7.5)
|
||||
unicode-display_width (1.3.2)
|
||||
word_wrap (1.0.0)
|
||||
xcode-install (2.1.0)
|
||||
claide (>= 0.9.1, < 1.1.0)
|
||||
fastlane (>= 2.1.1, < 3.0.0)
|
||||
xcodeproj (1.4.2)
|
||||
CFPropertyList (~> 2.3.3)
|
||||
activesupport (>= 3)
|
||||
claide (>= 1.0.1, < 2.0)
|
||||
colored (~> 1.2)
|
||||
nanaimo (~> 0.2.3)
|
||||
xcpretty (0.2.4)
|
||||
rouge (~> 1.8)
|
||||
xcodeproj (1.5.9)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.2)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
nanaimo (~> 0.2.5)
|
||||
xcpretty (0.2.8)
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty-json-formatter (0.1.0)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
xcpretty-travis-formatter (0.0.4)
|
||||
xcpretty-travis-formatter (1.0.0)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
cocoapods (= 1.1.1)
|
||||
cocoapods (= 1.5.2)
|
||||
danger (= 4.0.4)
|
||||
danger-xcode_summary (= 0.1.0)
|
||||
fastlane (= 2.19.3)
|
||||
fastlane (= 2.42.0)
|
||||
fastlane-plugin-pretty_junit
|
||||
nokogiri (= 1.6.0)
|
||||
xcode-install (= 2.1.0)
|
||||
xcpretty-json-formatter (= 0.1.0)
|
||||
|
||||
BUNDLED WITH
|
||||
1.14.5
|
||||
1.15.3
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'PlayerKit'
|
||||
s.version = '0.1.0'
|
||||
s.version = '1.3.0'
|
||||
s.summary = 'A modular video player system.'
|
||||
|
||||
s.description = <<-DESC
|
||||
PlayerKit is a modular video player system. It provides a common interface for players and various players that implement it.
|
||||
PlayerKit is a modular video player system for iOS and tvOS.
|
||||
DESC
|
||||
|
||||
s.homepage = 'https://github.com/vimeo/PlayerKit'
|
||||
|
||||
@@ -37,9 +37,9 @@ public enum PlayerError: Int
|
||||
|
||||
/// Represents the current state of the player
|
||||
///
|
||||
/// - Loading: The player is loading or buffering
|
||||
/// - Ready: The player is ready for playback
|
||||
/// - Failed: The player has failed
|
||||
/// - loading: The player is loading or buffering
|
||||
/// - ready: The player is ready for playback
|
||||
/// - failed: The player has failed
|
||||
@objc public enum PlayerState: Int
|
||||
{
|
||||
case loading
|
||||
@@ -110,7 +110,42 @@ public enum PlayerError: Int
|
||||
/// A player that adopts the ProvidesView protocol is capable of setting the video fill mode.
|
||||
@objc public protocol FillModeCapable
|
||||
{
|
||||
var fillMode: String { get set }
|
||||
var fillMode: FillMode { get set }
|
||||
}
|
||||
|
||||
@objc public enum FillMode: Int
|
||||
{
|
||||
case fit
|
||||
case fill
|
||||
}
|
||||
|
||||
/// The metadata that should be attached to any type of text track.
|
||||
@objc public protocol TextTrackMetadata
|
||||
{
|
||||
var displayName: String { get }
|
||||
var locale: Locale? { get }
|
||||
// Indicates that the text track represents subtitles for the def and hard of hearing (SDH).
|
||||
var isSDHTrack: Bool { get }
|
||||
|
||||
@objc(displayNameWithLocale:) func displayName(with locale: Locale) -> String
|
||||
}
|
||||
|
||||
extension TextTrackMetadata
|
||||
{
|
||||
public func matches(_ other: TextTrackMetadata) -> Bool
|
||||
{
|
||||
return (self.locale == other.locale && self.isSDHTrack == other.isSDHTrack)
|
||||
}
|
||||
}
|
||||
|
||||
/// A player that conforms to the TextTrackCapable protocol is capable of advertising and displaying text tracks.
|
||||
@objc public protocol TextTrackCapable
|
||||
{
|
||||
var selectedTextTrack: TextTrackMetadata? { get }
|
||||
var availableTextTracks: [TextTrackMetadata] { get }
|
||||
|
||||
func fetchTextTracks(completion: @escaping ([TextTrackMetadata], TextTrackMetadata?) -> Void)
|
||||
func select(_ textTrack: TextTrackMetadata?)
|
||||
}
|
||||
|
||||
#if os(iOS)
|
||||
|
||||
@@ -11,8 +11,16 @@ import Foundation
|
||||
import AVFoundation
|
||||
import AVKit
|
||||
|
||||
extension AVMediaSelectionOption: TextTrackMetadata
|
||||
{
|
||||
public var isSDHTrack: Bool
|
||||
{
|
||||
return self.hasMediaCharacteristic(.describesMusicAndSoundForAccessibility) && self.hasMediaCharacteristic(.transcribesSpokenDialogForAccessibility)
|
||||
}
|
||||
}
|
||||
|
||||
/// A RegularPlayer is used to play regular videos.
|
||||
open class RegularPlayer: NSObject, Player, ProvidesView
|
||||
@objc open class RegularPlayer: NSObject, Player, ProvidesView
|
||||
{
|
||||
public struct Constants
|
||||
{
|
||||
@@ -28,7 +36,7 @@ open class RegularPlayer: NSObject, Player, ProvidesView
|
||||
/// Sets an AVAsset on the player.
|
||||
///
|
||||
/// - Parameter asset: The AVAsset
|
||||
open func set(_ asset: AVAsset)
|
||||
@objc open func set(_ asset: AVAsset)
|
||||
{
|
||||
// Prepare the old item for removal
|
||||
|
||||
@@ -125,7 +133,7 @@ open class RegularPlayer: NSObject, Player, ProvidesView
|
||||
{
|
||||
let cmTime = CMTimeMakeWithSeconds(time, Int32(NSEC_PER_SEC))
|
||||
|
||||
self.player.seek(to: cmTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
|
||||
self.player.seek(to: cmTime)
|
||||
|
||||
self.time = time
|
||||
}
|
||||
@@ -373,15 +381,97 @@ extension RegularPlayer: VolumeCapable
|
||||
|
||||
extension RegularPlayer: FillModeCapable
|
||||
{
|
||||
public var fillMode: String
|
||||
public var fillMode: FillMode
|
||||
{
|
||||
get
|
||||
{
|
||||
return (self.view.layer as! AVPlayerLayer).videoGravity
|
||||
let gravity = (self.view.layer as! AVPlayerLayer).videoGravity
|
||||
|
||||
return gravity == .resizeAspect ? .fit : .fill
|
||||
}
|
||||
set
|
||||
{
|
||||
(self.view.layer as! AVPlayerLayer).videoGravity = newValue
|
||||
let gravity: AVLayerVideoGravity
|
||||
|
||||
switch newValue
|
||||
{
|
||||
case .fit:
|
||||
|
||||
gravity = .resizeAspect
|
||||
|
||||
case .fill:
|
||||
|
||||
gravity = .resizeAspectFill
|
||||
}
|
||||
|
||||
(self.view.layer as! AVPlayerLayer).videoGravity = gravity
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension RegularPlayer: TextTrackCapable
|
||||
{
|
||||
public var selectedTextTrack: TextTrackMetadata?
|
||||
{
|
||||
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
|
||||
{
|
||||
return nil
|
||||
}
|
||||
|
||||
if #available(iOS 9.0, *)
|
||||
{
|
||||
return self.player.currentItem?.currentMediaSelection.selectedMediaOption(in: group)
|
||||
}
|
||||
else
|
||||
{
|
||||
return self.player.currentItem?.selectedMediaOption(in: group)
|
||||
}
|
||||
}
|
||||
|
||||
public var availableTextTracks: [TextTrackMetadata]
|
||||
{
|
||||
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
|
||||
{
|
||||
return []
|
||||
}
|
||||
return group.options
|
||||
}
|
||||
|
||||
public func fetchTextTracks(completion: @escaping ([TextTrackMetadata], TextTrackMetadata?) -> Void)
|
||||
{
|
||||
self.player.currentItem?.asset.loadValuesAsynchronously(forKeys: [#keyPath(AVAsset.availableMediaCharacteristicsWithMediaSelectionOptions)]) { [weak self] in
|
||||
guard let strongSelf = self, let group = strongSelf.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
|
||||
{
|
||||
completion([], nil)
|
||||
return
|
||||
}
|
||||
if #available(iOS 9.0, *)
|
||||
{
|
||||
completion(group.options, strongSelf.player.currentItem?.currentMediaSelection.selectedMediaOption(in: group))
|
||||
}
|
||||
else
|
||||
{
|
||||
completion(group.options, strongSelf.player.currentItem?.selectedMediaOption(in: group))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public func select(_ textTrack: TextTrackMetadata?)
|
||||
{
|
||||
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
guard let track = textTrack else
|
||||
{
|
||||
self.player.currentItem?.select(nil, in: group)
|
||||
return
|
||||
}
|
||||
|
||||
let option = group.options.first(where: { option in
|
||||
track.matches(option)
|
||||
})
|
||||
self.player.currentItem?.select(option, in: group)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# PlayerKit
|
||||
|
||||
[](https://travis-ci.org/ghking/PlayerKit)
|
||||
[](https://travis-ci.org/vimeo/PlayerKit)
|
||||
[](http://cocoapods.org/pods/PlayerKit)
|
||||
[](http://cocoapods.org/pods/PlayerKit)
|
||||
[](http://cocoapods.org/pods/PlayerKit)
|
||||
@@ -13,17 +13,17 @@ Vimeo supports various types of video and playback (360 video, Chromecast, etc.)
|
||||
|
||||
### Goals
|
||||
|
||||
- Provide an interface defining a common API and delegate callback strategy that different types of players can implement
|
||||
- Provide an interface defining a common API and delegate callback strategy for different types of players to implement
|
||||
- Allow players to define their capabilities using protocol conformance
|
||||
|
||||
## Example
|
||||
|
||||
To run the example project, clone the repo, and run `pod install` from the Example directory first.
|
||||
To run the example project, clone the repo, and run `pod install` from the Example directory.
|
||||
|
||||
## Requirements
|
||||
## Minimum Requirements
|
||||
|
||||
- iOS 8.0+ / tvOS 9.0+
|
||||
- Swift 2.3 (Swift 3 support coming soon)
|
||||
- iOS 8.0 / tvOS 9.0
|
||||
- Swift 3.2
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -52,7 +52,7 @@ player.set(asset: AVURLAsset(URL: "https://example.com/video.mp4"))
|
||||
player.play()
|
||||
```
|
||||
|
||||
Optionally, an object can conform to PlayerDelegate to recieve updates from the player and perform actions such as UI updates. Check out the example project for an example of this.
|
||||
Optionally, an object can conform to PlayerDelegate to receive updates from the player and perform actions such as UI updates. Check out the example project for an example of this.
|
||||
|
||||
```swift
|
||||
player.delegate = delegate
|
||||
@@ -60,11 +60,11 @@ player.delegate = delegate
|
||||
|
||||
### Creating New Types of Players
|
||||
|
||||
You can create your own new types of players by creating objects that conform to the Player protocol and call the delgate methods when appropriate.
|
||||
You can create your own players by creating objects that conform to the Player protocol and call the delegate methods when appropriate.
|
||||
|
||||
## Author
|
||||
## Questions?
|
||||
|
||||
Gavin King, gavin@vimeo.com
|
||||
Post on [Stackoverflow](http://stackoverflow.com/questions/tagged/vimeo-ios) with the tag `vimeo-ios`. Get in touch [here](https://vimeo.com/help/contact). Interested in working at Vimeo? We're [hiring](https://vimeo.com/jobs)!
|
||||
|
||||
## License
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ general:
|
||||
- "PlayerKit_Example-PlayerKit-Example.log"
|
||||
machine:
|
||||
xcode:
|
||||
version: 8.2.1
|
||||
version: 9.0
|
||||
|
||||
dependencies:
|
||||
override:
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ default_platform :ios
|
||||
|
||||
platform :ios do
|
||||
before_all do
|
||||
ensure_xcode_version(version: "8.2.1")
|
||||
ensure_xcode_version(version: "9.0.1")
|
||||
end
|
||||
|
||||
desc "run tests"
|
||||
|
||||
Reference in New Issue
Block a user