97 Commits

Author SHA1 Message Date
Gavin King 48f3222d28 Upgrading to Swift 2.3 2016-09-27 16:07:20 -04:00
Nicole Lehrer a070f2c785 Merge pull request #64 from vimeo/VIM-4496-airplayBug
VIM-4496: No Playback if Already in Airplay Mode
2016-09-01 22:37:26 -04:00
Nicole Lehrer 0935b0ec55 using default init 2016-08-30 13:55:38 -04:00
Gavin King 747f6bb56f Merge pull request #62 from vimeo/VIM-4419-drm-player-error-ui
VIM-4419: DRM player error UI
2016-08-22 16:38:15 -04:00
Gavin King aea0881949 better error handling 2016-08-16 15:40:55 -04:00
Gavin King df0e6caaaf Merge pull request #60 from vimeo/VIM-4503-session-time
VIM-4503: Session time
2016-08-12 16:00:23 -04:00
Gavin King 3197515537 moving constant 2016-08-11 11:01:53 -04:00
Gavin King 36cecee5bc Merge pull request #59 from vimeo/VIM-3520-airplay-mirror-bug
VIM-3520: Airplay Mirror Bug
2016-08-10 14:19:45 -04:00
Gavin King 3da484c5e2 airplay fix 2016-08-08 11:37:01 -04:00
Gavin King 59b9f3a5fe Merge pull request #53 from vimeo/v6.0.2
Merging v6.0.2 into master
2016-05-03 11:28:30 -04:00
Nicole Lehrer 1e78889bf9 Merge pull request #52 from vimeo/offlinePlaybackCrash
VIM-3864: Offline playback crash
2016-04-20 19:13:38 -04:00
Alfie Hanssen 6d227fb37f Merge pull request #49 from jersonperpetua/workspace_carthage_support
Workspace Carthage support
2016-04-20 15:36:06 -04:00
Nicole Lehrer 3dd7e8a2be revert back to 1f17c3e179 2016-04-16 15:32:03 -04:00
Nicole Lehrer 215670a00d make restart public 2016-04-16 12:35:05 -04:00
Nicole Lehrer 4ef059b790 remove check for isPlaying 2016-04-16 12:30:54 -04:00
Nicole Lehrer 1f17c3e179 check finished flag for success 2016-04-16 12:28:21 -04:00
Jerson Michael Perpetua cb0da4d8e0 Set the minimum target to iOS 8.0 2016-04-06 09:49:14 +08:00
Jerson Michael Perpetua 85ecae532b Add Carthage support by sharing the VimeoPlayer framework target 2016-04-06 09:49:05 +08:00
Alfie Hanssen faa6d70b09 bumped podspec version number, fixed source path 2016-04-01 13:45:30 -04:00
Alfie Hanssen 45117c9c7e Merge pull request #47 from vimeo/v6.0.2
v6.0.2 > Master
2016-04-01 12:31:14 -04:00
Alfie Hanssen 1e2843bda3 Update LICENSE.md 2016-03-31 22:09:30 -04:00
Alfie Hanssen 4e5c677dbe Update LICENSE.md 2016-03-31 22:09:22 -04:00
Alfie Hanssen 5b3d267add Update README.md 2016-03-31 22:01:34 -04:00
Alfie Hanssen 208c5bac56 Update README.md 2016-03-31 21:52:07 -04:00
Alfie Hanssen 46aa54e707 Merge pull request #46 from vimeo/framework
Adds Framework Project to Workspace
2016-03-29 11:32:48 -04:00
Alfie Hanssen 991fa26720 podspec update 2016-03-24 12:54:41 -04:00
Alfie Hanssen a4bb460876 renamed example project 2016-03-24 12:47:30 -04:00
Alfie Hanssen 55bbd0ed41 changed project setup to include framework 2016-03-24 12:10:16 -04:00
Gavin King cc3bce965f Merge pull request #44 from vimeo/nameChange
VIM-2388: Smokescreen -> Vimeo
2016-03-23 11:41:11 -04:00
Gavin King 684adc0531 name change 2016-03-23 11:33:19 -04:00
Gavin King 1adc511044 Merge pull request #43 from vimeo/example
VIM-3653: Example Project
2016-03-21 10:54:18 -04:00
Gavin King d4446bc3db more readme 2016-03-21 10:51:36 -04:00
Gavin King d908925d7e more readme 2016-03-21 10:50:10 -04:00
Gavin King 1c7720f088 readme 2016-03-21 10:48:23 -04:00
Rob Huebner 19b5797eb4 Merge pull request #42 from vimeo/v6.0.1
6.0.1 -> 6.0.2
2016-03-16 11:08:20 -04:00
Gavin King 4e10d0cece Merge pull request #41 from vimeo/v6.0.1
Merging v6.0.1 into master
2016-03-15 19:26:09 -04:00
Gavin King 0ead324b5c Merge branch 'master' into v6.0.1
# Conflicts:
#	VIMVideoPlayer.podspec
2016-03-15 19:25:59 -04:00
Gavin King 9c34e65a66 new video 2016-03-10 15:24:24 -05:00
Gavin King bb3277d25e naming 2016-03-10 12:34:06 -05:00
Gavin King 7ef2d71f3e adding workspace 2016-03-10 12:18:05 -05:00
Gavin King 0d031c0eb2 adding example 2016-03-10 12:13:37 -05:00
Rob Huebner 66d629f0e1 update podspec 2016-03-08 14:23:06 -05:00
Rob Huebner e21527c1e8 Merge pull request #38 from vimeo/tvos
Adding tvOS platform
2016-03-07 17:39:05 -05:00
Rob Huebner 9496df53a1 adding tvos platform 2016-03-01 11:16:57 -05:00
Gavin King c25d1cd49e Merge pull request #37 from vimeo/playerReset
Refactoring
2016-02-25 11:35:14 -05:00
Gavin King a979a07652 changes 2016-02-25 10:15:01 -05:00
Gavin King eb6dbdf5a5 fixing the file swap bug 2016-02-24 21:36:08 -05:00
Kevin Zetterstrom 3ecf8458cf Merge pull request #36 from vimeo/github_templates
adding github PR and issue templates
2016-02-19 11:05:59 -05:00
Kevin Zetterstrom 7a74c1e67d add required for Vimeans only 2016-02-19 11:04:15 -05:00
Kevin Zetterstrom e9a64fb531 adding github PR and issue templates 2016-02-19 09:40:58 -05:00
Alfie Hanssen eaf4f4b492 Merge pull request #35 from vimeo/readme-updates
Added information on Vimeo video playback to the README
2016-02-15 16:57:19 -05:00
Alfie Hanssen d42db154ca tweaks 2016-02-13 14:56:02 -05:00
Alfie Hanssen f09240d4d0 tweaks 2016-02-13 14:54:44 -05:00
Alfie Hanssen 91f68ff891 tweaks 2016-02-13 14:51:35 -05:00
Alfie Hanssen 25ee3e009a added information on vimeo video playback to the readme 2016-02-13 14:49:05 -05:00
Alfie Hanssen cc979b602c Update README.md 2016-02-04 15:08:00 -05:00
Rob Huebner a9fee87379 Merge pull request #32 from jersonperpetua/minimum_deployment_target_iOS_8.0
Reduce the minimum deployment target to iOS 8.0
2016-02-03 11:32:32 -05:00
Rob Huebner 15d08fe2b4 Merge pull request #33 from vimeo/playback-likely-to-keep-up
Adding appropriate playback likely to keep up callbacks
2016-01-29 10:54:03 -05:00
Rob Huebner 37e471cf04 adding comment 2016-01-29 10:53:20 -05:00
Rob Huebner e296e11ba6 adding appropriate playback likely to keep up callbacks 2016-01-28 17:50:38 -05:00
Jerson Michael Perpetua cbab5b4c7b Reduce the minimum deployment target to iOS 8.0 2016-01-27 16:06:36 +08:00
Rob Huebner c00367896d Merge pull request #30 from dtweston/carthage_support
Add a framework target for Carthage support
2016-01-06 13:54:36 -05:00
Dave Weston 0e68ced41a Add a framework target for Carthage support 2015-12-19 22:04:04 -05:00
Rob Huebner 8162c1cb3b Merge pull request #25 from vimeo/player-6.0
delegate callback for playback buffer empty
2015-11-25 12:58:23 -05:00
Alfie Hanssen ce399a8e98 Merge pull request #23 from edenvicary/patch-1
Fix broken contact link
2015-11-17 08:45:32 -05:00
Rob Huebner 932d66e6ba delegate callback for playback buffer empty 2015-11-16 15:24:18 -05:00
Eden Vicary de01806e8a Fix broken contact link 2015-11-16 18:31:06 +10:00
Alfie Hanssen d799cbb15b Merge pull request #20 from vimeo/pods
Deleted some comments from podspec
2015-10-08 13:30:43 -04:00
Alfie Hanssen 35e0d78004 deleted some comments from podspec 2015-10-06 13:58:30 -04:00
Alfie Hanssen 58ff13c70b updated pod version number 2015-09-17 22:08:50 -04:00
Alfie Hanssen d6c5ab0629 resolved xcode warning 2015-09-17 22:05:36 -04:00
Alfie Hanssen ea5b11e13c updated pod version number 2015-09-17 22:03:15 -04:00
Alfie Hanssen 6ac137f9ff Merge pull request #18 from vimeo/tests
Unit Test Setup
2015-09-14 16:31:38 -04:00
Alfie Hanssen 5e197fd1c5 Update README.md 2015-09-14 11:56:50 -04:00
Alfie Hanssen 0d91f5a054 added untracked files 2015-09-10 14:52:11 -04:00
Alfie Hanssen 09f58850e8 added test target, set it up to run tests on build 2015-09-10 14:42:34 -04:00
Alfie Hanssen 088d368709 bumped version in podspec 2015-08-27 13:51:20 -04:00
Alfie Hanssen 4508acf2ed Merge pull request #17 from vimeo/vim-2669
VIM-2669
2015-08-26 17:20:16 -04:00
Alfie Hanssen 7ae3643508 added an assertion 2015-08-26 17:18:18 -04:00
Alfie Hanssen d6047dc471 Merge pull request #16 from vimeo/pod-authors
update podspec authors
2015-08-26 16:56:14 -04:00
Alfie Hanssen 3724c3000c changing property name for playerItem 2015-08-26 16:39:36 -04:00
Alfie Hanssen 38f28c9e3a potential fix for KVO crash related to not removing observers from currentItem before deallocation of item 2015-08-26 16:27:04 -04:00
Rob Huebner 5b3134f094 add some more authors 2015-08-20 11:37:06 -04:00
Rob Huebner 85efea0363 update podspec authors 2015-08-19 12:21:42 -04:00
Alfie Hanssen dd8b5b9dc6 updated podspec 2015-08-14 17:33:42 -04:00
Alfie Hanssen 5775bbc2af Merge pull request #15 from vimeo/vim-2661
Fix for crash where av player status == failed but there's no nserror
2015-08-13 11:56:38 -04:00
Alfie Hanssen 0a9707d68f fix for crash where av player status == failed but theres no nserror 2015-08-10 14:22:49 -04:00
Rob Huebner c1c2f93793 updated podspec 2015-07-31 17:27:47 -04:00
Gavin King 3454df7198 formatting 2015-07-29 14:27:39 -04:00
Gavin King 5545e1bc43 Merge pull request #14 from efremidze/master
Added initializers (storyboard support)
2015-07-29 14:04:57 -04:00
Lasha Efremidze 367b516abd Update VIMVideoPlayerView.m
Added required initializers
2015-07-18 22:08:37 -07:00
Alfie Hanssen de0957a62b syntax error in podspec 2015-07-15 08:42:49 -04:00
Alfie Hanssen 9ce6b9092c updated podspec version 2015-07-15 08:40:28 -04:00
Alfie Hanssen 7e32ee3482 Update README.md 2015-06-08 09:14:35 -07:00
Alfie Hanssen 0d188c8228 Update README.md 2015-06-02 16:03:10 -04:00
Alfie Hanssen 840d01e1b0 pod version 2015-06-02 15:17:12 -04:00
Alfie Hanssen 5c39ae71a7 podspec pointed at tag 2015-06-02 15:13:58 -04:00
32 changed files with 1947 additions and 586 deletions
+11
View File
@@ -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?
+12
View File
@@ -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
View File
@@ -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,546 @@
// !$*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;
DevelopmentTeam = 35R365FS4Q;
LastSwiftMigration = 0800;
};
AF8720401CA44FBD004C752C = {
CreatedOnToolsVersion = 7.2;
DevelopmentTeam = 35R365FS4Q;
LastSwiftMigration = 0800;
TestTargetID = AF87202C1CA44FBD004C752C;
};
AF87204B1CA44FBD004C752C = {
CreatedOnToolsVersion = 7.2;
DevelopmentTeam = 35R365FS4Q;
LastSwiftMigration = 0800;
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;
DEVELOPMENT_TEAM = 35R365FS4Q;
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";
DEVELOPMENT_TEAM = 35R365FS4Q;
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;
DEVELOPMENT_TEAM = 35R365FS4Q;
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";
SWIFT_VERSION = 2.3;
};
name = Debug;
};
AF8720571CA44FBD004C752C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
DEVELOPMENT_TEAM = 35R365FS4Q;
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";
SWIFT_VERSION = 2.3;
};
name = Release;
};
AF8720591CA44FBD004C752C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
DEVELOPMENT_TEAM = 35R365FS4Q;
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)";
SWIFT_VERSION = 2.3;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VimeoPlayer-iOS-Example.app/VimeoPlayer-iOS-Example";
};
name = Debug;
};
AF87205A1CA44FBD004C752C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
DEVELOPMENT_TEAM = 35R365FS4Q;
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)";
SWIFT_VERSION = 2.3;
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)";
SWIFT_VERSION = 2.3;
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)";
SWIFT_VERSION = 2.3;
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;
defaultConfigurationName = Release;
};
AF8720581CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-ExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
AF8720591CA44FBD004C752C /* Debug */,
AF87205A1CA44FBD004C752C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
AF87205B1CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-ExampleUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
AF87205C1CA44FBD004C752C /* Debug */,
AF87205D1CA44FBD004C752C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* 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:.
}
}
@@ -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"
}
}
@@ -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
}
}
@@ -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>
@@ -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>
@@ -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 its 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
View File
@@ -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
+80 -45
View File
@@ -1,91 +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.
`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 this repo as a git submodule or by using cocoapods:
```Ruby
# Add this to your podfile
target 'MyTarget' do
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,416 @@
// !$*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;
DevelopmentTeam = 35R365FS4Q;
};
AF8720071CA447E5004C752C = {
CreatedOnToolsVersion = 7.2;
DevelopmentTeam = 35R365FS4Q;
};
};
};
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 = {
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 35R365FS4Q;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = VimeoPlayer/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
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;
DEVELOPMENT_TEAM = 35R365FS4Q;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = VimeoPlayer/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
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 = {
DEVELOPMENT_TEAM = 35R365FS4Q;
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 = {
DEVELOPMENT_TEAM = 35R365FS4Q;
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,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0730"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AF871FFD1CA447E5004C752C"
BuildableName = "VimeoPlayer.framework"
BlueprintName = "VimeoPlayer"
ReferencedContainer = "container:VimeoPlayer.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AF8720071CA447E5004C752C"
BuildableName = "VimeoPlayerTests.xctest"
BlueprintName = "VimeoPlayerTests"
ReferencedContainer = "container:VimeoPlayer.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AF871FFD1CA447E5004C752C"
BuildableName = "VimeoPlayer.framework"
BlueprintName = "VimeoPlayer"
ReferencedContainer = "container:VimeoPlayer.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AF871FFD1CA447E5004C752C"
BuildableName = "VimeoPlayer.framework"
BlueprintName = "VimeoPlayer"
ReferencedContainer = "container:VimeoPlayer.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AF871FFD1CA447E5004C752C"
BuildableName = "VimeoPlayer.framework"
BlueprintName = "VimeoPlayer"
ReferencedContainer = "container:VimeoPlayer.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -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,12 +24,13 @@
// THE SOFTWARE.
//
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@import Foundation;
@import AVFoundation;
@class AVPlayer;
@class VIMVideoPlayer;
static const float TimeUpdateInterval = 0.1f;
@protocol VIMVideoPlayerDelegate <NSObject>
@optional
@@ -37,6 +38,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)
@@ -28,7 +28,6 @@
static const float DefaultPlayableBufferLength = 2.0f;
static const float DefaultVolumeFadeDuration = 1.0f;
static const float TimeObserverInterval = 0.01f;
NSString * const kVideoPlayerErrorDomain = @"kVideoPlayerErrorDomain";
@@ -55,6 +54,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 +69,6 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
[self removeTimeObserver];
[self cancelFadeVolume];
NSLog(@"dealloc");
}
- (instancetype)init
@@ -94,9 +93,16 @@ 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.player.usesExternalPlaybackWhileExternalScreenIsActive = YES;
[self setVolume:1.0f];
[self enableTimeUpdates];
[self enableAirplay];
}
- (void)setupAudioSession
@@ -159,7 +165,8 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
[self resetPlayerItemIfNecessary];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset automaticallyLoadedAssetKeys:@[NSStringFromSelector(@selector(tracks))]];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset: asset];
if (!playerItem)
{
[self reportUnableToCreatePlayerItem];
@@ -407,11 +414,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 +433,10 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
- (void)preparePlayerItem:(AVPlayerItem *)playerItem
{
NSParameterAssert(playerItem);
self.item = playerItem;
[self addPlayerItemObservers:playerItem];
[self.player replaceCurrentItemWithPlayerItem:playerItem];
@@ -433,13 +446,16 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
{
[self.player seekToTime:kCMTimeZero toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:^(BOOL finished) {
_isAtEndTime = NO;
if (self.isPlaying)
if (finished)
{
[self play];
_isAtEndTime = NO;
if (self.isPlaying)
{
[self play];
}
}
}];
}
@@ -628,7 +644,7 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
}
__weak typeof (self) weakSelf = self;
self.timeObserverToken = [self.player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(TimeObserverInterval, NSEC_PER_SEC) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
self.timeObserverToken = [self.player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(TimeUpdateInterval, NSEC_PER_SEC) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
__strong typeof (self) strongSelf = weakSelf;
if (!strongSelf)
@@ -702,14 +718,42 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
}
case AVPlayerItemStatusFailed:
{
NSLog(@"Video player Status Failed: error = %@", self.player.currentItem.error);
NSLog(@"Video player Status Failed: player item error = %@", self.player.currentItem.error);
NSLog(@"Video player Status Failed: player error = %@", self.player.error);
// First, try to use the player error if it exists
NSError *error = self.player.error;
// Otherwise try to use the current item's error
if (!error)
{
error = self.player.currentItem.error;
}
// If there's a more specific underlyng error, use that
NSError *underlyingError = [error.userInfo objectForKey:NSUnderlyingErrorKey];
if (underlyingError)
{
error = underlyingError;
}
// Finally, construct our own as a last resort
if (!error)
{
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(), ^{
[self.delegate videoPlayer:self didFailWithError:self.player.currentItem.error];
[self.delegate videoPlayer:self didFailWithError:error];
});
}
@@ -717,6 +761,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)
{
@@ -724,7 +780,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
@@ -40,21 +38,37 @@
[self detachPlayer];
}
- (instancetype)init
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super init];
self = [super initWithFrame:frame];
if (self)
{
_player = [[VIMVideoPlayer alloc] init];
_player.muted = YES;
_player.looping = YES;
[self attachPlayer];
[self commonInit];
}
return self;
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[self commonInit];
}
return self;
}
- (void)commonInit
{
VIMVideoPlayer *player = [[VIMVideoPlayer alloc] init];
[self setPlayer:player];
}
#pragma mark - Public API
- (void)setPlayer:(VIMVideoPlayer *)player
@@ -63,7 +77,7 @@
{
return;
}
[self detachPlayer];
_player = player;
@@ -138,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:)])
+14 -105
View File
@@ -8,124 +8,33 @@
Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# These will help people to find your library, and whilst it
# can feel like a chore to fill in it's definitely to your advantage. The
# summary should be tweet-length, and the description more in depth.
#
s.name = "VIMVideoPlayer"
s.version = "0.0.1"
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.
DESC
s.homepage = "https://github.com/vimeo/VIMVideoPlayer"
# s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
# ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# Licensing your code is important. See http://choosealicense.com for more info.
# CocoaPods will detect a license file if there is a named LICENSE*
# Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'.
#
s.license = "MIT"
s.license = { :type => "MIT", :file => "LICENSE.md" }
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" }
# ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# Specify the authors of the library, with email addresses. Email addresses
# of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also
# accepts just a name if you'd rather not provide an email address.
#
# Specify a social_media_url where others can refer to, for example a twitter
# profile URL.
#
s.social_media_url = "http://twitter.com/vimeoapi"
s.author = { "Alfie Hanssen" => "alfiehanssen@gmail.com" }
# Or just: s.author = "Alfie Hanssen"
# s.authors = { "Alfie Hanssen" => "alfiehanssen@gmail.com" }
# s.social_media_url = "http://twitter.com/vimeo
s.ios.deployment_target = '7.0'
s.tvos.deployment_target = '9.0'
# ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# If this Pod runs only on iOS or OS X, then specify the platform and
# the deployment target. You can optionally include the target after the platform.
#
# s.platform = :ios
# s.platform = :ios, "7.0"
# When using multiple platforms
s.ios.deployment_target = "7.0"
# s.osx.deployment_target = "10.7"
# ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# Specify the location from where the source should be retrieved.
# Supports git, hg, bzr, svn and HTTP.
#
s.source = { :git => "https://github.com/vimeo/VIMVideoPlayer.git", :branch => "cocoapods" }
# ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# CocoaPods is smart about how it includes source code. For source files
# giving a folder will include any swift, h, m, mm, c & cpp files.
# For header files it will include any header in the folder.
# Not including the public_header_files will make all headers public.
#
s.source_files = "VIMVideoPlayer", "VIMVideoPlayer/*.{h,m}"
s.exclude_files = "VIMVideoPlayer/Exclude"
# s.public_header_files = "Classes/**/*.h"
# ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# A list of resources included with the Pod. These are copied into the
# target bundle with a build phase script. Anything else will be cleaned.
# You can preserve files from being cleaned, please don't preserve
# non-essential files like tests, examples and documentation.
#
# s.resource = "icon.png"
# s.resources = "Resources/*.png"
# s.preserve_paths = "FilesToSave", "MoreFilesToSave"
# ――― 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"
# ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# If your library depends on compiler flags you can set them in the xcconfig hash
# where they will only apply to your library. If you depend on other Podspecs
# you can include multiple dependencies to ensure it works.
s.source = { :git => "https://github.com/vimeo/VIMVideoPlayer.git", :tag => s.version.to_s }
s.source_files = "VIMVideoPlayer-Source/**/*.{h,m}"
s.requires_arc = true
# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
# s.dependency "AFNetworking", "~> 2.5.3"
end
end
-383
View File
@@ -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
View File
@@ -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>