Compare commits
64 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| faa6d70b09 | |||
| 1e2843bda3 | |||
| 4e5c677dbe | |||
| 5b3d267add | |||
| 208c5bac56 | |||
| 46aa54e707 | |||
| 991fa26720 | |||
| a4bb460876 | |||
| 55bbd0ed41 | |||
| cc3bce965f | |||
| 684adc0531 | |||
| 1adc511044 | |||
| d4446bc3db | |||
| d908925d7e | |||
| 1c7720f088 | |||
| 19b5797eb4 | |||
| 0ead324b5c | |||
| 9c34e65a66 | |||
| bb3277d25e | |||
| 7ef2d71f3e | |||
| 0d031c0eb2 | |||
| 66d629f0e1 | |||
| e21527c1e8 | |||
| 9496df53a1 | |||
| c25d1cd49e | |||
| a979a07652 | |||
| eb6dbdf5a5 | |||
| 3ecf8458cf | |||
| 7a74c1e67d | |||
| e9a64fb531 | |||
| eaf4f4b492 | |||
| d42db154ca | |||
| f09240d4d0 | |||
| 91f68ff891 | |||
| 25ee3e009a | |||
| cc979b602c | |||
| a9fee87379 | |||
| 15d08fe2b4 | |||
| 37e471cf04 | |||
| e296e11ba6 | |||
| cbab5b4c7b | |||
| c00367896d | |||
| 0e68ced41a | |||
| 8162c1cb3b | |||
| ce399a8e98 | |||
| 932d66e6ba | |||
| de01806e8a | |||
| d799cbb15b | |||
| 35e0d78004 | |||
| 58ff13c70b | |||
| d6c5ab0629 | |||
| ea5b11e13c | |||
| 6ac137f9ff | |||
| 5e197fd1c5 | |||
| 0d91f5a054 | |||
| 09f58850e8 | |||
| 088d368709 | |||
| 4508acf2ed | |||
| 7ae3643508 | |||
| d6047dc471 | |||
| 3724c3000c | |||
| 38f28c9e3a | |||
| 5b3134f094 | |||
| 85efea0363 |
@@ -0,0 +1,11 @@
|
||||
#### Issue Summary
|
||||
A brief but thorough description of the issue.
|
||||
|
||||
#### Reproduction Steps
|
||||
Detailed steps to reproduce the issue.
|
||||
|
||||
#### Expected Behavior
|
||||
What do you expect to happen as a result of the reproduction steps?
|
||||
|
||||
#### Actual Behavior
|
||||
What currently happens as a result of the reproduction steps?
|
||||
@@ -0,0 +1,12 @@
|
||||
#### Ticket
|
||||
**Required for Vimeans only**
|
||||
[TICKET_NUMBER](https://vimean.atlassian.net/browse/TICKET_NUMBER)
|
||||
|
||||
#### Ticket Summary
|
||||
A brief but thorough description of the ticket.
|
||||
|
||||
#### Implementation Summary
|
||||
A brief but thorough description of the changes put in place to address the ticket.
|
||||
|
||||
#### How to Test
|
||||
Detailed *list* of what to test and how to test it. Including all edge cases.
|
||||
+30
-12
@@ -1,4 +1,27 @@
|
||||
.DS_Store
|
||||
## Build generated
|
||||
build/
|
||||
DerivedData
|
||||
|
||||
## Various settings
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
|
||||
## Other
|
||||
*.xccheckout
|
||||
*.moved-aside
|
||||
*.xcuserstate
|
||||
*.xcscmblueprint
|
||||
|
||||
## Obj-C/Swift specific
|
||||
*.hmap
|
||||
*.ipa
|
||||
|
||||
*.xcuserstate
|
||||
|
||||
@@ -11,20 +34,15 @@ xcuserdata/
|
||||
|
||||
.DS_Store
|
||||
*.DS_Store
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
|
||||
*.xcworkspace
|
||||
!default.xcworkspace
|
||||
xcuserdata
|
||||
profile
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
.idea/
|
||||
*.LSOverride
|
||||
|
||||
# Cocoapods
|
||||
|
||||
Pods
|
||||
|
||||
|
||||
@@ -0,0 +1,525 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
AF8720311CA44FBD004C752C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8720301CA44FBD004C752C /* AppDelegate.swift */; };
|
||||
AF8720331CA44FBD004C752C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8720321CA44FBD004C752C /* ViewController.swift */; };
|
||||
AF8720361CA44FBD004C752C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AF8720341CA44FBD004C752C /* Main.storyboard */; };
|
||||
AF8720381CA44FBD004C752C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AF8720371CA44FBD004C752C /* Assets.xcassets */; };
|
||||
AF87203B1CA44FBD004C752C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AF8720391CA44FBD004C752C /* LaunchScreen.storyboard */; };
|
||||
AF8720461CA44FBD004C752C /* VimeoPlayer_iOS_ExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8720451CA44FBD004C752C /* VimeoPlayer_iOS_ExampleTests.swift */; };
|
||||
AF8720511CA44FBD004C752C /* VimeoPlayer_iOS_ExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8720501CA44FBD004C752C /* VimeoPlayer_iOS_ExampleUITests.swift */; };
|
||||
AF87205F1CA44FF6004C752C /* VimeoPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF87205E1CA44FF6004C752C /* VimeoPlayer.framework */; };
|
||||
AF8720631CA4507C004C752C /* waterfall.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = AF8720621CA4507C004C752C /* waterfall.mp4 */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
AF8720421CA44FBD004C752C /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = AF8720251CA44FBC004C752C /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = AF87202C1CA44FBD004C752C;
|
||||
remoteInfo = "VimeoPlayer-iOS-Example";
|
||||
};
|
||||
AF87204D1CA44FBD004C752C /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = AF8720251CA44FBC004C752C /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = AF87202C1CA44FBD004C752C;
|
||||
remoteInfo = "VimeoPlayer-iOS-Example";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
AF87202D1CA44FBD004C752C /* VimeoPlayer-iOS-Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "VimeoPlayer-iOS-Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AF8720301CA44FBD004C752C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
AF8720321CA44FBD004C752C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
AF8720351CA44FBD004C752C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
AF8720371CA44FBD004C752C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
AF87203A1CA44FBD004C752C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
AF87203C1CA44FBD004C752C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
AF8720411CA44FBD004C752C /* VimeoPlayer-iOS-ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "VimeoPlayer-iOS-ExampleTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AF8720451CA44FBD004C752C /* VimeoPlayer_iOS_ExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VimeoPlayer_iOS_ExampleTests.swift; sourceTree = "<group>"; };
|
||||
AF8720471CA44FBD004C752C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
AF87204C1CA44FBD004C752C /* VimeoPlayer-iOS-ExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "VimeoPlayer-iOS-ExampleUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AF8720501CA44FBD004C752C /* VimeoPlayer_iOS_ExampleUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VimeoPlayer_iOS_ExampleUITests.swift; sourceTree = "<group>"; };
|
||||
AF8720521CA44FBD004C752C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
AF87205E1CA44FF6004C752C /* VimeoPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VimeoPlayer.framework; path = "../../VIMVideoPlayer-Framework/build/Debug-iphoneos/VimeoPlayer.framework"; sourceTree = "<group>"; };
|
||||
AF8720611CA4507C004C752C /* Bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bridge.h; sourceTree = "<group>"; };
|
||||
AF8720621CA4507C004C752C /* waterfall.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = waterfall.mp4; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
AF87202A1CA44FBD004C752C /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AF87205F1CA44FF6004C752C /* VimeoPlayer.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
AF87203E1CA44FBD004C752C /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
AF8720491CA44FBD004C752C /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
AF8720241CA44FBC004C752C = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF87202F1CA44FBD004C752C /* VimeoPlayer-iOS-Example */,
|
||||
AF8720441CA44FBD004C752C /* VimeoPlayer-iOS-ExampleTests */,
|
||||
AF87204F1CA44FBD004C752C /* VimeoPlayer-iOS-ExampleUITests */,
|
||||
AF87202E1CA44FBD004C752C /* Products */,
|
||||
AF8720601CA45004004C752C /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AF87202E1CA44FBD004C752C /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF87202D1CA44FBD004C752C /* VimeoPlayer-iOS-Example.app */,
|
||||
AF8720411CA44FBD004C752C /* VimeoPlayer-iOS-ExampleTests.xctest */,
|
||||
AF87204C1CA44FBD004C752C /* VimeoPlayer-iOS-ExampleUITests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AF87202F1CA44FBD004C752C /* VimeoPlayer-iOS-Example */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF8720301CA44FBD004C752C /* AppDelegate.swift */,
|
||||
AF8720321CA44FBD004C752C /* ViewController.swift */,
|
||||
AF8720341CA44FBD004C752C /* Main.storyboard */,
|
||||
AF8720371CA44FBD004C752C /* Assets.xcassets */,
|
||||
AF8720391CA44FBD004C752C /* LaunchScreen.storyboard */,
|
||||
AF87203C1CA44FBD004C752C /* Info.plist */,
|
||||
AF8720611CA4507C004C752C /* Bridge.h */,
|
||||
AF8720621CA4507C004C752C /* waterfall.mp4 */,
|
||||
);
|
||||
path = "VimeoPlayer-iOS-Example";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AF8720441CA44FBD004C752C /* VimeoPlayer-iOS-ExampleTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF8720451CA44FBD004C752C /* VimeoPlayer_iOS_ExampleTests.swift */,
|
||||
AF8720471CA44FBD004C752C /* Info.plist */,
|
||||
);
|
||||
path = "VimeoPlayer-iOS-ExampleTests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AF87204F1CA44FBD004C752C /* VimeoPlayer-iOS-ExampleUITests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF8720501CA44FBD004C752C /* VimeoPlayer_iOS_ExampleUITests.swift */,
|
||||
AF8720521CA44FBD004C752C /* Info.plist */,
|
||||
);
|
||||
path = "VimeoPlayer-iOS-ExampleUITests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AF8720601CA45004004C752C /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF87205E1CA44FF6004C752C /* VimeoPlayer.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
AF87202C1CA44FBD004C752C /* VimeoPlayer-iOS-Example */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AF8720551CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-Example" */;
|
||||
buildPhases = (
|
||||
AF8720291CA44FBD004C752C /* Sources */,
|
||||
AF87202A1CA44FBD004C752C /* Frameworks */,
|
||||
AF87202B1CA44FBD004C752C /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "VimeoPlayer-iOS-Example";
|
||||
productName = "VimeoPlayer-iOS-Example";
|
||||
productReference = AF87202D1CA44FBD004C752C /* VimeoPlayer-iOS-Example.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
AF8720401CA44FBD004C752C /* VimeoPlayer-iOS-ExampleTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AF8720581CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-ExampleTests" */;
|
||||
buildPhases = (
|
||||
AF87203D1CA44FBD004C752C /* Sources */,
|
||||
AF87203E1CA44FBD004C752C /* Frameworks */,
|
||||
AF87203F1CA44FBD004C752C /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
AF8720431CA44FBD004C752C /* PBXTargetDependency */,
|
||||
);
|
||||
name = "VimeoPlayer-iOS-ExampleTests";
|
||||
productName = "VimeoPlayer-iOS-ExampleTests";
|
||||
productReference = AF8720411CA44FBD004C752C /* VimeoPlayer-iOS-ExampleTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
AF87204B1CA44FBD004C752C /* VimeoPlayer-iOS-ExampleUITests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AF87205B1CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-ExampleUITests" */;
|
||||
buildPhases = (
|
||||
AF8720481CA44FBD004C752C /* Sources */,
|
||||
AF8720491CA44FBD004C752C /* Frameworks */,
|
||||
AF87204A1CA44FBD004C752C /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
AF87204E1CA44FBD004C752C /* PBXTargetDependency */,
|
||||
);
|
||||
name = "VimeoPlayer-iOS-ExampleUITests";
|
||||
productName = "VimeoPlayer-iOS-ExampleUITests";
|
||||
productReference = AF87204C1CA44FBD004C752C /* VimeoPlayer-iOS-ExampleUITests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.ui-testing";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
AF8720251CA44FBC004C752C /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0720;
|
||||
LastUpgradeCheck = 0720;
|
||||
ORGANIZATIONNAME = Vimeo;
|
||||
TargetAttributes = {
|
||||
AF87202C1CA44FBD004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
};
|
||||
AF8720401CA44FBD004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
TestTargetID = AF87202C1CA44FBD004C752C;
|
||||
};
|
||||
AF87204B1CA44FBD004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
TestTargetID = AF87202C1CA44FBD004C752C;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = AF8720281CA44FBC004C752C /* Build configuration list for PBXProject "VimeoPlayer-iOS-Example" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = AF8720241CA44FBC004C752C;
|
||||
productRefGroup = AF87202E1CA44FBD004C752C /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
AF87202C1CA44FBD004C752C /* VimeoPlayer-iOS-Example */,
|
||||
AF8720401CA44FBD004C752C /* VimeoPlayer-iOS-ExampleTests */,
|
||||
AF87204B1CA44FBD004C752C /* VimeoPlayer-iOS-ExampleUITests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
AF87202B1CA44FBD004C752C /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AF87203B1CA44FBD004C752C /* LaunchScreen.storyboard in Resources */,
|
||||
AF8720381CA44FBD004C752C /* Assets.xcassets in Resources */,
|
||||
AF8720631CA4507C004C752C /* waterfall.mp4 in Resources */,
|
||||
AF8720361CA44FBD004C752C /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
AF87203F1CA44FBD004C752C /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
AF87204A1CA44FBD004C752C /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
AF8720291CA44FBD004C752C /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AF8720331CA44FBD004C752C /* ViewController.swift in Sources */,
|
||||
AF8720311CA44FBD004C752C /* AppDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
AF87203D1CA44FBD004C752C /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AF8720461CA44FBD004C752C /* VimeoPlayer_iOS_ExampleTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
AF8720481CA44FBD004C752C /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AF8720511CA44FBD004C752C /* VimeoPlayer_iOS_ExampleUITests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
AF8720431CA44FBD004C752C /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = AF87202C1CA44FBD004C752C /* VimeoPlayer-iOS-Example */;
|
||||
targetProxy = AF8720421CA44FBD004C752C /* PBXContainerItemProxy */;
|
||||
};
|
||||
AF87204E1CA44FBD004C752C /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = AF87202C1CA44FBD004C752C /* VimeoPlayer-iOS-Example */;
|
||||
targetProxy = AF87204D1CA44FBD004C752C /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
AF8720341CA44FBD004C752C /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
AF8720351CA44FBD004C752C /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AF8720391CA44FBD004C752C /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
AF87203A1CA44FBD004C752C /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
AF8720531CA44FBD004C752C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
AF8720541CA44FBD004C752C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
AF8720561CA44FBD004C752C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-Example/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-Example";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "${SRCROOT}/VimeoPlayer-iOS-Example/Bridge.h";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
AF8720571CA44FBD004C752C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-Example/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-Example";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "${SRCROOT}/VimeoPlayer-iOS-Example/Bridge.h";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
AF8720591CA44FBD004C752C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-ExampleTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-ExampleTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VimeoPlayer-iOS-Example.app/VimeoPlayer-iOS-Example";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
AF87205A1CA44FBD004C752C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-ExampleTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-ExampleTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VimeoPlayer-iOS-Example.app/VimeoPlayer-iOS-Example";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
AF87205C1CA44FBD004C752C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-ExampleUITests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-ExampleUITests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_TARGET_NAME = "VimeoPlayer-iOS-Example";
|
||||
USES_XCTRUNNER = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
AF87205D1CA44FBD004C752C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-ExampleUITests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-ExampleUITests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_TARGET_NAME = "VimeoPlayer-iOS-Example";
|
||||
USES_XCTRUNNER = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
AF8720281CA44FBC004C752C /* Build configuration list for PBXProject "VimeoPlayer-iOS-Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AF8720531CA44FBD004C752C /* Debug */,
|
||||
AF8720541CA44FBD004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AF8720551CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AF8720561CA44FBD004C752C /* Debug */,
|
||||
AF8720571CA44FBD004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
AF8720581CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-ExampleTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AF8720591CA44FBD004C752C /* Debug */,
|
||||
AF87205A1CA44FBD004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
AF87205B1CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-ExampleUITests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AF87205C1CA44FBD004C752C /* Debug */,
|
||||
AF87205D1CA44FBD004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = AF8720251CA44FBC004C752C /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// AppDelegate.swift
|
||||
// VimeoPlayer-iOS-Example
|
||||
//
|
||||
// Created by Alfred Hanssen on 3/24/16.
|
||||
// Copyright © 2016 Vimeo. All rights reserved.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
|
||||
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
|
||||
// Override point for customization after application launch.
|
||||
return true
|
||||
}
|
||||
|
||||
func applicationWillResignActive(application: UIApplication) {
|
||||
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
||||
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
|
||||
}
|
||||
|
||||
func applicationDidEnterBackground(application: UIApplication) {
|
||||
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
||||
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
||||
}
|
||||
|
||||
func applicationWillEnterForeground(application: UIApplication) {
|
||||
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
|
||||
}
|
||||
|
||||
func applicationDidBecomeActive(application: UIApplication) {
|
||||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
||||
}
|
||||
|
||||
func applicationWillTerminate(application: UIApplication) {
|
||||
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8150" systemVersion="15A204g" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8122"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
@@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9531" systemVersion="14F1021" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9529"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="tne-QT-ifu">
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="VimeoPlayer_iOS_Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dlK-T8-76H" customClass="VIMVideoPlayerView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<subviews>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="Fpe-Xd-JjQ">
|
||||
<rect key="frame" x="30" y="538" width="540" height="31"/>
|
||||
</slider>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" adjustsImageWhenDisabled="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m2w-Rp-esh">
|
||||
<rect key="frame" x="265" y="464" width="70" height="42"/>
|
||||
<inset key="contentEdgeInsets" minX="10" minY="10" maxX="10" maxY="10"/>
|
||||
<state key="normal" title="Pause">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="selected" title="Play"/>
|
||||
<connections>
|
||||
<action selector="didTapPlayPauseButton:" destination="BYZ-38-t0r" eventType="touchUpInside" id="k4N-dE-gAb"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="Fpe-Xd-JjQ" secondAttribute="trailing" constant="32" id="Aio-uX-Vax"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Fpe-Xd-JjQ" secondAttribute="bottom" constant="32" id="AmU-0k-ECZ"/>
|
||||
<constraint firstItem="Fpe-Xd-JjQ" firstAttribute="leading" secondItem="dlK-T8-76H" secondAttribute="leading" constant="32" id="g6f-nR-ucA"/>
|
||||
<constraint firstItem="m2w-Rp-esh" firstAttribute="centerX" secondItem="dlK-T8-76H" secondAttribute="centerX" id="h8P-Ec-qS6"/>
|
||||
<constraint firstItem="Fpe-Xd-JjQ" firstAttribute="top" secondItem="m2w-Rp-esh" secondAttribute="bottom" constant="32" id="ws9-bw-Fdm"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="dlK-T8-76H" secondAttribute="trailing" id="DiY-6m-b3H"/>
|
||||
<constraint firstItem="dlK-T8-76H" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="K0Z-JZ-VFd"/>
|
||||
<constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="dlK-T8-76H" secondAttribute="bottom" id="ObE-ww-JRe"/>
|
||||
<constraint firstItem="dlK-T8-76H" firstAttribute="top" secondItem="8bC-Xf-vdC" secondAttribute="top" id="Zeb-bG-lQ1"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="slider" destination="Fpe-Xd-JjQ" id="jtw-Nk-gsP"/>
|
||||
<outlet property="videoPlayerView" destination="dlK-T8-76H" id="nGY-wW-ReT"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="240" y="291"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
@@ -0,0 +1,9 @@
|
||||
//
|
||||
// VIMVideoPlayer-iOS-Example-Bridging-Header.h
|
||||
// VIMVideoPlayer-iOS-Example
|
||||
//
|
||||
// Created by King, Gavin on 3/10/16.
|
||||
// Copyright © 2016 Gavin King. All rights reserved.
|
||||
//
|
||||
|
||||
#import <VimeoPlayer/VimeoPlayer.h>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,139 @@
|
||||
//
|
||||
// ViewController.swift
|
||||
// VIMVideoPlayer-iOS-Example
|
||||
//
|
||||
// Created by King, Gavin on 3/9/16.
|
||||
// Copyright © 2016 Gavin King. All rights reserved.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class ViewController: UIViewController, VIMVideoPlayerViewDelegate
|
||||
{
|
||||
@IBOutlet weak var videoPlayerView: VIMVideoPlayerView!
|
||||
@IBOutlet weak var slider: UISlider!
|
||||
|
||||
private var isScrubbing = false
|
||||
|
||||
override func viewDidLoad()
|
||||
{
|
||||
super.viewDidLoad()
|
||||
|
||||
self.setupVideoPlayerView()
|
||||
self.setupSlider()
|
||||
}
|
||||
|
||||
// MARK: Setup
|
||||
|
||||
private func setupVideoPlayerView()
|
||||
{
|
||||
self.videoPlayerView.player.looping = true
|
||||
self.videoPlayerView.player.disableAirplay()
|
||||
self.videoPlayerView.setVideoFillMode(AVLayerVideoGravityResizeAspectFill)
|
||||
|
||||
self.videoPlayerView.delegate = self
|
||||
|
||||
if let path = NSBundle.mainBundle().pathForResource("waterfall", ofType: "mp4")
|
||||
{
|
||||
self.videoPlayerView.player.setURL(NSURL(fileURLWithPath: path))
|
||||
}
|
||||
else
|
||||
{
|
||||
assertionFailure("Video file not found!")
|
||||
}
|
||||
}
|
||||
|
||||
private func setupSlider()
|
||||
{
|
||||
self.slider.addTarget(self, action: "scrubbingDidStart", forControlEvents: UIControlEvents.TouchDown)
|
||||
self.slider.addTarget(self, action: "scrubbingDidChange", forControlEvents: UIControlEvents.ValueChanged)
|
||||
self.slider.addTarget(self, action: "scrubbingDidEnd", forControlEvents: UIControlEvents.TouchUpInside)
|
||||
self.slider.addTarget(self, action: "scrubbingDidEnd", forControlEvents: UIControlEvents.TouchUpOutside)
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
@IBAction func didTapPlayPauseButton(sender: UIButton)
|
||||
{
|
||||
if self.videoPlayerView.player.playing
|
||||
{
|
||||
sender.selected = true
|
||||
|
||||
self.videoPlayerView.player.pause()
|
||||
}
|
||||
else
|
||||
{
|
||||
sender.selected = false
|
||||
|
||||
self.videoPlayerView.player.play()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Scrubbing Actions
|
||||
|
||||
func scrubbingDidStart()
|
||||
{
|
||||
self.isScrubbing = true
|
||||
|
||||
self.videoPlayerView.player.startScrubbing()
|
||||
}
|
||||
|
||||
func scrubbingDidChange()
|
||||
{
|
||||
guard let duration = self.videoPlayerView.player.player.currentItem?.duration
|
||||
where self.isScrubbing == true else
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
let time = Float(CMTimeGetSeconds(duration)) * self.slider.value
|
||||
|
||||
self.videoPlayerView.player.scrub(time)
|
||||
}
|
||||
|
||||
func scrubbingDidEnd()
|
||||
{
|
||||
self.videoPlayerView.player.stopScrubbing()
|
||||
|
||||
self.isScrubbing = false
|
||||
}
|
||||
|
||||
// MARK: VIMVideoPlayerViewDelegate
|
||||
|
||||
func videoPlayerViewIsReadyToPlayVideo(videoPlayerView: VIMVideoPlayerView?)
|
||||
{
|
||||
self.videoPlayerView.player.play()
|
||||
}
|
||||
|
||||
func videoPlayerView(videoPlayerView: VIMVideoPlayerView!, timeDidChange cmTime: CMTime)
|
||||
{
|
||||
guard let duration = self.videoPlayerView.player.player.currentItem?.duration
|
||||
where self.isScrubbing == false else
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
let durationInSeconds = Float(CMTimeGetSeconds(duration))
|
||||
let timeInSeconds = Float(CMTimeGetSeconds(cmTime))
|
||||
|
||||
self.slider.value = timeInSeconds / durationInSeconds
|
||||
}
|
||||
}
|
||||
Binary file not shown.
+1
-1
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.vimeo.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// VimeoPlayer_iOS_ExampleTests.swift
|
||||
// VimeoPlayer-iOS-ExampleTests
|
||||
//
|
||||
// Created by Alfred Hanssen on 3/24/16.
|
||||
// Copyright © 2016 Vimeo. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import VimeoPlayer_iOS_Example
|
||||
|
||||
class VimeoPlayer_iOS_ExampleTests: XCTestCase {
|
||||
|
||||
override func setUp() {
|
||||
super.setUp()
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
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() {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
func testPerformanceExample() {
|
||||
// This is an example of a performance test case.
|
||||
self.measureBlock {
|
||||
// Put the code you want to measure the time of here.
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// VimeoPlayer_iOS_ExampleUITests.swift
|
||||
// VimeoPlayer-iOS-ExampleUITests
|
||||
//
|
||||
// Created by Alfred Hanssen on 3/24/16.
|
||||
// Copyright © 2016 Vimeo. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
class VimeoPlayer_iOS_ExampleUITests: XCTestCase {
|
||||
|
||||
override func setUp() {
|
||||
super.setUp()
|
||||
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
|
||||
// In UI tests it is usually best to stop immediately when a failure occurs.
|
||||
continueAfterFailure = false
|
||||
// UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
|
||||
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.
|
||||
}
|
||||
|
||||
}
|
||||
+4
-1
@@ -1,4 +1,7 @@
|
||||
Copyright (c) 2014-2015 Vimeo (https://vimeo.com)
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014-2016 Vimeo (https://vimeo.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,100 +1,126 @@
|
||||
# VIMVideoPlayer
|
||||
|
||||
`VIMVideoPlayer` is a simple wrapper around the [`AVPlayer`](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html) and [`AVPlayerLayer`](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerLayer_Class/index.html#//apple_ref/occ/cl/AVPlayerLayer) classes. Check out the [Pegasus](https://github.com/vimeo/Pegasus) project for a demo.
|
||||
`VIMVideoPlayer` is a simple wrapper around the [AVPlayer](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html) and [AVPlayerLayer](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerLayer_Class/index.html#//apple_ref/occ/cl/AVPlayerLayer) classes.
|
||||
|
||||
## Setup
|
||||
|
||||
Add the `VIMVideoPlayerView` and `VIMVideoPlayer` classes to your project.
|
||||
|
||||
Do this by including it as a git submodule or by using cocoapods:
|
||||
Do this by including this repo as a git submodule or by using cocoapods:
|
||||
|
||||
```Ruby
|
||||
# Add this to your podfile
|
||||
target 'MyTarget' do
|
||||
pod 'VIMVideoPlayer', '5.4.2'
|
||||
pod 'VIMVideoPlayer', ‘{CURRENT_POD_VERSION}’
|
||||
end
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Create a new `VIMVideoPlayerView` and add it to your view hierarchy:
|
||||
Create a new `VIMVideoPlayerView` instance or set up an @IBOutlet:
|
||||
|
||||
```Objective-c
|
||||
#import "VIMVideoPlayerView.h"
|
||||
```Swift
|
||||
|
||||
@IBOutlet weak var videoPlayerView: VIMVideoPlayerView!
|
||||
|
||||
...
|
||||
|
||||
- (void)viewDidLoad
|
||||
override func viewDidLoad()
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
self.videoPlayerView = [[VIMVideoPlayerView alloc] init];
|
||||
self.videoPlayerView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
self.videoPlayerView.delegate = self;
|
||||
|
||||
[self.videoPlayerView setVideoFillMode:AVLayerVideoGravityResizeAspect];
|
||||
[self.videoPlayerView.player enableTimeUpdates];
|
||||
[self.videoPlayerView.player enableAirplay];
|
||||
|
||||
[self.view addSubview:self.videoPlayerView];
|
||||
|
||||
NSDictionary *views = NSDictionaryOfVariableBindings(_videoPlayerView);
|
||||
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_videoPlayerView]-0-|" options:0 metrics:nil views:views]];
|
||||
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_videoPlayerView]-0-|" options:0 metrics:nil views:views]];
|
||||
// Configure the player as needed
|
||||
self.videoPlayerView.player.looping = true
|
||||
self.videoPlayerView.player.disableAirplay()
|
||||
self.videoPlayerView.setVideoFillMode(AVLayerVideoGravityResizeAspectFill)
|
||||
|
||||
self.videoPlayerView.delegate = self
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Play a video:
|
||||
|
||||
```Objective-c
|
||||
```Swift
|
||||
|
||||
// Using an NSURL
|
||||
|
||||
NSURL *URL = ...;
|
||||
[self.videoPlayerView.player setURL:URL];
|
||||
[self.videoPlayerView.player play];
|
||||
if let path = NSBundle.mainBundle().pathForResource("waterfall", ofType: "mp4")
|
||||
{
|
||||
self.videoPlayerView.player.setURL(NSURL(fileURLWithPath: path))
|
||||
}
|
||||
else
|
||||
{
|
||||
// Video file not found!
|
||||
}
|
||||
|
||||
/*
|
||||
Note: This must be a URL to an actual video resource (e.g. http://website.com/video.mp4 or .m3u8 etc.),
|
||||
It cannot be a URL to a web page (e.g. https://vimeo.com/67069182),
|
||||
See below for info on using VIMVideoPlayer to play Vimeo videos.
|
||||
*/
|
||||
|
||||
// Using an AVPlayerItem
|
||||
|
||||
AVPlayerItem *playerItem = ...;
|
||||
[self.videoPlayerView.player setPlayerItem:playerItem];
|
||||
[self.videoPlayerView.player play];
|
||||
let playerItem: AVPlayerItem = ...
|
||||
self.videoPlayerView.player.setPlayerItem(playerItem)
|
||||
self.videoPlayerView.player.play()
|
||||
|
||||
// Or using an AVAsset
|
||||
|
||||
AVAsset *asset = ...;
|
||||
[self.videoPlayerView.player setAsset:asset];
|
||||
[self.videoPlayerView.player play];
|
||||
let asset: AVAsset = ...
|
||||
self.videoPlayerView.player.setAsset(asset)
|
||||
self.videoPlayerView.player.play()
|
||||
|
||||
```
|
||||
|
||||
Optionally implement the `VIMVideoPlayerViewDelegate` protocol methods:
|
||||
|
||||
```Objective-c
|
||||
@protocol VIMVideoPlayerViewDelegate <NSObject>
|
||||
```Swift
|
||||
|
||||
@optional
|
||||
- (void)videoPlayerViewIsReadyToPlayVideo:(VIMVideoPlayerView *)videoPlayerView;
|
||||
- (void)videoPlayerViewDidReachEnd:(VIMVideoPlayerView *)videoPlayerView;
|
||||
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView timeDidChange:(CMTime)cmTime;
|
||||
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView loadedTimeRangeDidChange:(float)duration;
|
||||
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView didFailWithError:(NSError *)error;
|
||||
protocol VIMVideoPlayerViewDelegate
|
||||
{
|
||||
optional func videoPlayerViewIsReadyToPlayVideo(videoPlayerView: VIMVideoPlayerView!)
|
||||
optional func videoPlayerViewDidReachEnd(videoPlayerView: VIMVideoPlayerView!)
|
||||
optional func videoPlayerView(videoPlayerView: VIMVideoPlayerView!, timeDidChange cmTime: CMTime)
|
||||
optional func videoPlayerView(videoPlayerView: VIMVideoPlayerView!, loadedTimeRangeDidChange duration: Float)
|
||||
optional func videoPlayerViewPlaybackBufferEmpty(videoPlayerView: VIMVideoPlayerView!)
|
||||
optional func videoPlayerViewPlaybackLikelyToKeepUp(videoPlayerView: VIMVideoPlayerView!)
|
||||
optional func videoPlayerView(videoPlayerView: VIMVideoPlayerView!, didFailWithError error: NSError!)
|
||||
}
|
||||
|
||||
@end
|
||||
```
|
||||
|
||||
See `VIMVideoPlayer.h` for additional configuration options and functionality.
|
||||
See [`VIMVideoPlayer.h`](https://github.com/vimeo/VIMVideoPlayer/blob/master/VIMVideoPlayer/VIMVideoPlayer.h) for additional configuration options.
|
||||
|
||||
See `VIMVideoPlayerViewController` for an example of how to encapsulate a `VIMVideoPlayerView` instance with playback controls (play/pause/seek/airplay etc).
|
||||
## Playing Vimeo Videos
|
||||
|
||||
[Vimeo Pro](https://vimeo.com/pro) members can access playback URLs for Vimeo videos using the [Vimeo API](https://developer.vimeo.com/). Playback URLs are only included in the response object if the requesting account is a [Vimeo Pro](https://vimeo.com/pro) account.
|
||||
|
||||
If you have a [Vimeo Pro](https://vimeo.com/pro) account, when you make a request to the [Vimeo API](https://developer.vimeo.com/) for a video object the response object will contain a list of video `files`. These represent the various resolution video files available for this particular video. Each has a `link`. You can use the string value keyed to `link` to create an NSURL. You can pass this NSURL to VIMVideoPlayer for playback.
|
||||
|
||||
Check out [this](http://stackoverflow.com/questions/31960338/ios-vimvideoplayerview-cant-load-vimeo-videos) Stack Overflow question for additional info.
|
||||
|
||||
You can use the [Vimeo iOS SDK](https://github.com/vimeo/VIMNetworking) to interact with the [Vimeo API](https://developer.vimeo.com/).
|
||||
|
||||
For full documentation on the Vimeo API go [here](https://developer.vimeo.com/).
|
||||
|
||||
## Found an Issue?
|
||||
|
||||
Please file it in the git [issue tracker](https://github.com/vimeo/VIMVideoPlayer/issues).
|
||||
|
||||
## Want to Contribute?
|
||||
|
||||
If you'd like to contribute, please follow our guidelines found in [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## License
|
||||
|
||||
`VIMVideoPlayer` is available under the MIT license. See the LICENSE file for more info.
|
||||
`VIMVideoPlayer` is available under the MIT license. See the [LICENSE](LICENSE.md) file for more info.
|
||||
|
||||
## Questions?
|
||||
|
||||
Tweet at us here: @vimeoapi
|
||||
Tweet at us here: [@vimeoapi](https://twitter.com/vimeoapi).
|
||||
|
||||
Post on [Stackoverflow](http://stackoverflow.com/questions/tagged/vimeo-ios) with the tag `vimeo-ios`
|
||||
Post on [Stackoverflow](http://stackoverflow.com/questions/tagged/vimeo-ios) with the tag `vimeo-ios`.
|
||||
|
||||
Get in touch [here](Vimeo.com/help/contact)
|
||||
Get in touch [here](https://vimeo.com/help/contact).
|
||||
|
||||
Interested in working at Vimeo? We're [hiring](https://vimeo.com/jobs)!
|
||||
|
||||
@@ -0,0 +1,407 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
AF8720021CA447E5004C752C /* VimeoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8720011CA447E5004C752C /* VimeoPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
AF8720091CA447E5004C752C /* VimeoPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF871FFE1CA447E5004C752C /* VimeoPlayer.framework */; };
|
||||
AF87200E1CA447E5004C752C /* VimeoPlayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = AF87200D1CA447E5004C752C /* VimeoPlayerTests.m */; };
|
||||
AF87201C1CA44814004C752C /* VIMVideoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8720181CA44814004C752C /* VIMVideoPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
AF87201D1CA44814004C752C /* VIMVideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = AF8720191CA44814004C752C /* VIMVideoPlayer.m */; };
|
||||
AF87201E1CA44814004C752C /* VIMVideoPlayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = AF87201A1CA44814004C752C /* VIMVideoPlayerView.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
AF87201F1CA44814004C752C /* VIMVideoPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = AF87201B1CA44814004C752C /* VIMVideoPlayerView.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
AF87200A1CA447E5004C752C /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = AF871FF51CA447E4004C752C /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = AF871FFD1CA447E5004C752C;
|
||||
remoteInfo = VimeoPlayer;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
AF871FFE1CA447E5004C752C /* VimeoPlayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VimeoPlayer.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AF8720011CA447E5004C752C /* VimeoPlayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VimeoPlayer.h; sourceTree = "<group>"; };
|
||||
AF8720031CA447E5004C752C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
AF8720081CA447E5004C752C /* VimeoPlayerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VimeoPlayerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AF87200D1CA447E5004C752C /* VimeoPlayerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VimeoPlayerTests.m; sourceTree = "<group>"; };
|
||||
AF87200F1CA447E5004C752C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
AF8720181CA44814004C752C /* VIMVideoPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VIMVideoPlayer.h; path = "../../VIMVideoPlayer-Source/VIMVideoPlayer.h"; sourceTree = "<group>"; };
|
||||
AF8720191CA44814004C752C /* VIMVideoPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VIMVideoPlayer.m; path = "../../VIMVideoPlayer-Source/VIMVideoPlayer.m"; sourceTree = "<group>"; };
|
||||
AF87201A1CA44814004C752C /* VIMVideoPlayerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VIMVideoPlayerView.h; path = "../../VIMVideoPlayer-Source/VIMVideoPlayerView.h"; sourceTree = "<group>"; };
|
||||
AF87201B1CA44814004C752C /* VIMVideoPlayerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VIMVideoPlayerView.m; path = "../../VIMVideoPlayer-Source/VIMVideoPlayerView.m"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
AF871FFA1CA447E5004C752C /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
AF8720051CA447E5004C752C /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AF8720091CA447E5004C752C /* VimeoPlayer.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
AF871FF41CA447E4004C752C = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF8720001CA447E5004C752C /* VimeoPlayer */,
|
||||
AF87200C1CA447E5004C752C /* VimeoPlayerTests */,
|
||||
AF871FFF1CA447E5004C752C /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AF871FFF1CA447E5004C752C /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF871FFE1CA447E5004C752C /* VimeoPlayer.framework */,
|
||||
AF8720081CA447E5004C752C /* VimeoPlayerTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AF8720001CA447E5004C752C /* VimeoPlayer */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF8720011CA447E5004C752C /* VimeoPlayer.h */,
|
||||
AF8720181CA44814004C752C /* VIMVideoPlayer.h */,
|
||||
AF8720191CA44814004C752C /* VIMVideoPlayer.m */,
|
||||
AF87201A1CA44814004C752C /* VIMVideoPlayerView.h */,
|
||||
AF87201B1CA44814004C752C /* VIMVideoPlayerView.m */,
|
||||
AF8720031CA447E5004C752C /* Info.plist */,
|
||||
);
|
||||
path = VimeoPlayer;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AF87200C1CA447E5004C752C /* VimeoPlayerTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AF87200D1CA447E5004C752C /* VimeoPlayerTests.m */,
|
||||
AF87200F1CA447E5004C752C /* Info.plist */,
|
||||
);
|
||||
path = VimeoPlayerTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
AF871FFB1CA447E5004C752C /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AF87201C1CA44814004C752C /* VIMVideoPlayer.h in Headers */,
|
||||
AF87201E1CA44814004C752C /* VIMVideoPlayerView.h in Headers */,
|
||||
AF8720021CA447E5004C752C /* VimeoPlayer.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
AF871FFD1CA447E5004C752C /* VimeoPlayer */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AF8720121CA447E5004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer" */;
|
||||
buildPhases = (
|
||||
AF871FF91CA447E5004C752C /* Sources */,
|
||||
AF871FFA1CA447E5004C752C /* Frameworks */,
|
||||
AF871FFB1CA447E5004C752C /* Headers */,
|
||||
AF871FFC1CA447E5004C752C /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = VimeoPlayer;
|
||||
productName = VimeoPlayer;
|
||||
productReference = AF871FFE1CA447E5004C752C /* VimeoPlayer.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
AF8720071CA447E5004C752C /* VimeoPlayerTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AF8720151CA447E5004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayerTests" */;
|
||||
buildPhases = (
|
||||
AF8720041CA447E5004C752C /* Sources */,
|
||||
AF8720051CA447E5004C752C /* Frameworks */,
|
||||
AF8720061CA447E5004C752C /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
AF87200B1CA447E5004C752C /* PBXTargetDependency */,
|
||||
);
|
||||
name = VimeoPlayerTests;
|
||||
productName = VimeoPlayerTests;
|
||||
productReference = AF8720081CA447E5004C752C /* VimeoPlayerTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
AF871FF51CA447E4004C752C /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0720;
|
||||
ORGANIZATIONNAME = Vimeo;
|
||||
TargetAttributes = {
|
||||
AF871FFD1CA447E5004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
};
|
||||
AF8720071CA447E5004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = AF871FF81CA447E4004C752C /* Build configuration list for PBXProject "VimeoPlayer" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = AF871FF41CA447E4004C752C;
|
||||
productRefGroup = AF871FFF1CA447E5004C752C /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
AF871FFD1CA447E5004C752C /* VimeoPlayer */,
|
||||
AF8720071CA447E5004C752C /* VimeoPlayerTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
AF871FFC1CA447E5004C752C /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
AF8720061CA447E5004C752C /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
AF871FF91CA447E5004C752C /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AF87201F1CA44814004C752C /* VIMVideoPlayerView.m in Sources */,
|
||||
AF87201D1CA44814004C752C /* VIMVideoPlayer.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
AF8720041CA447E5004C752C /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AF87200E1CA447E5004C752C /* VimeoPlayerTests.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
AF87200B1CA447E5004C752C /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = AF871FFD1CA447E5004C752C /* VimeoPlayer */;
|
||||
targetProxy = AF87200A1CA447E5004C752C /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
AF8720101CA447E5004C752C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
AF8720111CA447E5004C752C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
AF8720131CA447E5004C752C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = VimeoPlayer/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VimeoPlayer;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
AF8720141CA447E5004C752C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = VimeoPlayer/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VimeoPlayer;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
AF8720161CA447E5004C752C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
INFOPLIST_FILE = VimeoPlayerTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VimeoPlayerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
AF8720171CA447E5004C752C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
INFOPLIST_FILE = VimeoPlayerTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VimeoPlayerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
AF871FF81CA447E4004C752C /* Build configuration list for PBXProject "VimeoPlayer" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AF8720101CA447E5004C752C /* Debug */,
|
||||
AF8720111CA447E5004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AF8720121CA447E5004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AF8720131CA447E5004C752C /* Debug */,
|
||||
AF8720141CA447E5004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AF8720151CA447E5004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayerTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AF8720161CA447E5004C752C /* Debug */,
|
||||
AF8720171CA447E5004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = AF871FF51CA447E4004C752C /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// VimeoPlayer.h
|
||||
// VimeoPlayer
|
||||
//
|
||||
// Created by Alfred Hanssen on 3/24/16.
|
||||
// Copyright © 2016 Vimeo. All rights reserved.
|
||||
//
|
||||
|
||||
@import UIKit;
|
||||
|
||||
//! Project version number for VimeoPlayer.
|
||||
FOUNDATION_EXPORT double VimeoPlayerVersionNumber;
|
||||
|
||||
//! Project version string for VimeoPlayer.
|
||||
FOUNDATION_EXPORT const unsigned char VimeoPlayerVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <VimeoPlayer/PublicHeader.h>
|
||||
|
||||
#import <VimeoPlayer/VIMVideoPlayer.h>
|
||||
#import <VimeoPlayer/VIMVideoPlayerView.h>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,39 @@
|
||||
//
|
||||
// VimeoPlayerTests.m
|
||||
// VimeoPlayerTests
|
||||
//
|
||||
// Created by Alfred Hanssen on 3/24/16.
|
||||
// Copyright © 2016 Vimeo. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
@interface VimeoPlayerTests : XCTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation VimeoPlayerTests
|
||||
|
||||
- (void)setUp {
|
||||
[super setUp];
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
- (void)tearDown {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testExample {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
- (void)testPerformanceExample {
|
||||
// This is an example of a performance test case.
|
||||
[self measureBlock:^{
|
||||
// Put the code you want to measure the time of here.
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// VideoPlayer.h
|
||||
// Smokescreen
|
||||
// Vimeo
|
||||
//
|
||||
// Created by Alfred Hanssen on 2/9/14.
|
||||
// Copyright (c) 2014-2015 Vimeo (https://vimeo.com)
|
||||
@@ -24,10 +24,9 @@
|
||||
// THE SOFTWARE.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
@import Foundation;
|
||||
@import AVFoundation;
|
||||
|
||||
@class AVPlayer;
|
||||
@class VIMVideoPlayer;
|
||||
|
||||
@protocol VIMVideoPlayerDelegate <NSObject>
|
||||
@@ -37,6 +36,8 @@
|
||||
- (void)videoPlayerDidReachEnd:(VIMVideoPlayer *)videoPlayer;
|
||||
- (void)videoPlayer:(VIMVideoPlayer *)videoPlayer timeDidChange:(CMTime)cmTime;
|
||||
- (void)videoPlayer:(VIMVideoPlayer *)videoPlayer loadedTimeRangeDidChange:(float)duration;
|
||||
- (void)videoPlayerPlaybackBufferEmpty:(VIMVideoPlayer *)videoPlayer;
|
||||
- (void)videoPlayerPlaybackLikelyToKeepUp:(VIMVideoPlayer *)videoPlayer;
|
||||
- (void)videoPlayer:(VIMVideoPlayer *)videoPlayer didFailWithError:(NSError *)error;
|
||||
|
||||
@end
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// VideoPlayer.m
|
||||
// Smokescreen
|
||||
// Vimeo
|
||||
//
|
||||
// Created by Alfred Hanssen on 2/9/14.
|
||||
// Copyright (c) 2014-2015 Vimeo (https://vimeo.com)
|
||||
@@ -55,6 +55,8 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
@property (nonatomic, assign) BOOL isTimingUpdateEnabled;
|
||||
@property (nonatomic, strong) id timeObserverToken;
|
||||
|
||||
@property (nonatomic, strong) AVPlayerItem *item;
|
||||
|
||||
@end
|
||||
|
||||
@implementation VIMVideoPlayer
|
||||
@@ -68,8 +70,6 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
[self removeTimeObserver];
|
||||
|
||||
[self cancelFadeVolume];
|
||||
|
||||
NSLog(@"dealloc");
|
||||
}
|
||||
|
||||
- (instancetype)init
|
||||
@@ -94,9 +94,14 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
|
||||
- (void)setupPlayer
|
||||
{
|
||||
self.player = [AVPlayer playerWithPlayerItem:nil];
|
||||
self.player.muted = NO;
|
||||
self.player.allowsExternalPlayback = YES;
|
||||
self.player = [[AVPlayer alloc] init];
|
||||
|
||||
self.muted = NO;
|
||||
self.looping = NO;
|
||||
|
||||
[self setVolume:1.0f];
|
||||
[self enableTimeUpdates];
|
||||
[self enableAirplay];
|
||||
}
|
||||
|
||||
- (void)setupAudioSession
|
||||
@@ -407,11 +412,13 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
|
||||
- (void)resetPlayerItemIfNecessary
|
||||
{
|
||||
if (self.player.currentItem)
|
||||
if (self.item)
|
||||
{
|
||||
[self removePlayerItemObservers:self.player.currentItem];
|
||||
[self removePlayerItemObservers:self.item];
|
||||
|
||||
[self.player replaceCurrentItemWithPlayerItem:nil];
|
||||
|
||||
self.item = nil;
|
||||
}
|
||||
|
||||
_volumeFadeDuration = DefaultVolumeFadeDuration;
|
||||
@@ -424,6 +431,10 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
|
||||
- (void)preparePlayerItem:(AVPlayerItem *)playerItem
|
||||
{
|
||||
NSParameterAssert(playerItem);
|
||||
|
||||
self.item = playerItem;
|
||||
|
||||
[self addPlayerItemObservers:playerItem];
|
||||
|
||||
[self.player replaceCurrentItemWithPlayerItem:playerItem];
|
||||
@@ -705,26 +716,22 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
NSLog(@"Video player Status Failed: player item error = %@", self.player.currentItem.error);
|
||||
NSLog(@"Video player Status Failed: player error = %@", self.player.error);
|
||||
|
||||
NSError *error = self.player.error;
|
||||
if (!error)
|
||||
{
|
||||
error = self.player.currentItem.error;
|
||||
}
|
||||
else
|
||||
{
|
||||
error = [NSError errorWithDomain:kVideoPlayerErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @"unknown player error, status == AVPlayerItemStatusFailed"}];
|
||||
}
|
||||
|
||||
[self reset];
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayer:didFailWithError:)])
|
||||
{
|
||||
[self reset];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
|
||||
if (self.player.error)
|
||||
{
|
||||
[self.delegate videoPlayer:self didFailWithError:self.player.error];
|
||||
}
|
||||
else if (self.player.currentItem.error)
|
||||
{
|
||||
[self.delegate videoPlayer:self didFailWithError:self.player.currentItem.error];
|
||||
}
|
||||
else
|
||||
{
|
||||
NSError *error = [NSError errorWithDomain:kVideoPlayerErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @"unknown player error, status == AVPlayerItemStatusFailed"}];
|
||||
[self.delegate videoPlayer:self didFailWithError:error];
|
||||
}
|
||||
|
||||
[self.delegate videoPlayer:self didFailWithError:error];
|
||||
});
|
||||
}
|
||||
|
||||
@@ -732,6 +739,18 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (newStatus == AVPlayerItemStatusReadyToPlay)
|
||||
{
|
||||
// When playback resumes after a buffering event, a new ReadyToPlay status is set [RH]
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerPlaybackLikelyToKeepUp:)])
|
||||
{
|
||||
dispatch_async(dispatch_get_main_queue(), ^
|
||||
{
|
||||
[self.delegate videoPlayerPlaybackLikelyToKeepUp:self];
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (context == VideoPlayer_PlayerItemPlaybackBufferEmpty)
|
||||
{
|
||||
@@ -739,7 +758,13 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
{
|
||||
if (self.isPlaying)
|
||||
{
|
||||
// TODO: Show Loading indicator
|
||||
dispatch_async(dispatch_get_main_queue(), ^
|
||||
{
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerPlaybackBufferEmpty:)])
|
||||
{
|
||||
[self.delegate videoPlayerPlaybackBufferEmpty:self];
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// VideoPlayerView.h
|
||||
// Smokescreen
|
||||
// Vimeo
|
||||
//
|
||||
// Created by Alfred Hanssen on 2/9/14.
|
||||
// Copyright (c) 2014-2015 Vimeo (https://vimeo.com)
|
||||
@@ -24,8 +24,9 @@
|
||||
// THE SOFTWARE.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
@import Foundation;
|
||||
@import AVFoundation;
|
||||
@import UIKit;
|
||||
|
||||
@class VIMVideoPlayer;
|
||||
@class VIMVideoPlayerView;
|
||||
@@ -37,6 +38,8 @@
|
||||
- (void)videoPlayerViewDidReachEnd:(VIMVideoPlayerView *)videoPlayerView;
|
||||
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView timeDidChange:(CMTime)cmTime;
|
||||
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView loadedTimeRangeDidChange:(float)duration;
|
||||
- (void)videoPlayerViewPlaybackBufferEmpty:(VIMVideoPlayerView *)videoPlayerView;
|
||||
- (void)videoPlayerViewPlaybackLikelyToKeepUp:(VIMVideoPlayerView *)videoPlayerView;
|
||||
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView didFailWithError:(NSError *)error;
|
||||
|
||||
@end
|
||||
@@ -47,6 +50,8 @@
|
||||
|
||||
@property (nonatomic, strong) VIMVideoPlayer *player;
|
||||
|
||||
- (void)setPlayer:(VIMVideoPlayer *)player;
|
||||
|
||||
- (void)setVideoFillMode:(NSString *)fillMode;
|
||||
|
||||
@end
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// VideoPlayerView.m
|
||||
// Smokescreen
|
||||
// Vimeo
|
||||
//
|
||||
// Created by Alfred Hanssen on 2/9/14.
|
||||
// Copyright (c) 2014-2015 Vimeo (https://vimeo.com)
|
||||
@@ -27,8 +27,6 @@
|
||||
#import "VIMVideoPlayerView.h"
|
||||
#import "VIMVideoPlayer.h"
|
||||
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
|
||||
@interface VIMVideoPlayerView () <VIMVideoPlayerDelegate>
|
||||
|
||||
@end
|
||||
@@ -66,11 +64,9 @@
|
||||
|
||||
- (void)commonInit
|
||||
{
|
||||
_player = [[VIMVideoPlayer alloc] init];
|
||||
_player.muted = YES;
|
||||
_player.looping = YES;
|
||||
VIMVideoPlayer *player = [[VIMVideoPlayer alloc] init];
|
||||
|
||||
[self attachPlayer];
|
||||
[self setPlayer:player];
|
||||
}
|
||||
|
||||
#pragma mark - Public API
|
||||
@@ -81,7 +77,7 @@
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
[self detachPlayer];
|
||||
|
||||
_player = player;
|
||||
@@ -156,6 +152,22 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void)videoPlayerPlaybackBufferEmpty:(VIMVideoPlayer *)videoPlayer
|
||||
{
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerViewPlaybackBufferEmpty:)])
|
||||
{
|
||||
[self.delegate videoPlayerViewPlaybackBufferEmpty:self];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)videoPlayerPlaybackLikelyToKeepUp:(VIMVideoPlayer *)videoPlayer
|
||||
{
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerViewPlaybackLikelyToKeepUp:)])
|
||||
{
|
||||
[self.delegate videoPlayerViewPlaybackLikelyToKeepUp:self];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)videoPlayer:(VIMVideoPlayer *)videoPlayer didFailWithError:(NSError *)error
|
||||
{
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerView:didFailWithError:)])
|
||||
+13
-24
@@ -9,7 +9,7 @@
|
||||
Pod::Spec.new do |s|
|
||||
|
||||
s.name = "VIMVideoPlayer"
|
||||
s.version = "5.5.3"
|
||||
s.version = "6.0.1"
|
||||
s.summary = "A simple wrapper around the AVPlayer and AVPlayerLayer classes."
|
||||
s.description = <<-DESC
|
||||
VIMVideoPlayer is a simple wrapper around the AVPlayer and AVPlayerLayer classes. Check out the README for details. And the Pegasus project for a demo.
|
||||
@@ -19,33 +19,22 @@ Pod::Spec.new do |s|
|
||||
s.license = "MIT"
|
||||
s.license = { :type => "MIT", :file => "LICENSE.md" }
|
||||
|
||||
s.authors = { "Alfie Hanssen" => "alfiehanssen@gmail.com" }
|
||||
s.social_media_url = "http://twitter.com/vimeo"
|
||||
s.authors = { "Alfie Hanssen" => "alfiehanssen@gmail.com",
|
||||
"Rob Huebner" => "robh@vimeo.com",
|
||||
"Gavin King" => "gavin@vimeo.com",
|
||||
"Kashif Muhammad" => "support@vimeo.com",
|
||||
"Andrew Whitcomb" => "support@vimeo.com",
|
||||
"Stephen Fredieu" => "support@vimeo.com",
|
||||
"Rahul Kumar" => "support@vimeo.com" }
|
||||
|
||||
# s.platform = :ios
|
||||
# s.platform = :ios, "7.0"
|
||||
|
||||
# When using multiple platforms
|
||||
s.ios.deployment_target = "7.0"
|
||||
# s.osx.deployment_target = "10.7"
|
||||
s.social_media_url = "http://twitter.com/vimeoapi"
|
||||
|
||||
s.ios.deployment_target = '7.0'
|
||||
s.tvos.deployment_target = '9.0'
|
||||
|
||||
s.source = { :git => "https://github.com/vimeo/VIMVideoPlayer.git", :tag => s.version.to_s }
|
||||
s.source_files = "VIMVideoPlayer", "VIMVideoPlayer/*.{h,m}"
|
||||
s.exclude_files = "VIMVideoPlayer/Exclude"
|
||||
|
||||
# ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# Link your library with frameworks, or libraries. Libraries do not include
|
||||
# the lib prefix of their name.
|
||||
#
|
||||
|
||||
# s.framework = "SomeFramework"
|
||||
# s.frameworks = "SomeFramework", "AnotherFramework"
|
||||
|
||||
# s.library = "iconv"
|
||||
# s.libraries = "iconv", "xml2"
|
||||
s.source_files = "VIMVideoPlayer-Source/**/*.{h,m}"
|
||||
|
||||
s.requires_arc = true
|
||||
|
||||
end
|
||||
end
|
||||
@@ -1,383 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
50E5070C1B1E23A600DF1F7A /* libVIMVideoPlayer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E507001B1E23A600DF1F7A /* libVIMVideoPlayer.a */; };
|
||||
50E5071E1B1E23E100DF1F7A /* VIMVideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E5071B1B1E23E100DF1F7A /* VIMVideoPlayer.m */; };
|
||||
50E5071F1B1E23E100DF1F7A /* VIMVideoPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E5071D1B1E23E100DF1F7A /* VIMVideoPlayerView.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
50E5070D1B1E23A600DF1F7A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 50E506F81B1E23A600DF1F7A /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 50E506FF1B1E23A600DF1F7A;
|
||||
remoteInfo = VIMVideoPlayer;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
50E506FE1B1E23A600DF1F7A /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "include/$(PRODUCT_NAME)";
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
50E507001B1E23A600DF1F7A /* libVIMVideoPlayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libVIMVideoPlayer.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
50E5070B1B1E23A600DF1F7A /* VIMVideoPlayerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VIMVideoPlayerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
50E507111B1E23A600DF1F7A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
50E5071A1B1E23E100DF1F7A /* VIMVideoPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VIMVideoPlayer.h; sourceTree = "<group>"; };
|
||||
50E5071B1B1E23E100DF1F7A /* VIMVideoPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VIMVideoPlayer.m; sourceTree = "<group>"; };
|
||||
50E5071C1B1E23E100DF1F7A /* VIMVideoPlayerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VIMVideoPlayerView.h; sourceTree = "<group>"; };
|
||||
50E5071D1B1E23E100DF1F7A /* VIMVideoPlayerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VIMVideoPlayerView.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
50E506FD1B1E23A600DF1F7A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
50E507081B1E23A600DF1F7A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
50E5070C1B1E23A600DF1F7A /* libVIMVideoPlayer.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
50E506F71B1E23A600DF1F7A = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
50E507021B1E23A600DF1F7A /* VIMVideoPlayer */,
|
||||
50E5070F1B1E23A600DF1F7A /* VIMVideoPlayerTests */,
|
||||
50E507011B1E23A600DF1F7A /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
50E507011B1E23A600DF1F7A /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
50E507001B1E23A600DF1F7A /* libVIMVideoPlayer.a */,
|
||||
50E5070B1B1E23A600DF1F7A /* VIMVideoPlayerTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
50E507021B1E23A600DF1F7A /* VIMVideoPlayer */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
50E5071A1B1E23E100DF1F7A /* VIMVideoPlayer.h */,
|
||||
50E5071B1B1E23E100DF1F7A /* VIMVideoPlayer.m */,
|
||||
50E5071C1B1E23E100DF1F7A /* VIMVideoPlayerView.h */,
|
||||
50E5071D1B1E23E100DF1F7A /* VIMVideoPlayerView.m */,
|
||||
);
|
||||
path = VIMVideoPlayer;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
50E5070F1B1E23A600DF1F7A /* VIMVideoPlayerTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
50E507101B1E23A600DF1F7A /* Supporting Files */,
|
||||
);
|
||||
path = VIMVideoPlayerTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
50E507101B1E23A600DF1F7A /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
50E507111B1E23A600DF1F7A /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
50E506FF1B1E23A600DF1F7A /* VIMVideoPlayer */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 50E507141B1E23A600DF1F7A /* Build configuration list for PBXNativeTarget "VIMVideoPlayer" */;
|
||||
buildPhases = (
|
||||
50E506FC1B1E23A600DF1F7A /* Sources */,
|
||||
50E506FD1B1E23A600DF1F7A /* Frameworks */,
|
||||
50E506FE1B1E23A600DF1F7A /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = VIMVideoPlayer;
|
||||
productName = VIMVideoPlayer;
|
||||
productReference = 50E507001B1E23A600DF1F7A /* libVIMVideoPlayer.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
50E5070A1B1E23A600DF1F7A /* VIMVideoPlayerTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 50E507171B1E23A600DF1F7A /* Build configuration list for PBXNativeTarget "VIMVideoPlayerTests" */;
|
||||
buildPhases = (
|
||||
50E507071B1E23A600DF1F7A /* Sources */,
|
||||
50E507081B1E23A600DF1F7A /* Frameworks */,
|
||||
50E507091B1E23A600DF1F7A /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
50E5070E1B1E23A600DF1F7A /* PBXTargetDependency */,
|
||||
);
|
||||
name = VIMVideoPlayerTests;
|
||||
productName = VIMVideoPlayerTests;
|
||||
productReference = 50E5070B1B1E23A600DF1F7A /* VIMVideoPlayerTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
50E506F81B1E23A600DF1F7A /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0630;
|
||||
ORGANIZATIONNAME = Vimeo;
|
||||
TargetAttributes = {
|
||||
50E506FF1B1E23A600DF1F7A = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
};
|
||||
50E5070A1B1E23A600DF1F7A = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 50E506FB1B1E23A600DF1F7A /* Build configuration list for PBXProject "VIMVideoPlayer" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 50E506F71B1E23A600DF1F7A;
|
||||
productRefGroup = 50E507011B1E23A600DF1F7A /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
50E506FF1B1E23A600DF1F7A /* VIMVideoPlayer */,
|
||||
50E5070A1B1E23A600DF1F7A /* VIMVideoPlayerTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
50E507091B1E23A600DF1F7A /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
50E506FC1B1E23A600DF1F7A /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
50E5071F1B1E23E100DF1F7A /* VIMVideoPlayerView.m in Sources */,
|
||||
50E5071E1B1E23E100DF1F7A /* VIMVideoPlayer.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
50E507071B1E23A600DF1F7A /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
50E5070E1B1E23A600DF1F7A /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 50E506FF1B1E23A600DF1F7A /* VIMVideoPlayer */;
|
||||
targetProxy = 50E5070D1B1E23A600DF1F7A /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
50E507121B1E23A600DF1F7A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
50E507131B1E23A600DF1F7A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
50E507151B1E23A600DF1F7A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
50E507161B1E23A600DF1F7A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
50E507181B1E23A600DF1F7A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = VIMVideoPlayerTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
50E507191B1E23A600DF1F7A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = VIMVideoPlayerTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
50E506FB1B1E23A600DF1F7A /* Build configuration list for PBXProject "VIMVideoPlayer" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
50E507121B1E23A600DF1F7A /* Debug */,
|
||||
50E507131B1E23A600DF1F7A /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
50E507141B1E23A600DF1F7A /* Build configuration list for PBXNativeTarget "VIMVideoPlayer" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
50E507151B1E23A600DF1F7A /* Debug */,
|
||||
50E507161B1E23A600DF1F7A /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
50E507171B1E23A600DF1F7A /* Build configuration list for PBXNativeTarget "VIMVideoPlayerTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
50E507181B1E23A600DF1F7A /* Debug */,
|
||||
50E507191B1E23A600DF1F7A /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 50E506F81B1E23A600DF1F7A /* Project object */;
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Examples/VimeoPlayer-iOS-Example/VimeoPlayer-iOS-Example.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:VIMVideoPlayer-Framework/VimeoPlayer.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
Reference in New Issue
Block a user